UNPKG

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