force-stdin-tty
Version:
Force stdin to be assigned to /dev/tty
42 lines (30 loc) • 1.3 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.forceStdinTty = void 0;
var _fs = _interopRequireDefault(require("fs"));
var _tty = _interopRequireDefault(require("tty"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var forceStdinTty = function forceStdinTty() {
if (process.stdin.isTTY) {
return false;
} // Use `O_NOCTTY` to not take control of spawned processes?
var _fs$constants = _fs["default"].constants,
O_RDONLY = _fs$constants.O_RDONLY,
O_NOCTTY = _fs$constants.O_NOCTTY;
var fd = _fs["default"].openSync('/dev/tty', O_RDONLY + O_NOCTTY); // @ts-ignore: `ReadStream` in @types/node incorrectly expects an object.
// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/37174
var stdin = new _tty["default"].ReadStream(fd); // Use `Object.defineProperty()` because `process.stdin` has no setter.
// Taken from node.js source:
// https://github.com/nodejs/node/blob/6271ef005eb311c819b7ab041e09f50e4155ec1e/lib/internal/bootstrap/node.js#L354-L358
Object.defineProperty(process, 'stdin', {
configurable: true,
enumerable: true,
get: function get() {
return stdin;
}
});
return true;
};
exports.forceStdinTty = forceStdinTty;
;