0f46ccd4ab794eec2f9b7137e78af5e00f34dd5ad2b9779f0922f7de838ec5f71374dfde6e4e7c79908c22db08e448276ca60c6f69db47909ab887ad776c58 19 KB

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