UNPKG

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