1'use strict';
2
3const { ObjectDefineProperty } = primordials;
4
5delete process._debugProcess;
6delete process._debugEnd;
7
8function defineStream(name, getter) {
9  ObjectDefineProperty(process, name, {
10    __proto__: null,
11    configurable: true,
12    enumerable: true,
13    get: getter,
14  });
15}
16
17defineStream('stdout', getStdout);
18defineStream('stdin', getStdin);
19defineStream('stderr', getStderr);
20
21// Worker threads don't receive signals.
22const {
23  startListeningIfSignal,
24  stopListeningIfSignal,
25} = require('internal/process/signal');
26process.removeListener('newListener', startListeningIfSignal);
27process.removeListener('removeListener', stopListeningIfSignal);
28
29// ---- keep the attachment of the wrappers above so that it's easier to ----
30// ----              compare the setups side-by-side                    -----
31
32const {
33  createWorkerStdio,
34} = require('internal/worker/io');
35
36let workerStdio;
37function lazyWorkerStdio() {
38  if (!workerStdio) workerStdio = createWorkerStdio();
39  return workerStdio;
40}
41
42function getStdout() { return lazyWorkerStdio().stdout; }
43
44function getStderr() { return lazyWorkerStdio().stderr; }
45
46function getStdin() { return lazyWorkerStdio().stdin; }
47