UNPKG

22.5 kBTypeScriptView Raw
1declare module 'process' {
2 import * as tty from 'tty';
3 import { Worker } from 'worker_threads';
4
5 global {
6 var process: NodeJS.Process;
7
8 namespace NodeJS {
9 // this namespace merge is here because these are specifically used
10 // as the type for process.stdin, process.stdout, and process.stderr.
11 // they can't live in tty.d.ts because we need to disambiguate the imported name.
12 interface ReadStream extends tty.ReadStream {}
13 interface WriteStream extends tty.WriteStream {}
14
15 interface MemoryUsageFn {
16 /**
17 * The `process.memoryUsage()` method iterate over each page to gather informations about memory
18 * usage which can be slow depending on the program memory allocations.
19 */
20 (): MemoryUsage;
21 /**
22 * method returns an integer representing the Resident Set Size (RSS) in bytes.
23 */
24 rss(): number;
25 }
26
27 interface MemoryUsage {
28 rss: number;
29 heapTotal: number;
30 heapUsed: number;
31 external: number;
32 arrayBuffers: number;
33 }
34
35 interface CpuUsage {
36 user: number;
37 system: number;
38 }
39
40 interface ProcessRelease {
41 name: string;
42 sourceUrl?: string | undefined;
43 headersUrl?: string | undefined;
44 libUrl?: string | undefined;
45 lts?: string | undefined;
46 }
47
48 interface ProcessVersions extends Dict<string> {
49 http_parser: string;
50 node: string;
51 v8: string;
52 ares: string;
53 uv: string;
54 zlib: string;
55 modules: string;
56 openssl: string;
57 }
58
59 type Platform = 'aix'
60 | 'android'
61 | 'darwin'
62 | 'freebsd'
63 | 'haiku'
64 | 'linux'
65 | 'openbsd'
66 | 'sunos'
67 | 'win32'
68 | 'cygwin'
69 | 'netbsd';
70
71 type Signals =
72 "SIGABRT" | "SIGALRM" | "SIGBUS" | "SIGCHLD" | "SIGCONT" | "SIGFPE" | "SIGHUP" | "SIGILL" | "SIGINT" | "SIGIO" |
73 "SIGIOT" | "SIGKILL" | "SIGPIPE" | "SIGPOLL" | "SIGPROF" | "SIGPWR" | "SIGQUIT" | "SIGSEGV" | "SIGSTKFLT" |
74 "SIGSTOP" | "SIGSYS" | "SIGTERM" | "SIGTRAP" | "SIGTSTP" | "SIGTTIN" | "SIGTTOU" | "SIGUNUSED" | "SIGURG" |
75 "SIGUSR1" | "SIGUSR2" | "SIGVTALRM" | "SIGWINCH" | "SIGXCPU" | "SIGXFSZ" | "SIGBREAK" | "SIGLOST" | "SIGINFO";
76
77 type MultipleResolveType = 'resolve' | 'reject';
78
79 type BeforeExitListener = (code: number) => void;
80 type DisconnectListener = () => void;
81 type ExitListener = (code: number) => void;
82 type RejectionHandledListener = (promise: Promise<unknown>) => void;
83 type UncaughtExceptionListener = (error: Error) => void;
84 type UnhandledRejectionListener = (reason: {} | null | undefined, promise: Promise<unknown>) => void;
85 type WarningListener = (warning: Error) => void;
86 type MessageListener = (message: unknown, sendHandle: unknown) => void;
87 type SignalsListener = (signal: Signals) => void;
88 type MultipleResolveListener = (type: MultipleResolveType, promise: Promise<unknown>, value: unknown) => void;
89 type WorkerListener = (worker: Worker) => void;
90
91 interface Socket extends ReadWriteStream {
92 isTTY?: true | undefined;
93 }
94
95 // Alias for compatibility
96 interface ProcessEnv extends Dict<string> {
97 /**
98 * Can be used to change the default timezone at runtime
99 */
100 TZ?: string;
101 }
102
103 interface HRTime {
104 (time?: [number, number]): [number, number];
105 bigint(): bigint;
106 }
107
108 interface ProcessReport {
109 /**
110 * Directory where the report is written.
111 * working directory of the Node.js process.
112 * @default '' indicating that reports are written to the current
113 */
114 directory: string;
115
116 /**
117 * Filename where the report is written.
118 * The default value is the empty string.
119 * @default '' the output filename will be comprised of a timestamp,
120 * PID, and sequence number.
121 */
122 filename: string;
123
124 /**
125 * Returns a JSON-formatted diagnostic report for the running process.
126 * The report's JavaScript stack trace is taken from err, if present.
127 */
128 getReport(err?: Error): string;
129
130 /**
131 * If true, a diagnostic report is generated on fatal errors,
132 * such as out of memory errors or failed C++ assertions.
133 * @default false
134 */
135 reportOnFatalError: boolean;
136
137 /**
138 * If true, a diagnostic report is generated when the process
139 * receives the signal specified by process.report.signal.
140 * @defaul false
141 */
142 reportOnSignal: boolean;
143
144 /**
145 * If true, a diagnostic report is generated on uncaught exception.
146 * @default false
147 */
148 reportOnUncaughtException: boolean;
149
150 /**
151 * The signal used to trigger the creation of a diagnostic report.
152 * @default 'SIGUSR2'
153 */
154 signal: Signals;
155
156 /**
157 * Writes a diagnostic report to a file. If filename is not provided, the default filename
158 * includes the date, time, PID, and a sequence number.
159 * The report's JavaScript stack trace is taken from err, if present.
160 *
161 * @param fileName Name of the file where the report is written.
162 * This should be a relative path, that will be appended to the directory specified in
163 * `process.report.directory`, or the current working directory of the Node.js process,
164 * if unspecified.
165 * @param error A custom error used for reporting the JavaScript stack.
166 * @return Filename of the generated report.
167 */
168 writeReport(fileName?: string): string;
169 writeReport(error?: Error): string;
170 writeReport(fileName?: string, err?: Error): string;
171 }
172
173 interface ResourceUsage {
174 fsRead: number;
175 fsWrite: number;
176 involuntaryContextSwitches: number;
177 ipcReceived: number;
178 ipcSent: number;
179 majorPageFault: number;
180 maxRSS: number;
181 minorPageFault: number;
182 sharedMemorySize: number;
183 signalsCount: number;
184 swappedOut: number;
185 systemCPUTime: number;
186 unsharedDataSize: number;
187 unsharedStackSize: number;
188 userCPUTime: number;
189 voluntaryContextSwitches: number;
190 }
191
192 interface EmitWarningOptions {
193 /**
194 * When `warning` is a `string`, `type` is the name to use for the _type_ of warning being emitted.
195 *
196 * @default 'Warning'
197 */
198 type?: string | undefined;
199
200 /**
201 * A unique identifier for the warning instance being emitted.
202 */
203 code?: string | undefined;
204
205 /**
206 * When `warning` is a `string`, `ctor` is an optional function used to limit the generated stack trace.
207 *
208 * @default process.emitWarning
209 */
210 ctor?: Function | undefined;
211
212 /**
213 * Additional text to include with the error.
214 */
215 detail?: string | undefined;
216 }
217
218 interface ProcessConfig {
219 readonly target_defaults: {
220 readonly cflags: any[];
221 readonly default_configuration: string;
222 readonly defines: string[];
223 readonly include_dirs: string[];
224 readonly libraries: string[];
225 };
226 readonly variables: {
227 readonly clang: number;
228 readonly host_arch: string;
229 readonly node_install_npm: boolean;
230 readonly node_install_waf: boolean;
231 readonly node_prefix: string;
232 readonly node_shared_openssl: boolean;
233 readonly node_shared_v8: boolean;
234 readonly node_shared_zlib: boolean;
235 readonly node_use_dtrace: boolean;
236 readonly node_use_etw: boolean;
237 readonly node_use_openssl: boolean;
238 readonly target_arch: string;
239 readonly v8_no_strict_aliasing: number;
240 readonly v8_use_snapshot: boolean;
241 readonly visibility: string;
242 };
243 }
244
245 interface Process extends EventEmitter {
246 /**
247 * Can also be a tty.WriteStream, not typed due to limitations.
248 */
249 stdout: WriteStream & {
250 fd: 1;
251 };
252 /**
253 * Can also be a tty.WriteStream, not typed due to limitations.
254 */
255 stderr: WriteStream & {
256 fd: 2;
257 };
258 stdin: ReadStream & {
259 fd: 0;
260 };
261 openStdin(): Socket;
262 argv: string[];
263 argv0: string;
264 execArgv: string[];
265 execPath: string;
266 abort(): never;
267 chdir(directory: string): void;
268 cwd(): string;
269 debugPort: number;
270
271 /**
272 * The `process.emitWarning()` method can be used to emit custom or application specific process warnings.
273 *
274 * These can be listened for by adding a handler to the `'warning'` event.
275 *
276 * @param warning The warning to emit.
277 * @param type When `warning` is a `string`, `type` is the name to use for the _type_ of warning being emitted. Default: `'Warning'`.
278 * @param code A unique identifier for the warning instance being emitted.
279 * @param ctor When `warning` is a `string`, `ctor` is an optional function used to limit the generated stack trace. Default: `process.emitWarning`.
280 */
281 emitWarning(warning: string | Error, ctor?: Function): void;
282 emitWarning(warning: string | Error, type?: string, ctor?: Function): void;
283 emitWarning(warning: string | Error, type?: string, code?: string, ctor?: Function): void;
284 emitWarning(warning: string | Error, options?: EmitWarningOptions): void;
285
286 env: ProcessEnv;
287 exit(code?: number): never;
288 exitCode?: number | undefined;
289 getgid(): number;
290 setgid(id: number | string): void;
291 getuid(): number;
292 setuid(id: number | string): void;
293 geteuid(): number;
294 seteuid(id: number | string): void;
295 getegid(): number;
296 setegid(id: number | string): void;
297 getgroups(): number[];
298 setgroups(groups: ReadonlyArray<string | number>): void;
299 setUncaughtExceptionCaptureCallback(cb: ((err: Error) => void) | null): void;
300 hasUncaughtExceptionCaptureCallback(): boolean;
301 readonly version: string;
302 readonly versions: ProcessVersions;
303 readonly config: ProcessConfig;
304 kill(pid: number, signal?: string | number): true;
305 readonly pid: number;
306 readonly ppid: number;
307 title: string;
308 readonly arch: string;
309 readonly platform: Platform;
310 /** @deprecated since v14.0.0 - use `require.main` instead. */
311 mainModule?: Module | undefined;
312 memoryUsage: MemoryUsageFn;
313 cpuUsage(previousValue?: CpuUsage): CpuUsage;
314 nextTick(callback: Function, ...args: any[]): void;
315 readonly release: ProcessRelease;
316 features: {
317 inspector: boolean;
318 debug: boolean;
319 uv: boolean;
320 ipv6: boolean;
321 tls_alpn: boolean;
322 tls_sni: boolean;
323 tls_ocsp: boolean;
324 tls: boolean;
325 };
326 /**
327 * @deprecated since v14.0.0 - Calling process.umask() with no argument causes
328 * the process-wide umask to be written twice. This introduces a race condition between threads,
329 * and is a potential security vulnerability. There is no safe, cross-platform alternative API.
330 */
331 umask(): number;
332 /**
333 * Can only be set if not in worker thread.
334 */
335 umask(mask: string | number): number;
336 uptime(): number;
337 hrtime: HRTime;
338
339 // Worker
340 send?(message: any, sendHandle?: any, options?: { swallowErrors?: boolean | undefined}, callback?: (error: Error | null) => void): boolean;
341 disconnect(): void;
342 connected: boolean;
343
344 /**
345 * The `process.allowedNodeEnvironmentFlags` property is a special,
346 * read-only `Set` of flags allowable within the `NODE_OPTIONS`
347 * environment variable.
348 */
349 allowedNodeEnvironmentFlags: ReadonlySet<string>;
350
351 /**
352 * Only available with `--experimental-report`
353 */
354 report?: ProcessReport | undefined;
355
356 resourceUsage(): ResourceUsage;
357
358 traceDeprecation: boolean;
359
360 /* EventEmitter */
361 addListener(event: "beforeExit", listener: BeforeExitListener): this;
362 addListener(event: "disconnect", listener: DisconnectListener): this;
363 addListener(event: "exit", listener: ExitListener): this;
364 addListener(event: "rejectionHandled", listener: RejectionHandledListener): this;
365 addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;
366 addListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this;
367 addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
368 addListener(event: "warning", listener: WarningListener): this;
369 addListener(event: "message", listener: MessageListener): this;
370 addListener(event: Signals, listener: SignalsListener): this;
371 addListener(event: "multipleResolves", listener: MultipleResolveListener): this;
372 addListener(event: "worker", listener: WorkerListener): this;
373
374 emit(event: "beforeExit", code: number): boolean;
375 emit(event: "disconnect"): boolean;
376 emit(event: "exit", code: number): boolean;
377 emit(event: "rejectionHandled", promise: Promise<unknown>): boolean;
378 emit(event: "uncaughtException", error: Error): boolean;
379 emit(event: "uncaughtExceptionMonitor", error: Error): boolean;
380 emit(event: "unhandledRejection", reason: unknown, promise: Promise<unknown>): boolean;
381 emit(event: "warning", warning: Error): boolean;
382 emit(event: "message", message: unknown, sendHandle: unknown): this;
383 emit(event: Signals, signal: Signals): boolean;
384 emit(event: "multipleResolves", type: MultipleResolveType, promise: Promise<unknown>, value: unknown): this;
385 emit(event: "worker", listener: WorkerListener): this;
386
387 on(event: "beforeExit", listener: BeforeExitListener): this;
388 on(event: "disconnect", listener: DisconnectListener): this;
389 on(event: "exit", listener: ExitListener): this;
390 on(event: "rejectionHandled", listener: RejectionHandledListener): this;
391 on(event: "uncaughtException", listener: UncaughtExceptionListener): this;
392 on(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this;
393 on(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
394 on(event: "warning", listener: WarningListener): this;
395 on(event: "message", listener: MessageListener): this;
396 on(event: Signals, listener: SignalsListener): this;
397 on(event: "multipleResolves", listener: MultipleResolveListener): this;
398 on(event: "worker", listener: WorkerListener): this;
399 on(event: string | symbol, listener: (...args: any[]) => void): this;
400
401 once(event: "beforeExit", listener: BeforeExitListener): this;
402 once(event: "disconnect", listener: DisconnectListener): this;
403 once(event: "exit", listener: ExitListener): this;
404 once(event: "rejectionHandled", listener: RejectionHandledListener): this;
405 once(event: "uncaughtException", listener: UncaughtExceptionListener): this;
406 once(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this;
407 once(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
408 once(event: "warning", listener: WarningListener): this;
409 once(event: "message", listener: MessageListener): this;
410 once(event: Signals, listener: SignalsListener): this;
411 once(event: "multipleResolves", listener: MultipleResolveListener): this;
412 once(event: "worker", listener: WorkerListener): this;
413 once(event: string | symbol, listener: (...args: any[]) => void): this;
414
415 prependListener(event: "beforeExit", listener: BeforeExitListener): this;
416 prependListener(event: "disconnect", listener: DisconnectListener): this;
417 prependListener(event: "exit", listener: ExitListener): this;
418 prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this;
419 prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;
420 prependListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this;
421 prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
422 prependListener(event: "warning", listener: WarningListener): this;
423 prependListener(event: "message", listener: MessageListener): this;
424 prependListener(event: Signals, listener: SignalsListener): this;
425 prependListener(event: "multipleResolves", listener: MultipleResolveListener): this;
426 prependListener(event: "worker", listener: WorkerListener): this;
427
428 prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this;
429 prependOnceListener(event: "disconnect", listener: DisconnectListener): this;
430 prependOnceListener(event: "exit", listener: ExitListener): this;
431 prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this;
432 prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;
433 prependOnceListener(event: "uncaughtExceptionMonitor", listener: UncaughtExceptionListener): this;
434 prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
435 prependOnceListener(event: "warning", listener: WarningListener): this;
436 prependOnceListener(event: "message", listener: MessageListener): this;
437 prependOnceListener(event: Signals, listener: SignalsListener): this;
438 prependOnceListener(event: "multipleResolves", listener: MultipleResolveListener): this;
439 prependOnceListener(event: "worker", listener: WorkerListener): this;
440
441 listeners(event: "beforeExit"): BeforeExitListener[];
442 listeners(event: "disconnect"): DisconnectListener[];
443 listeners(event: "exit"): ExitListener[];
444 listeners(event: "rejectionHandled"): RejectionHandledListener[];
445 listeners(event: "uncaughtException"): UncaughtExceptionListener[];
446 listeners(event: "uncaughtExceptionMonitor"): UncaughtExceptionListener[];
447 listeners(event: "unhandledRejection"): UnhandledRejectionListener[];
448 listeners(event: "warning"): WarningListener[];
449 listeners(event: "message"): MessageListener[];
450 listeners(event: Signals): SignalsListener[];
451 listeners(event: "multipleResolves"): MultipleResolveListener[];
452 listeners(event: "worker"): WorkerListener[];
453 }
454 }
455 }
456
457 export = process;
458}
459
460declare module 'node:process' {
461 import process = require('process');
462 export = process;
463}
464
\No newline at end of file