UNPKG

16.7 kBTypeScriptView Raw
1/**
2 * The `os` module provides operating system-related utility methods and
3 * properties. It can be accessed using:
4 *
5 * ```js
6 * const os = require('os');
7 * ```
8 * @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/os.js)
9 */
10declare module 'os' {
11 interface CpuInfo {
12 model: string;
13 speed: number;
14 times: {
15 user: number;
16 nice: number;
17 sys: number;
18 idle: number;
19 irq: number;
20 };
21 }
22 interface NetworkInterfaceBase {
23 address: string;
24 netmask: string;
25 mac: string;
26 internal: boolean;
27 cidr: string | null;
28 }
29 interface NetworkInterfaceInfoIPv4 extends NetworkInterfaceBase {
30 family: 'IPv4';
31 }
32 interface NetworkInterfaceInfoIPv6 extends NetworkInterfaceBase {
33 family: 'IPv6';
34 scopeid: number;
35 }
36 interface UserInfo<T> {
37 username: T;
38 uid: number;
39 gid: number;
40 shell: T;
41 homedir: T;
42 }
43 type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6;
44 /**
45 * Returns the host name of the operating system as a string.
46 * @since v0.3.3
47 */
48 function hostname(): string;
49 /**
50 * Returns an array containing the 1, 5, and 15 minute load averages.
51 *
52 * The load average is a measure of system activity calculated by the operating
53 * system and expressed as a fractional number.
54 *
55 * The load average is a Unix-specific concept. On Windows, the return value is
56 * always `[0, 0, 0]`.
57 * @since v0.3.3
58 */
59 function loadavg(): number[];
60 /**
61 * Returns the system uptime in number of seconds.
62 * @since v0.3.3
63 */
64 function uptime(): number;
65 /**
66 * Returns the amount of free system memory in bytes as an integer.
67 * @since v0.3.3
68 */
69 function freemem(): number;
70 /**
71 * Returns the total amount of system memory in bytes as an integer.
72 * @since v0.3.3
73 */
74 function totalmem(): number;
75 /**
76 * Returns an array of objects containing information about each logical CPU core.
77 *
78 * The properties included on each object include:
79 *
80 * ```js
81 * [
82 * {
83 * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
84 * speed: 2926,
85 * times: {
86 * user: 252020,
87 * nice: 0,
88 * sys: 30340,
89 * idle: 1070356870,
90 * irq: 0
91 * }
92 * },
93 * {
94 * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
95 * speed: 2926,
96 * times: {
97 * user: 306960,
98 * nice: 0,
99 * sys: 26980,
100 * idle: 1071569080,
101 * irq: 0
102 * }
103 * },
104 * {
105 * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
106 * speed: 2926,
107 * times: {
108 * user: 248450,
109 * nice: 0,
110 * sys: 21750,
111 * idle: 1070919370,
112 * irq: 0
113 * }
114 * },
115 * {
116 * model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
117 * speed: 2926,
118 * times: {
119 * user: 256880,
120 * nice: 0,
121 * sys: 19430,
122 * idle: 1070905480,
123 * irq: 20
124 * }
125 * },
126 * ]
127 * ```
128 *
129 * `nice` values are POSIX-only. On Windows, the `nice` values of all processors
130 * are always 0.
131 * @since v0.3.3
132 */
133 function cpus(): CpuInfo[];
134 /**
135 * Returns the operating system name as returned by [`uname(3)`](https://linux.die.net/man/3/uname). For example, it
136 * returns `'Linux'` on Linux, `'Darwin'` on macOS, and `'Windows_NT'` on Windows.
137 *
138 * See [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for additional information
139 * about the output of running [`uname(3)`](https://linux.die.net/man/3/uname) on various operating systems.
140 * @since v0.3.3
141 */
142 function type(): string;
143 /**
144 * Returns the operating system as a string.
145 *
146 * On POSIX systems, the operating system release is determined by calling [`uname(3)`](https://linux.die.net/man/3/uname). On Windows, `GetVersionExW()` is used. See
147 * [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for more information.
148 * @since v0.3.3
149 */
150 function release(): string;
151 /**
152 * Returns an object containing network interfaces that have been assigned a
153 * network address.
154 *
155 * Each key on the returned object identifies a network interface. The associated
156 * value is an array of objects that each describe an assigned network address.
157 *
158 * The properties available on the assigned network address object include:
159 *
160 * ```js
161 * {
162 * lo: [
163 * {
164 * address: '127.0.0.1',
165 * netmask: '255.0.0.0',
166 * family: 'IPv4',
167 * mac: '00:00:00:00:00:00',
168 * internal: true,
169 * cidr: '127.0.0.1/8'
170 * },
171 * {
172 * address: '::1',
173 * netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
174 * family: 'IPv6',
175 * mac: '00:00:00:00:00:00',
176 * scopeid: 0,
177 * internal: true,
178 * cidr: '::1/128'
179 * }
180 * ],
181 * eth0: [
182 * {
183 * address: '192.168.1.108',
184 * netmask: '255.255.255.0',
185 * family: 'IPv4',
186 * mac: '01:02:03:0a:0b:0c',
187 * internal: false,
188 * cidr: '192.168.1.108/24'
189 * },
190 * {
191 * address: 'fe80::a00:27ff:fe4e:66a1',
192 * netmask: 'ffff:ffff:ffff:ffff::',
193 * family: 'IPv6',
194 * mac: '01:02:03:0a:0b:0c',
195 * scopeid: 1,
196 * internal: false,
197 * cidr: 'fe80::a00:27ff:fe4e:66a1/64'
198 * }
199 * ]
200 * }
201 * ```
202 * @since v0.6.0
203 */
204 function networkInterfaces(): NodeJS.Dict<NetworkInterfaceInfo[]>;
205 /**
206 * Returns the string path of the current user's home directory.
207 *
208 * On POSIX, it uses the `$HOME` environment variable if defined. Otherwise it
209 * uses the [effective UID](https://en.wikipedia.org/wiki/User_identifier#Effective_user_ID) to look up the user's home directory.
210 *
211 * On Windows, it uses the `USERPROFILE` environment variable if defined.
212 * Otherwise it uses the path to the profile directory of the current user.
213 * @since v2.3.0
214 */
215 function homedir(): string;
216 /**
217 * Returns information about the currently effective user. On POSIX platforms,
218 * this is typically a subset of the password file. The returned object includes
219 * the `username`, `uid`, `gid`, `shell`, and `homedir`. On Windows, the `uid` and`gid` fields are `-1`, and `shell` is `null`.
220 *
221 * The value of `homedir` returned by `os.userInfo()` is provided by the operating
222 * system. This differs from the result of `os.homedir()`, which queries
223 * environment variables for the home directory before falling back to the
224 * operating system response.
225 *
226 * Throws a `SystemError` if a user has no `username` or `homedir`.
227 * @since v6.0.0
228 */
229 function userInfo(options: { encoding: 'buffer' }): UserInfo<Buffer>;
230 function userInfo(options?: { encoding: BufferEncoding }): UserInfo<string>;
231 type SignalConstants = {
232 [key in NodeJS.Signals]: number;
233 };
234 namespace constants {
235 const UV_UDP_REUSEADDR: number;
236 namespace signals {}
237 const signals: SignalConstants;
238 namespace errno {
239 const E2BIG: number;
240 const EACCES: number;
241 const EADDRINUSE: number;
242 const EADDRNOTAVAIL: number;
243 const EAFNOSUPPORT: number;
244 const EAGAIN: number;
245 const EALREADY: number;
246 const EBADF: number;
247 const EBADMSG: number;
248 const EBUSY: number;
249 const ECANCELED: number;
250 const ECHILD: number;
251 const ECONNABORTED: number;
252 const ECONNREFUSED: number;
253 const ECONNRESET: number;
254 const EDEADLK: number;
255 const EDESTADDRREQ: number;
256 const EDOM: number;
257 const EDQUOT: number;
258 const EEXIST: number;
259 const EFAULT: number;
260 const EFBIG: number;
261 const EHOSTUNREACH: number;
262 const EIDRM: number;
263 const EILSEQ: number;
264 const EINPROGRESS: number;
265 const EINTR: number;
266 const EINVAL: number;
267 const EIO: number;
268 const EISCONN: number;
269 const EISDIR: number;
270 const ELOOP: number;
271 const EMFILE: number;
272 const EMLINK: number;
273 const EMSGSIZE: number;
274 const EMULTIHOP: number;
275 const ENAMETOOLONG: number;
276 const ENETDOWN: number;
277 const ENETRESET: number;
278 const ENETUNREACH: number;
279 const ENFILE: number;
280 const ENOBUFS: number;
281 const ENODATA: number;
282 const ENODEV: number;
283 const ENOENT: number;
284 const ENOEXEC: number;
285 const ENOLCK: number;
286 const ENOLINK: number;
287 const ENOMEM: number;
288 const ENOMSG: number;
289 const ENOPROTOOPT: number;
290 const ENOSPC: number;
291 const ENOSR: number;
292 const ENOSTR: number;
293 const ENOSYS: number;
294 const ENOTCONN: number;
295 const ENOTDIR: number;
296 const ENOTEMPTY: number;
297 const ENOTSOCK: number;
298 const ENOTSUP: number;
299 const ENOTTY: number;
300 const ENXIO: number;
301 const EOPNOTSUPP: number;
302 const EOVERFLOW: number;
303 const EPERM: number;
304 const EPIPE: number;
305 const EPROTO: number;
306 const EPROTONOSUPPORT: number;
307 const EPROTOTYPE: number;
308 const ERANGE: number;
309 const EROFS: number;
310 const ESPIPE: number;
311 const ESRCH: number;
312 const ESTALE: number;
313 const ETIME: number;
314 const ETIMEDOUT: number;
315 const ETXTBSY: number;
316 const EWOULDBLOCK: number;
317 const EXDEV: number;
318 const WSAEINTR: number;
319 const WSAEBADF: number;
320 const WSAEACCES: number;
321 const WSAEFAULT: number;
322 const WSAEINVAL: number;
323 const WSAEMFILE: number;
324 const WSAEWOULDBLOCK: number;
325 const WSAEINPROGRESS: number;
326 const WSAEALREADY: number;
327 const WSAENOTSOCK: number;
328 const WSAEDESTADDRREQ: number;
329 const WSAEMSGSIZE: number;
330 const WSAEPROTOTYPE: number;
331 const WSAENOPROTOOPT: number;
332 const WSAEPROTONOSUPPORT: number;
333 const WSAESOCKTNOSUPPORT: number;
334 const WSAEOPNOTSUPP: number;
335 const WSAEPFNOSUPPORT: number;
336 const WSAEAFNOSUPPORT: number;
337 const WSAEADDRINUSE: number;
338 const WSAEADDRNOTAVAIL: number;
339 const WSAENETDOWN: number;
340 const WSAENETUNREACH: number;
341 const WSAENETRESET: number;
342 const WSAECONNABORTED: number;
343 const WSAECONNRESET: number;
344 const WSAENOBUFS: number;
345 const WSAEISCONN: number;
346 const WSAENOTCONN: number;
347 const WSAESHUTDOWN: number;
348 const WSAETOOMANYREFS: number;
349 const WSAETIMEDOUT: number;
350 const WSAECONNREFUSED: number;
351 const WSAELOOP: number;
352 const WSAENAMETOOLONG: number;
353 const WSAEHOSTDOWN: number;
354 const WSAEHOSTUNREACH: number;
355 const WSAENOTEMPTY: number;
356 const WSAEPROCLIM: number;
357 const WSAEUSERS: number;
358 const WSAEDQUOT: number;
359 const WSAESTALE: number;
360 const WSAEREMOTE: number;
361 const WSASYSNOTREADY: number;
362 const WSAVERNOTSUPPORTED: number;
363 const WSANOTINITIALISED: number;
364 const WSAEDISCON: number;
365 const WSAENOMORE: number;
366 const WSAECANCELLED: number;
367 const WSAEINVALIDPROCTABLE: number;
368 const WSAEINVALIDPROVIDER: number;
369 const WSAEPROVIDERFAILEDINIT: number;
370 const WSASYSCALLFAILURE: number;
371 const WSASERVICE_NOT_FOUND: number;
372 const WSATYPE_NOT_FOUND: number;
373 const WSA_E_NO_MORE: number;
374 const WSA_E_CANCELLED: number;
375 const WSAEREFUSED: number;
376 }
377 namespace priority {
378 const PRIORITY_LOW: number;
379 const PRIORITY_BELOW_NORMAL: number;
380 const PRIORITY_NORMAL: number;
381 const PRIORITY_ABOVE_NORMAL: number;
382 const PRIORITY_HIGH: number;
383 const PRIORITY_HIGHEST: number;
384 }
385 }
386 const devNull: string;
387 const EOL: string;
388 /**
389 * Returns the operating system CPU architecture for which the Node.js binary was
390 * compiled. Possible values are `'arm'`, `'arm64'`, `'ia32'`, `'mips'`,`'mipsel'`, `'ppc'`, `'ppc64'`, `'s390'`, `'s390x'`, `'x32'`, and `'x64'`.
391 *
392 * The return value is equivalent to `process.arch`.
393 * @since v0.5.0
394 */
395 function arch(): string;
396 /**
397 * Returns a string identifying the kernel version.
398 *
399 * On POSIX systems, the operating system release is determined by calling [`uname(3)`](https://linux.die.net/man/3/uname). On Windows, `RtlGetVersion()` is used, and if it is not
400 * available, `GetVersionExW()` will be used. See [https://en.wikipedia.org/wiki/Uname#Examples](https://en.wikipedia.org/wiki/Uname#Examples) for more information.
401 * @since v13.11.0, v12.17.0
402 */
403 function version(): string;
404 /**
405 * Returns a string identifying the operating system platform. The value is set
406 * at compile time. Possible values are `'aix'`, `'darwin'`, `'freebsd'`,`'linux'`, `'openbsd'`, `'sunos'`, and `'win32'`.
407 *
408 * The return value is equivalent to `process.platform`.
409 *
410 * The value `'android'` may also be returned if Node.js is built on the Android
411 * operating system. [Android support is experimental](https://github.com/nodejs/node/blob/HEAD/BUILDING.md#androidandroid-based-devices-eg-firefox-os).
412 * @since v0.5.0
413 */
414 function platform(): NodeJS.Platform;
415 /**
416 * Returns the operating system's default directory for temporary files as a
417 * string.
418 * @since v0.9.9
419 */
420 function tmpdir(): string;
421 /**
422 * Returns a string identifying the endianness of the CPU for which the Node.js
423 * binary was compiled.
424 *
425 * Possible values are `'BE'` for big endian and `'LE'` for little endian.
426 * @since v0.9.4
427 */
428 function endianness(): 'BE' | 'LE';
429 /**
430 * Returns the scheduling priority for the process specified by `pid`. If `pid` is
431 * not provided or is `0`, the priority of the current process is returned.
432 * @since v10.10.0
433 * @param [pid=0] The process ID to retrieve scheduling priority for.
434 */
435 function getPriority(pid?: number): number;
436 /**
437 * Attempts to set the scheduling priority for the process specified by `pid`. If`pid` is not provided or is `0`, the process ID of the current process is used.
438 *
439 * The `priority` input must be an integer between `-20` (high priority) and `19`(low priority). Due to differences between Unix priority levels and Windows
440 * priority classes, `priority` is mapped to one of six priority constants in`os.constants.priority`. When retrieving a process priority level, this range
441 * mapping may cause the return value to be slightly different on Windows. To avoid
442 * confusion, set `priority` to one of the priority constants.
443 *
444 * On Windows, setting priority to `PRIORITY_HIGHEST` requires elevated user
445 * privileges. Otherwise the set priority will be silently reduced to`PRIORITY_HIGH`.
446 * @since v10.10.0
447 * @param [pid=0] The process ID to set scheduling priority for.
448 * @param priority The scheduling priority to assign to the process.
449 */
450 function setPriority(priority: number): void;
451 function setPriority(pid: number, priority: number): void;
452}
453declare module 'node:os' {
454 export * from 'os';
455}