mirror of
https://github.com/status-im/react-native.git
synced 2025-01-15 20:15:11 +00:00
c4a66a89a2
Summary: Scope of the diff: 1. Middleware `react-native-github/local-cli` and `react-native-internal-cli` uses a very similar set of middlewares (internal cli extends github version), so I decided to move it to a standalone file (middleware manager) in order to remove duplications and increase readability. 2. Types Seems that after Flow upgrade to version 0.68 there were many type issues to resolve, so all of them were auto-mocked. This is fine, but I'd like to see Flow assists me with `Metro.createServer` -> `Metro.runServer` migration. Hence, I decided to resolve flow mocks, related to runServer. 3. `runServer` signature In `react-native-github` repo I cleaned up `runServer` signature by removing `startCallback` and `readyCallback` from the function parameters and moved them to `runServer` instead. 4. Replace `createServer` by `runServer` In `react-native-github` repo, `createServer` has been replaced by `runServer`. __Some of arguments are not mapped__. Note that this diff will partially break argument mapping. This is intentional. @[100000044482482:ives] will fix it with a new config package. Reviewed By: mjesun Differential Revision: D8711717 fbshipit-source-id: a843ab576360ff7242099910d8f25a9cb0a388c0
71 lines
2.3 KiB
JavaScript
71 lines
2.3 KiB
JavaScript
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @format
|
|
*/
|
|
'use strict';
|
|
|
|
const launchChrome = require('../util/launchChrome');
|
|
|
|
const {exec} = require('child_process');
|
|
|
|
function launchChromeDevTools(host, args = '') {
|
|
var debuggerURL = 'http://' + host + '/debugger-ui' + args;
|
|
console.log('Launching Dev Tools...');
|
|
launchChrome(debuggerURL);
|
|
}
|
|
|
|
function escapePath(pathname) {
|
|
// " Can escape paths with spaces in OS X, Windows, and *nix
|
|
return '"' + pathname + '"';
|
|
}
|
|
|
|
function launchDevTools({host, watchFolders}, isChromeConnected) {
|
|
// Explicit config always wins
|
|
var customDebugger = process.env.REACT_DEBUGGER;
|
|
if (customDebugger) {
|
|
var folders = watchFolders.map(escapePath).join(' ');
|
|
var command = customDebugger + ' ' + folders;
|
|
console.log('Starting custom debugger by executing: ' + command);
|
|
exec(command, function(error, stdout, stderr) {
|
|
if (error !== null) {
|
|
console.log('Error while starting custom debugger: ' + error);
|
|
}
|
|
});
|
|
} else if (!isChromeConnected()) {
|
|
// Dev tools are not yet open; we need to open a session
|
|
launchChromeDevTools(host);
|
|
}
|
|
}
|
|
|
|
module.exports = function(options, isChromeConnected) {
|
|
return function(req, res, next) {
|
|
var host = req.headers.host;
|
|
if (req.url === '/launch-safari-devtools') {
|
|
// TODO: remove `console.log` and dev tools binary
|
|
console.log(
|
|
'We removed support for Safari dev-tools. ' +
|
|
'If you still need this, please let us know.',
|
|
);
|
|
} else if (req.url === '/launch-chrome-devtools') {
|
|
// TODO: Remove this case in the future
|
|
console.log(
|
|
'The method /launch-chrome-devtools is deprecated. You are ' +
|
|
' probably using an application created with an older CLI with the ' +
|
|
' packager of a newer CLI. Please upgrade your application: ' +
|
|
'https://facebook.github.io/react-native/docs/upgrading.html',
|
|
);
|
|
launchDevTools(options, isChromeConnected);
|
|
res.end('OK');
|
|
} else if (req.url === '/launch-js-devtools') {
|
|
launchDevTools({...options, host}, isChromeConnected);
|
|
res.end('OK');
|
|
} else {
|
|
next();
|
|
}
|
|
};
|
|
};
|