UNPKG

2.21 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8function _readline() {
9 const data = _interopRequireDefault(require("readline"));
10
11 _readline = function () {
12 return data;
13 };
14
15 return data;
16}
17
18var _hookStdout = _interopRequireDefault(require("../../tools/hookStdout"));
19
20function _cliTools() {
21 const data = require("@react-native-community/cli-tools");
22
23 _cliTools = function () {
24 return data;
25 };
26
27 return data;
28}
29
30function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
32function printWatchModeInstructions() {
33 _cliTools().logger.log('\n\nTo reload the app press "r"\nTo open developer menu press "d"');
34}
35
36function enableWatchMode(messageSocket) {
37 // We need to set this to true to catch key presses individually.
38 // As a result we have to implement our own method for exiting
39 // and other commands (e.g. ctrl+c & ctrl+z)
40 if (!process.stdin.setRawMode) {
41 _cliTools().logger.debug('Watch mode is not supported in this environment');
42
43 return;
44 }
45
46 _readline().default.emitKeypressEvents(process.stdin);
47
48 process.stdin.setRawMode(true); // We have no way of knowing when the dependency graph is done loading
49 // except by hooking into stdout itself. We want to print instructions
50 // right after its done loading.
51
52 const restore = (0, _hookStdout.default)(output => {
53 if (output.includes('Fast - Scalable - Integrated')) {
54 printWatchModeInstructions();
55 restore();
56 }
57 });
58 process.stdin.on('keypress', (_key, data) => {
59 const {
60 ctrl,
61 name
62 } = data;
63
64 if (ctrl === true) {
65 switch (name) {
66 case 'c':
67 process.exit();
68 break;
69
70 case 'z':
71 process.emit('SIGTSTP', 'SIGTSTP');
72 break;
73 }
74 } else if (name === 'r') {
75 messageSocket.broadcast('reload', null);
76
77 _cliTools().logger.info('Reloading app...');
78 } else if (name === 'd') {
79 messageSocket.broadcast('devMenu', null);
80
81 _cliTools().logger.info('Opening developer menu...');
82 }
83 });
84}
85
86var _default = enableWatchMode;
87exports.default = _default;
88
89//# sourceMappingURL=watchMode.js.map
\No newline at end of file