jiuyiUniapp/service/node_modules/@react-native/community-cli-plugin/dist/commands/start/attachKeyHandlers.js

104 lines
2.9 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
exports.default = attachKeyHandlers;
var _OpenDebuggerKeyboardHandler = _interopRequireDefault(
require("./OpenDebuggerKeyboardHandler")
);
var _chalk = _interopRequireDefault(require("chalk"));
var _invariant = _interopRequireDefault(require("invariant"));
var _readline = _interopRequireDefault(require("readline"));
var _tty = require("tty");
function _interopRequireDefault(e) {
return e && e.__esModule ? e : { default: e };
}
const CTRL_C = "\u0003";
const CTRL_D = "\u0004";
const RELOAD_TIMEOUT = 500;
const throttle = (callback, timeout) => {
let previousCallTimestamp = 0;
return () => {
const currentCallTimestamp = new Date().getTime();
if (currentCallTimestamp - previousCallTimestamp > timeout) {
previousCallTimestamp = currentCallTimestamp;
callback();
}
};
};
function attachKeyHandlers({ devServerUrl, messageSocket, reporter }) {
if (process.stdin.isTTY !== true) {
reporter.update({
type: "unstable_server_log",
level: "info",
data: "Interactive mode is not supported in this environment",
});
return;
}
_readline.default.emitKeypressEvents(process.stdin);
setRawMode(true);
const reload = throttle(() => {
reporter.update({
type: "unstable_server_log",
level: "info",
data: "Reloading connected app(s)...",
});
messageSocket.broadcast("reload", null);
}, RELOAD_TIMEOUT);
const openDebuggerKeyboardHandler = new _OpenDebuggerKeyboardHandler.default({
reporter,
devServerUrl,
});
process.stdin.on("keypress", (str, key) => {
if (openDebuggerKeyboardHandler.maybeHandleTargetSelection(key.name)) {
return;
}
switch (key.sequence) {
case "r":
reload();
break;
case "d":
reporter.update({
type: "unstable_server_log",
level: "info",
data: "Opening Dev Menu...",
});
messageSocket.broadcast("devMenu", null);
break;
case "j":
void openDebuggerKeyboardHandler.handleOpenDebugger();
break;
case CTRL_C:
case CTRL_D:
openDebuggerKeyboardHandler.dismiss();
reporter.update({
type: "unstable_server_log",
level: "info",
data: "Stopping server",
});
setRawMode(false);
process.stdin.pause();
process.emit("SIGINT");
process.exit();
}
});
reporter.update({
type: "unstable_server_log",
level: "info",
data: `Key commands available:
${_chalk.default.bold.inverse(" r ")} - reload app(s)
${_chalk.default.bold.inverse(" d ")} - open Dev Menu
${_chalk.default.bold.inverse(" j ")} - open DevTools
`,
});
}
function setRawMode(enable) {
(0, _invariant.default)(
process.stdin instanceof _tty.ReadStream,
"process.stdin must be a readable stream to modify raw mode"
);
process.stdin.setRawMode(enable);
}