watchMode.js 2.1 KB

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