You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

@react-native-community/cli-tools

Package Overview
Dependencies
Maintainers
35
Versions
193
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@react-native-community/cli-tools - npm Package Compare versions

Comparing version
16.0.2
to
17.0.0
+1
build/launch-editor.d.js
"use strict";
+1
-1

@@ -1,2 +0,2 @@

type CacheKey = 'eTag' | 'lastChecked' | 'latestVersion' | 'dependencies' | 'lastUsedIOSDeviceId';
type CacheKey = 'eTag' | 'lastChecked' | 'latestVersion' | 'dependencies' | 'podfile' | 'podfileLock' | 'lastUsedIOSDeviceId';
/**

@@ -3,0 +3,0 @@ * Returns the path string of `$HOME/.react-native-cli`.

@@ -1,1 +0,1 @@

{"version":3,"file":"cacheManager.d.ts","sourceRoot":"","sources":["../src/cacheManager.ts"],"names":[],"mappings":"AAOA,KAAK,QAAQ,GACT,MAAM,GACN,aAAa,GACb,eAAe,GACf,cAAc,GACd,qBAAqB,CAAC;AA4B1B;;;;GAIG;AACH,iBAAS,gBAAgB,WASxB;AAED,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,QAevC;AAED,iBAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAM5D;AAED,iBAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,QAMtD;;;;;;;AAED,wBAKE"}
{"version":3,"file":"cacheManager.d.ts","sourceRoot":"","sources":["../src/cacheManager.ts"],"names":[],"mappings":"AAOA,KAAK,QAAQ,GACT,MAAM,GACN,aAAa,GACb,eAAe,GACf,cAAc,GACd,SAAS,GACT,aAAa,GACb,qBAAqB,CAAC;AA4B1B;;;;GAIG;AACH,iBAAS,gBAAgB,WASxB;AAED,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,QAevC;AAED,iBAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAM5D;AAED,iBAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,QAMtD;;;;;;;AAED,wBAKE"}

@@ -1,1 +0,1 @@

{"version":3,"names":["loadCache","name","cacheRaw","fs","readFileSync","path","resolve","getCacheRootPath","cache","JSON","parse","e","code","saveCache","logger","debug","undefined","fullPath","mkdirSync","dirname","recursive","writeFileSync","stringify","legacyPath","os","homedir","cachePath","appDirs","appName","existsSync","removeProjectCache","cacheRootPath","rmSync","error","chalk","underline","join","get","key","set","value"],"sources":["../src/cacheManager.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport os from 'os';\nimport appDirs from 'appdirsjs';\nimport chalk from 'chalk';\nimport logger from './logger';\n\ntype CacheKey =\n | 'eTag'\n | 'lastChecked'\n | 'latestVersion'\n | 'dependencies'\n | 'lastUsedIOSDeviceId';\ntype Cache = {[key in CacheKey]?: string};\n\nfunction loadCache(name: string): Cache | undefined {\n try {\n const cacheRaw = fs.readFileSync(\n path.resolve(getCacheRootPath(), name),\n 'utf8',\n );\n const cache = JSON.parse(cacheRaw);\n return cache;\n } catch (e) {\n if ((e as any).code === 'ENOENT') {\n // Create cache file since it doesn't exist.\n saveCache(name, {});\n }\n logger.debug('No cache found');\n return undefined;\n }\n}\n\nfunction saveCache(name: string, cache: Cache) {\n const fullPath = path.resolve(getCacheRootPath(), name);\n\n fs.mkdirSync(path.dirname(fullPath), {recursive: true});\n fs.writeFileSync(fullPath, JSON.stringify(cache, null, 2));\n}\n\n/**\n * Returns the path string of `$HOME/.react-native-cli`.\n *\n * In case it doesn't exist, it will be created.\n */\nfunction getCacheRootPath() {\n const legacyPath = path.resolve(os.homedir(), '.react-native-cli', 'cache');\n const cachePath = appDirs({appName: 'react-native-cli', legacyPath}).cache;\n\n if (!fs.existsSync(cachePath)) {\n fs.mkdirSync(cachePath, {recursive: true});\n }\n\n return cachePath;\n}\n\nfunction removeProjectCache(name: string) {\n const cacheRootPath = getCacheRootPath();\n try {\n const fullPath = path.resolve(cacheRootPath, name);\n\n if (fs.existsSync(fullPath)) {\n fs.rmSync(fullPath, {recursive: true});\n }\n } catch {\n logger.error(\n `Failed to remove cache for ${name}. If you experience any issues when running freshly initialized project, please remove the \"${chalk.underline(\n path.join(cacheRootPath, name),\n )}\" folder manually.`,\n );\n }\n}\n\nfunction get(name: string, key: CacheKey): string | undefined {\n const cache = loadCache(name);\n if (cache) {\n return cache[key];\n }\n return undefined;\n}\n\nfunction set(name: string, key: CacheKey, value: string) {\n const cache = loadCache(name);\n if (cache) {\n cache[key] = value;\n saveCache(name, cache);\n }\n}\n\nexport default {\n get,\n set,\n removeProjectCache,\n getCacheRootPath,\n};\n"],"mappings":"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"}
{"version":3,"names":["loadCache","name","cacheRaw","fs","readFileSync","path","resolve","getCacheRootPath","cache","JSON","parse","e","code","saveCache","logger","debug","undefined","fullPath","mkdirSync","dirname","recursive","writeFileSync","stringify","legacyPath","os","homedir","cachePath","appDirs","appName","existsSync","removeProjectCache","cacheRootPath","rmSync","error","chalk","underline","join","get","key","set","value"],"sources":["../src/cacheManager.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport os from 'os';\nimport appDirs from 'appdirsjs';\nimport chalk from 'chalk';\nimport logger from './logger';\n\ntype CacheKey =\n | 'eTag'\n | 'lastChecked'\n | 'latestVersion'\n | 'dependencies'\n | 'podfile'\n | 'podfileLock'\n | 'lastUsedIOSDeviceId';\ntype Cache = {[key in CacheKey]?: string};\n\nfunction loadCache(name: string): Cache | undefined {\n try {\n const cacheRaw = fs.readFileSync(\n path.resolve(getCacheRootPath(), name),\n 'utf8',\n );\n const cache = JSON.parse(cacheRaw);\n return cache;\n } catch (e) {\n if ((e as any).code === 'ENOENT') {\n // Create cache file since it doesn't exist.\n saveCache(name, {});\n }\n logger.debug('No cache found');\n return undefined;\n }\n}\n\nfunction saveCache(name: string, cache: Cache) {\n const fullPath = path.resolve(getCacheRootPath(), name);\n\n fs.mkdirSync(path.dirname(fullPath), {recursive: true});\n fs.writeFileSync(fullPath, JSON.stringify(cache, null, 2));\n}\n\n/**\n * Returns the path string of `$HOME/.react-native-cli`.\n *\n * In case it doesn't exist, it will be created.\n */\nfunction getCacheRootPath() {\n const legacyPath = path.resolve(os.homedir(), '.react-native-cli', 'cache');\n const cachePath = appDirs({appName: 'react-native-cli', legacyPath}).cache;\n\n if (!fs.existsSync(cachePath)) {\n fs.mkdirSync(cachePath, {recursive: true});\n }\n\n return cachePath;\n}\n\nfunction removeProjectCache(name: string) {\n const cacheRootPath = getCacheRootPath();\n try {\n const fullPath = path.resolve(cacheRootPath, name);\n\n if (fs.existsSync(fullPath)) {\n fs.rmSync(fullPath, {recursive: true});\n }\n } catch {\n logger.error(\n `Failed to remove cache for ${name}. If you experience any issues when running freshly initialized project, please remove the \"${chalk.underline(\n path.join(cacheRootPath, name),\n )}\" folder manually.`,\n );\n }\n}\n\nfunction get(name: string, key: CacheKey): string | undefined {\n const cache = loadCache(name);\n if (cache) {\n return cache[key];\n }\n return undefined;\n}\n\nfunction set(name: string, key: CacheKey, value: string) {\n const cache = loadCache(name);\n if (cache) {\n cache[key] = value;\n saveCache(name, cache);\n }\n}\n\nexport default {\n get,\n set,\n removeProjectCache,\n getCacheRootPath,\n};\n"],"mappings":"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"}

@@ -5,4 +5,2 @@ export { default as logger } from './logger';

export { fetch, fetchToTemp } from './fetch';
export { default as launchDefaultBrowser } from './launchDefaultBrowser';
export { default as launchDebugger } from './launchDebugger';
export { default as launchEditor } from './launchEditor';

@@ -9,0 +7,0 @@ export * as version from './releaseChecker';

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAC,OAAO,IAAI,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC;AACvD,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACjE,cAAc,UAAU,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,OAAO,IAAI,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACjE,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAC,OAAO,IAAI,OAAO,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAEvD,cAAc,UAAU,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAC,OAAO,IAAI,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC;AACvD,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACjE,cAAc,UAAU,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,OAAO,IAAI,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACjE,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAC,OAAO,IAAI,OAAO,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAEvD,cAAc,UAAU,CAAC"}

@@ -12,4 +12,2 @@ "use strict";

fetchToTemp: true,
launchDefaultBrowser: true,
launchDebugger: true,
launchEditor: true,

@@ -90,14 +88,2 @@ version: true,

});
Object.defineProperty(exports, "launchDebugger", {
enumerable: true,
get: function () {
return _launchDebugger.default;
}
});
Object.defineProperty(exports, "launchDefaultBrowser", {
enumerable: true,
get: function () {
return _launchDefaultBrowser.default;
}
});
Object.defineProperty(exports, "launchEditor", {

@@ -151,4 +137,2 @@ enumerable: true,

var _fetch = require("./fetch");
var _launchDefaultBrowser = _interopRequireDefault(require("./launchDefaultBrowser"));
var _launchDebugger = _interopRequireDefault(require("./launchDebugger"));
var _launchEditor = _interopRequireDefault(require("./launchEditor"));

@@ -155,0 +139,0 @@ var _version = _interopRequireWildcard(require("./releaseChecker"));

@@ -1,1 +0,1 @@

{"version":3,"names":[],"sources":["../src/index.ts"],"sourcesContent":["export {default as logger} from './logger';\nexport {default as isPackagerRunning} from './isPackagerRunning';\nexport {default as getDefaultUserTerminal} from './getDefaultUserTerminal';\nexport {fetch, fetchToTemp} from './fetch';\nexport {default as launchDefaultBrowser} from './launchDefaultBrowser';\nexport {default as launchDebugger} from './launchDebugger';\nexport {default as launchEditor} from './launchEditor';\nexport * as version from './releaseChecker';\nexport {default as resolveNodeModuleDir} from './resolveNodeModuleDir';\nexport {getLoader, NoopLoader, Loader} from './loader';\nexport {default as findProjectRoot} from './findProjectRoot';\nexport {default as printRunDoctorTip} from './printRunDoctorTip';\nexport * from './prompt';\nexport * as link from './doclink';\nexport {default as startServerInNewWindow} from './startServerInNewWindow';\nexport {default as findDevServerPort} from './findDevServerPort';\nexport * from './port';\nexport {default as cacheManager} from './cacheManager';\nexport {default as runSudo} from './runSudo';\nexport {default as unixifyPaths} from './unixifyPaths';\n\nexport * from './errors';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAuD;AAAA;AAEvD;AACA;AACA;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAAyB;AAAA;AAEzB;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAAyB;AAAA;AAAA"}
{"version":3,"names":[],"sources":["../src/index.ts"],"sourcesContent":["export {default as logger} from './logger';\nexport {default as isPackagerRunning} from './isPackagerRunning';\nexport {default as getDefaultUserTerminal} from './getDefaultUserTerminal';\nexport {fetch, fetchToTemp} from './fetch';\nexport {default as launchEditor} from './launchEditor';\nexport * as version from './releaseChecker';\nexport {default as resolveNodeModuleDir} from './resolveNodeModuleDir';\nexport {getLoader, NoopLoader, Loader} from './loader';\nexport {default as findProjectRoot} from './findProjectRoot';\nexport {default as printRunDoctorTip} from './printRunDoctorTip';\nexport * from './prompt';\nexport * as link from './doclink';\nexport {default as startServerInNewWindow} from './startServerInNewWindow';\nexport {default as findDevServerPort} from './findDevServerPort';\nexport * from './port';\nexport {default as cacheManager} from './cacheManager';\nexport {default as runSudo} from './runSudo';\nexport {default as unixifyPaths} from './unixifyPaths';\n\nexport * from './errors';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAAuD;AAAA;AAEvD;AACA;AACA;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAAyB;AAAA;AAEzB;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAAyB;AAAA;AAAA"}

@@ -9,4 +9,3 @@ /**

*/
declare function launchEditor(fileName: string, lineNumber: number, projectRoots: ReadonlyArray<string>): void;
export default launchEditor;
export default function launchEditor(fileName: string, lineNumber: number, _watchFolders?: ReadonlyArray<string>): void;
//# sourceMappingURL=launchEditor.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"launchEditor.d.ts","sourceRoot":"","sources":["../src/launchEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwQH,iBAAS,YAAY,CACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,QAkFpC;AAED,eAAe,YAAY,CAAC"}
{"version":3,"file":"launchEditor.d.ts","sourceRoot":"","sources":["../src/launchEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GACpC,IAAI,CAEN"}

@@ -6,6 +6,6 @@ "use strict";

});
exports.default = void 0;
function _chalk() {
const data = _interopRequireDefault(require("chalk"));
_chalk = function () {
exports.default = launchEditor;
function _launchEditor() {
const data = _interopRequireDefault(require("launch-editor"));
_launchEditor = function () {
return data;

@@ -15,31 +15,2 @@ };

}
function _fs() {
const data = _interopRequireDefault(require("fs"));
_fs = function () {
return data;
};
return data;
}
function _path() {
const data = _interopRequireDefault(require("path"));
_path = function () {
return data;
};
return data;
}
function _child_process() {
const data = require("child_process");
_child_process = function () {
return data;
};
return data;
}
function _shellQuote() {
const data = _interopRequireDefault(require("shell-quote"));
_shellQuote = function () {
return data;
};
return data;
}
var _logger = _interopRequireDefault(require("./logger"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -55,256 +26,6 @@ /**

function isTerminalEditor(editor) {
switch (editor) {
case 'vim':
case 'emacs':
case 'nano':
return true;
default:
return false;
}
function launchEditor(fileName, lineNumber, _watchFolders) {
(0, _launchEditor().default)(`${fileName}:${lineNumber}`, process.env.REACT_EDITOR);
}
// Map from full process name to binary that starts the process
// We can't just re-use full process name, because it will spawn a new instance
// of the app every time
const COMMON_EDITORS = {
'/Applications/Atom.app/Contents/MacOS/Atom': 'atom',
'/Applications/Atom Beta.app/Contents/MacOS/Atom Beta': '/Applications/Atom Beta.app/Contents/MacOS/Atom Beta',
'/Applications/IntelliJ IDEA.app/Contents/MacOS/idea': 'idea',
'/Applications/Sublime Text.app/Contents/MacOS/Sublime Text': '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl',
'/Applications/Sublime Text 2.app/Contents/MacOS/Sublime Text 2': '/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl',
'/Applications/Visual Studio Code.app/Contents/MacOS/Electron': 'code',
'/Applications/WebStorm.app/Contents/MacOS/webstorm': 'webstorm'
};
// Map of process image name used to identify already running instances of the editor
// And an editor id which is used to determine which arguments to add to the commandline
const COMMON_WINDOWS_EDITORS = {
'Code.exe': 'code',
'sublime_text.exe': 'subl',
'devenv.exe': 'devenv',
'notepad.exe': 'notepad'
};
// Transpiled version of: /^([a-zA-Z]+:)?[\p{L}0-9@/.\-_\\]+$/u
// Non-transpiled version requires support for Unicode property regex. Allows
// alphanumeric characters, periods, dashes, at signs, slashes, and underscores, with an optional drive prefix
const WINDOWS_FILE_NAME_WHITELIST = /^([a-zA-Z]+:)?(?:[\x2D-9@-Z\\_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7B9\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDF00-\uDF1C\uDF27\uDF30-\uDF45]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFF1]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D])+$/;
function addWorkspaceToArgumentsIfExists(args, workspace) {
if (workspace) {
args.unshift(workspace);
}
return args;
}
function getArgumentsForLineNumber(editor, fileName, lineNumber, workspace) {
switch (_path().default.basename(editor)) {
case 'vim':
case 'mvim':
return [fileName, `+${lineNumber}`];
case 'atom':
case 'Atom':
case 'Atom Beta':
case 'subl':
case 'sublime':
return [`${fileName}:${lineNumber}`];
case 'joe':
case 'emacs':
case 'emacsclient':
return [`+${lineNumber}`, fileName];
case 'rmate':
case 'mate':
case 'mine':
case 'webstorm':
case 'wstorm':
case 'appcode':
case 'charm':
case 'idea':
return ['--line', String(lineNumber), fileName];
case 'code':
case 'code-insiders':
return addWorkspaceToArgumentsIfExists(['-g', `${fileName}:${lineNumber}`], workspace);
case 'devenv':
return ['/EDIT', fileName];
// For all others, drop the lineNumber until we have
// a mapping above, since providing the lineNumber incorrectly
// can result in errors or confusing behavior.
default:
return [fileName];
}
}
function getArgumentsForFileName(editor, fileName, workspace) {
switch (_path().default.basename(editor)) {
case 'code':
return addWorkspaceToArgumentsIfExists([fileName], workspace);
case 'devenv':
return ['/EDIT', fileName];
// Every other editor just takes the filename as an argument
default:
return [fileName];
}
}
function guessEditor() {
// Explicit config always wins
if (process.env.REACT_EDITOR) {
return _shellQuote().default.parse(process.env.REACT_EDITOR);
}
try {
// Using `ps x` on OSX we can find out which editor is currently running.
// Potentially we could use similar technique for Linux
if (process.platform === 'darwin') {
const output = (0, _child_process().execSync)('ps x').toString();
const processNames = Object.keys(COMMON_EDITORS);
for (const processName of processNames) {
if (output.indexOf(processName) !== -1) {
return [COMMON_EDITORS[processName]];
}
}
} else if (process.platform === 'win32') {
const output = (0, _child_process().execSync)('tasklist /NH /FO CSV /FI "SESSIONNAME ne Services"').toString();
const runningProcesses = output.split('\n').map(line => line.replace(/^"|".*\r$/gm, ''));
const processNames = Object.keys(COMMON_WINDOWS_EDITORS);
for (const processName of processNames) {
if (runningProcesses.includes(processName)) {
return [COMMON_WINDOWS_EDITORS[processName]];
}
}
}
} catch (error) {
// Ignore...
}
// Last resort, use old skool env vars
if (process.env.VISUAL) {
return [process.env.VISUAL];
}
if (process.env.EDITOR) {
return [process.env.EDITOR];
}
return [];
}
function printInstructions(title) {
const WINDOWS_FIXIT_INSTRUCTIONS = [' To set it up, you can run something like "SETX REACT_EDITOR code"', ' which will set the environment variable in future shells,', ' then "SET REACTEDITOR=code" to set it in the current shell'];
const FIXIT_INSTRUCTIONS = [' To set it up, you can add something like ', ' export REACT_EDITOR=atom to your ~/.bashrc or ~/.zshrc depending on ', ' which shell you use.'];
_logger.default.info(['', _chalk().default.bgBlue.white.bold(` ${title} `), ' When you see Red Box with stack trace, you can click any ', ' stack frame to jump to the source file. The packager will launch your ', ' editor of choice. It will first look at REACT_EDITOR environment ', ' variable, then at EDITOR.', ...(process.platform === 'win32' ? WINDOWS_FIXIT_INSTRUCTIONS : FIXIT_INSTRUCTIONS), ''].join('\n'));
}
function transformToAbsolutePathIfNeeded(pathName) {
if (!_path().default.isAbsolute(pathName)) {
return _path().default.resolve(process.cwd(), pathName);
}
return pathName;
}
function findRootForFile(projectRoots, fileName) {
const absoluteFileName = transformToAbsolutePathIfNeeded(fileName);
return projectRoots.find(root => {
const absoluteRoot = transformToAbsolutePathIfNeeded(root);
return absoluteFileName.startsWith(absoluteRoot + _path().default.sep);
});
}
// On windows, find the editor executable path even if its not in the users path
function editorWindowsLaunchPath(editor) {
if (_fs().default.existsSync(editor)) {
// Editor is a full path to an exe, we can just launch it
return editor;
}
try {
(0, _child_process().execSync)(`where ${editor}`, {
stdio: 'ignore'
});
// Editor is on the path, we can just launch it
return editor;
} catch (error) {
// ignore
}
try {
const editorNames = Object.values(COMMON_WINDOWS_EDITORS);
const editorImageNames = Object.keys(COMMON_WINDOWS_EDITORS);
for (let i = 0; i < editorNames.length; i++) {
const editorName = editorNames[i];
if (editor.toLowerCase() === editorName.toLowerCase()) {
// An editor was guessed by guessEditor, but isn't part of the users path
// Attempt to get the executable location from the running process
const output = (0, _child_process().execSync)(`tasklist /FO CSV /NH /FI "IMAGENAME eq ${editorImageNames[i]}"`).toString();
const results = output.split(',');
if (results[0] !== `"${editorImageNames[i]}"`) {
// Failed to find a running instance...
return editor;
}
const pid = parseInt(results[1].replace(/^"|"$/gm, ''), 10);
return (0, _child_process().execSync)(`powershell (Get-CimInstance Win32_Process -Filter "ProcessId=${pid}").ExecutablePath`).toString().trim();
}
}
} catch (error) {
// ignore
}
// Just use what the user specified, it will probably fail,
// but we will show some help text when it fails.
return editor;
}
let _childProcess = null;
function launchEditor(fileName, lineNumber, projectRoots) {
if (!_fs().default.existsSync(fileName)) {
return;
}
// Sanitize lineNumber to prevent malicious use on win32
// via: https://github.com/nodejs/node/blob/c3bb4b1aa5e907d489619fb43d233c3336bfc03d/lib/child_process.js#L333
if (lineNumber && isNaN(lineNumber)) {
return;
}
let [editor, ...args] = guessEditor();
if (!editor) {
printInstructions('PRO TIP');
return;
}
const workspace = findRootForFile(projectRoots, fileName);
if (lineNumber) {
args = args.concat(getArgumentsForLineNumber(editor, fileName, lineNumber, workspace));
} else {
args = args.concat(getArgumentsForFileName(editor, fileName, workspace));
}
// cmd.exe on Windows is vulnerable to RCE attacks given a file name of the
// form "C:\Users\myusername\Downloads\& curl 172.21.93.52". Use a whitelist
// to validate user-provided file names. This doesn't cover the entire range
// of valid file names but should cover almost all of them in practice.
if (process.platform === 'win32' && !WINDOWS_FILE_NAME_WHITELIST.test(fileName.trim())) {
_logger.default.error(`Could not open ${_path().default.basename(fileName)} in the editor.`);
_logger.default.info('When running on Windows, file names are checked against a whitelist ' + 'to protect against remote code execution attacks. File names may ' + 'consist only of alphanumeric characters (all languages), periods, ' + 'dashes, at signs, slashes, and underscores.');
return;
}
_logger.default.info(`Opening ${_chalk().default.underline(fileName)} with ${_chalk().default.bold(editor)}`);
if (_childProcess && isTerminalEditor(editor)) {
// There's an existing editor process already and it's attached
// to the terminal, so go kill it. Otherwise two separate editor
// instances attach to the stdin/stdout which gets confusing.
_childProcess.kill('SIGKILL');
}
if (process.platform === 'win32') {
// On Windows, launch the editor in a shell because spawn can only
// launch .exe files.
_childProcess = (0, _child_process().spawn)('cmd.exe', ['/C', editorWindowsLaunchPath(editor)].concat(args), {
stdio: 'inherit'
});
} else {
_childProcess = (0, _child_process().spawn)(editor, args, {
stdio: 'inherit'
});
}
_childProcess.on('exit', errorCode => {
_childProcess = null;
if (errorCode) {
_logger.default.error('Your editor exited with an error!');
printInstructions('Keep these instructions in mind:');
}
});
_childProcess.on('error', error => {
_logger.default.error(error.message);
printInstructions('How to fix:');
});
}
var _default = launchEditor;
exports.default = _default;
//# sourceMappingURL=/Users/thymikee/Developer/oss/rncli/packages/cli-tools/build/launchEditor.js.map

@@ -1,1 +0,1 @@

{"version":3,"names":["isTerminalEditor","editor","COMMON_EDITORS","COMMON_WINDOWS_EDITORS","WINDOWS_FILE_NAME_WHITELIST","addWorkspaceToArgumentsIfExists","args","workspace","unshift","getArgumentsForLineNumber","fileName","lineNumber","path","basename","String","getArgumentsForFileName","guessEditor","process","env","REACT_EDITOR","shellQuote","parse","platform","output","execSync","toString","processNames","Object","keys","processName","indexOf","runningProcesses","split","map","line","replace","includes","error","VISUAL","EDITOR","printInstructions","title","WINDOWS_FIXIT_INSTRUCTIONS","FIXIT_INSTRUCTIONS","logger","info","chalk","bgBlue","white","bold","join","transformToAbsolutePathIfNeeded","pathName","isAbsolute","resolve","cwd","findRootForFile","projectRoots","absoluteFileName","find","root","absoluteRoot","startsWith","sep","editorWindowsLaunchPath","fs","existsSync","stdio","editorNames","values","editorImageNames","i","length","editorName","toLowerCase","results","pid","parseInt","trim","_childProcess","launchEditor","isNaN","concat","test","underline","kill","spawn","on","errorCode","message"],"sources":["../src/launchEditor.ts"],"sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\nimport {execSync, spawn, ChildProcess} from 'child_process';\nimport shellQuote from 'shell-quote';\nimport logger from './logger';\n\nfunction isTerminalEditor(editor: string) {\n switch (editor) {\n case 'vim':\n case 'emacs':\n case 'nano':\n return true;\n default:\n return false;\n }\n}\n\n// Map from full process name to binary that starts the process\n// We can't just re-use full process name, because it will spawn a new instance\n// of the app every time\nconst COMMON_EDITORS: Record<string, string> = {\n '/Applications/Atom.app/Contents/MacOS/Atom': 'atom',\n '/Applications/Atom Beta.app/Contents/MacOS/Atom Beta':\n '/Applications/Atom Beta.app/Contents/MacOS/Atom Beta',\n '/Applications/IntelliJ IDEA.app/Contents/MacOS/idea': 'idea',\n '/Applications/Sublime Text.app/Contents/MacOS/Sublime Text':\n '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl',\n '/Applications/Sublime Text 2.app/Contents/MacOS/Sublime Text 2':\n '/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl',\n '/Applications/Visual Studio Code.app/Contents/MacOS/Electron': 'code',\n '/Applications/WebStorm.app/Contents/MacOS/webstorm': 'webstorm',\n};\n\n// Map of process image name used to identify already running instances of the editor\n// And an editor id which is used to determine which arguments to add to the commandline\nconst COMMON_WINDOWS_EDITORS: Record<string, string> = {\n 'Code.exe': 'code',\n 'sublime_text.exe': 'subl',\n 'devenv.exe': 'devenv',\n 'notepad.exe': 'notepad',\n};\n\n// Transpiled version of: /^([a-zA-Z]+:)?[\\p{L}0-9@/.\\-_\\\\]+$/u\n// Non-transpiled version requires support for Unicode property regex. Allows\n// alphanumeric characters, periods, dashes, at signs, slashes, and underscores, with an optional drive prefix\nconst WINDOWS_FILE_NAME_WHITELIST =\n /^([a-zA-Z]+:)?(?:[\\x2D-9@-Z\\\\_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEF\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7B9\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF1A]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFF1]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D])+$/;\n\nfunction addWorkspaceToArgumentsIfExists(args: string[], workspace: string) {\n if (workspace) {\n args.unshift(workspace);\n }\n return args;\n}\n\nfunction getArgumentsForLineNumber(\n editor: string,\n fileName: string,\n lineNumber: number,\n workspace: any,\n) {\n switch (path.basename(editor)) {\n case 'vim':\n case 'mvim':\n return [fileName, `+${lineNumber}`];\n case 'atom':\n case 'Atom':\n case 'Atom Beta':\n case 'subl':\n case 'sublime':\n return [`${fileName}:${lineNumber}`];\n case 'joe':\n case 'emacs':\n case 'emacsclient':\n return [`+${lineNumber}`, fileName];\n case 'rmate':\n case 'mate':\n case 'mine':\n case 'webstorm':\n case 'wstorm':\n case 'appcode':\n case 'charm':\n case 'idea':\n return ['--line', String(lineNumber), fileName];\n case 'code':\n case 'code-insiders':\n return addWorkspaceToArgumentsIfExists(\n ['-g', `${fileName}:${lineNumber}`],\n workspace,\n );\n case 'devenv':\n return ['/EDIT', fileName];\n // For all others, drop the lineNumber until we have\n // a mapping above, since providing the lineNumber incorrectly\n // can result in errors or confusing behavior.\n default:\n return [fileName];\n }\n}\n\nfunction getArgumentsForFileName(\n editor: string,\n fileName: string,\n workspace: any,\n) {\n switch (path.basename(editor)) {\n case 'code':\n return addWorkspaceToArgumentsIfExists([fileName], workspace);\n case 'devenv':\n return ['/EDIT', fileName];\n // Every other editor just takes the filename as an argument\n default:\n return [fileName];\n }\n}\n\nfunction guessEditor() {\n // Explicit config always wins\n if (process.env.REACT_EDITOR) {\n return shellQuote.parse(process.env.REACT_EDITOR) as string[];\n }\n\n try {\n // Using `ps x` on OSX we can find out which editor is currently running.\n // Potentially we could use similar technique for Linux\n if (process.platform === 'darwin') {\n const output = execSync('ps x').toString();\n const processNames = Object.keys(COMMON_EDITORS);\n for (const processName of processNames) {\n if (output.indexOf(processName) !== -1) {\n return [COMMON_EDITORS[processName]];\n }\n }\n } else if (process.platform === 'win32') {\n const output = execSync(\n 'tasklist /NH /FO CSV /FI \"SESSIONNAME ne Services\"',\n ).toString();\n\n const runningProcesses = output\n .split('\\n')\n .map((line) => line.replace(/^\"|\".*\\r$/gm, ''));\n const processNames = Object.keys(COMMON_WINDOWS_EDITORS);\n for (const processName of processNames) {\n if (runningProcesses.includes(processName)) {\n return [COMMON_WINDOWS_EDITORS[processName]];\n }\n }\n }\n } catch (error) {\n // Ignore...\n }\n\n // Last resort, use old skool env vars\n if (process.env.VISUAL) {\n return [process.env.VISUAL];\n }\n if (process.env.EDITOR) {\n return [process.env.EDITOR];\n }\n\n return [];\n}\n\nfunction printInstructions(title: string) {\n const WINDOWS_FIXIT_INSTRUCTIONS = [\n ' To set it up, you can run something like \"SETX REACT_EDITOR code\"',\n ' which will set the environment variable in future shells,',\n ' then \"SET REACTEDITOR=code\" to set it in the current shell',\n ];\n\n const FIXIT_INSTRUCTIONS = [\n ' To set it up, you can add something like ',\n ' export REACT_EDITOR=atom to your ~/.bashrc or ~/.zshrc depending on ',\n ' which shell you use.',\n ];\n\n logger.info(\n [\n '',\n chalk.bgBlue.white.bold(` ${title} `),\n ' When you see Red Box with stack trace, you can click any ',\n ' stack frame to jump to the source file. The packager will launch your ',\n ' editor of choice. It will first look at REACT_EDITOR environment ',\n ' variable, then at EDITOR.',\n ...(process.platform === 'win32'\n ? WINDOWS_FIXIT_INSTRUCTIONS\n : FIXIT_INSTRUCTIONS),\n '',\n ].join('\\n'),\n );\n}\n\nfunction transformToAbsolutePathIfNeeded(pathName: string) {\n if (!path.isAbsolute(pathName)) {\n return path.resolve(process.cwd(), pathName);\n }\n return pathName;\n}\n\nfunction findRootForFile(\n projectRoots: ReadonlyArray<string>,\n fileName: string,\n) {\n const absoluteFileName = transformToAbsolutePathIfNeeded(fileName);\n return projectRoots.find((root) => {\n const absoluteRoot = transformToAbsolutePathIfNeeded(root);\n return absoluteFileName.startsWith(absoluteRoot + path.sep);\n });\n}\n\n// On windows, find the editor executable path even if its not in the users path\nfunction editorWindowsLaunchPath(editor: string) {\n if (fs.existsSync(editor)) {\n // Editor is a full path to an exe, we can just launch it\n return editor;\n }\n\n try {\n execSync(`where ${editor}`, {stdio: 'ignore'});\n // Editor is on the path, we can just launch it\n return editor;\n } catch (error) {\n // ignore\n }\n\n try {\n const editorNames = Object.values(COMMON_WINDOWS_EDITORS);\n const editorImageNames = Object.keys(COMMON_WINDOWS_EDITORS);\n for (let i = 0; i < editorNames.length; i++) {\n const editorName = editorNames[i];\n if (editor.toLowerCase() === editorName.toLowerCase()) {\n // An editor was guessed by guessEditor, but isn't part of the users path\n // Attempt to get the executable location from the running process\n const output = execSync(\n `tasklist /FO CSV /NH /FI \"IMAGENAME eq ${editorImageNames[i]}\"`,\n ).toString();\n\n const results = output.split(',');\n if (results[0] !== `\"${editorImageNames[i]}\"`) {\n // Failed to find a running instance...\n return editor;\n }\n\n const pid = parseInt(results[1].replace(/^\"|\"$/gm, ''), 10);\n return execSync(\n `powershell (Get-CimInstance Win32_Process -Filter \"ProcessId=${pid}\").ExecutablePath`,\n )\n .toString()\n .trim();\n }\n }\n } catch (error) {\n // ignore\n }\n\n // Just use what the user specified, it will probably fail,\n // but we will show some help text when it fails.\n return editor;\n}\n\nlet _childProcess: ChildProcess | null = null;\nfunction launchEditor(\n fileName: string,\n lineNumber: number,\n projectRoots: ReadonlyArray<string>,\n) {\n if (!fs.existsSync(fileName)) {\n return;\n }\n\n // Sanitize lineNumber to prevent malicious use on win32\n // via: https://github.com/nodejs/node/blob/c3bb4b1aa5e907d489619fb43d233c3336bfc03d/lib/child_process.js#L333\n if (lineNumber && isNaN(lineNumber)) {\n return;\n }\n\n let [editor, ...args] = guessEditor();\n if (!editor) {\n printInstructions('PRO TIP');\n return;\n }\n\n const workspace = findRootForFile(projectRoots, fileName);\n if (lineNumber) {\n args = args.concat(\n getArgumentsForLineNumber(editor, fileName, lineNumber, workspace),\n );\n } else {\n args = args.concat(getArgumentsForFileName(editor, fileName, workspace));\n }\n\n // cmd.exe on Windows is vulnerable to RCE attacks given a file name of the\n // form \"C:\\Users\\myusername\\Downloads\\& curl 172.21.93.52\". Use a whitelist\n // to validate user-provided file names. This doesn't cover the entire range\n // of valid file names but should cover almost all of them in practice.\n if (\n process.platform === 'win32' &&\n !WINDOWS_FILE_NAME_WHITELIST.test(fileName.trim())\n ) {\n logger.error(`Could not open ${path.basename(fileName)} in the editor.`);\n logger.info(\n 'When running on Windows, file names are checked against a whitelist ' +\n 'to protect against remote code execution attacks. File names may ' +\n 'consist only of alphanumeric characters (all languages), periods, ' +\n 'dashes, at signs, slashes, and underscores.',\n );\n return;\n }\n\n logger.info(\n `Opening ${chalk.underline(fileName)} with ${chalk.bold(editor)}`,\n );\n\n if (_childProcess && isTerminalEditor(editor)) {\n // There's an existing editor process already and it's attached\n // to the terminal, so go kill it. Otherwise two separate editor\n // instances attach to the stdin/stdout which gets confusing.\n _childProcess.kill('SIGKILL');\n }\n\n if (process.platform === 'win32') {\n // On Windows, launch the editor in a shell because spawn can only\n // launch .exe files.\n _childProcess = spawn(\n 'cmd.exe',\n ['/C', editorWindowsLaunchPath(editor)].concat(args),\n {\n stdio: 'inherit',\n },\n );\n } else {\n _childProcess = spawn(editor, args, {stdio: 'inherit'});\n }\n _childProcess.on('exit', (errorCode) => {\n _childProcess = null;\n\n if (errorCode) {\n logger.error('Your editor exited with an error!');\n printInstructions('Keep these instructions in mind:');\n }\n });\n\n _childProcess.on('error', (error) => {\n logger.error(error.message);\n printInstructions('How to fix:');\n });\n}\n\nexport default launchEditor;\n"],"mappings":"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"}
{"version":3,"names":["launchEditor","fileName","lineNumber","_watchFolders","launchEditorImpl","process","env","REACT_EDITOR"],"sources":["../src/launchEditor.ts"],"sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\nimport launchEditorImpl from 'launch-editor';\n\nexport default function launchEditor(\n fileName: string,\n lineNumber: number,\n _watchFolders?: ReadonlyArray<string>,\n): void {\n launchEditorImpl(`${fileName}:${lineNumber}`, process.env.REACT_EDITOR);\n}\n"],"mappings":";;;;;;AASA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA6C;AAT7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIe,SAASA,YAAY,CAClCC,QAAgB,EAChBC,UAAkB,EAClBC,aAAqC,EAC/B;EACN,IAAAC,uBAAgB,EAAE,GAAEH,QAAS,IAAGC,UAAW,EAAC,EAAEG,OAAO,CAACC,GAAG,CAACC,YAAY,CAAC;AACzE"}

@@ -8,3 +8,3 @@ "use strict";

function _sudoPrompt() {
const data = _interopRequireDefault(require("sudo-prompt"));
const data = _interopRequireDefault(require("@vscode/sudo-prompt"));
_sudoPrompt = function () {

@@ -11,0 +11,0 @@ return data;

@@ -1,1 +0,1 @@

{"version":3,"names":["runSudo","command","Promise","resolve","reject","sudo","exec","name","error"],"sources":["../src/runSudo.ts"],"sourcesContent":["import sudo from 'sudo-prompt';\n\nexport default function runSudo(command: string): Promise<void> {\n return new Promise((resolve, reject) => {\n sudo.exec(command, {name: 'React Native CLI'}, (error) => {\n if (error) {\n reject(error);\n }\n\n resolve();\n });\n });\n}\n"],"mappings":";;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA+B;AAEhB,SAASA,OAAO,CAACC,OAAe,EAAiB;EAC9D,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACtCC,qBAAI,CAACC,IAAI,CAACL,OAAO,EAAE;MAACM,IAAI,EAAE;IAAkB,CAAC,EAAGC,KAAK,IAAK;MACxD,IAAIA,KAAK,EAAE;QACTJ,MAAM,CAACI,KAAK,CAAC;MACf;MAEAL,OAAO,EAAE;IACX,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ"}
{"version":3,"names":["runSudo","command","Promise","resolve","reject","sudo","exec","name","error"],"sources":["../src/runSudo.ts"],"sourcesContent":["import sudo from '@vscode/sudo-prompt';\n\nexport default function runSudo(command: string): Promise<void> {\n return new Promise((resolve, reject) => {\n sudo.exec(command, {name: 'React Native CLI'}, (error) => {\n if (error) {\n reject(error);\n }\n\n resolve();\n });\n });\n}\n"],"mappings":";;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAuC;AAExB,SAASA,OAAO,CAACC,OAAe,EAAiB;EAC9D,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACtCC,qBAAI,CAACC,IAAI,CAACL,OAAO,EAAE;MAACM,IAAI,EAAE;IAAkB,CAAC,EAAGC,KAAK,IAAK;MACxD,IAAIA,KAAK,EAAE;QACTJ,MAAM,CAACI,KAAK,CAAC;MACf;MAEAL,OAAO,EAAE;IACX,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ"}
{
"name": "@react-native-community/cli-tools",
"version": "16.0.2",
"version": "17.0.0",
"license": "MIT",

@@ -10,2 +10,3 @@ "main": "build/index.js",

"dependencies": {
"@vscode/sudo-prompt": "^9.0.0",
"appdirsjs": "^1.2.4",

@@ -15,12 +16,10 @@ "chalk": "^4.1.2",

"find-up": "^5.0.0",
"launch-editor": "^2.9.1",
"mime": "^2.4.1",
"open": "^6.2.0",
"ora": "^5.4.1",
"prompts": "^2.4.2",
"semver": "^7.5.2",
"shell-quote": "^1.7.3",
"sudo-prompt": "^9.0.0"
"semver": "^7.5.2"
},
"devDependencies": {
"@react-native-community/cli-types": "16.0.2",
"@react-native-community/cli-types": "17.0.0",
"@types/mime": "^2.0.1",

@@ -42,3 +41,3 @@ "@types/node": "^18.0.0",

},
"gitHead": "feba14cf36de2fdefa41c7052841a5ee34c19084"
"gitHead": "a94e2df7882166b375fbfe2b4ff04a94e2af62d9"
}
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
declare function launchDebugger(url: string): Promise<void>;
export default launchDebugger;
//# sourceMappingURL=launchDebugger.d.ts.map
{"version":3,"file":"launchDebugger.d.ts","sourceRoot":"","sources":["../src/launchDebugger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,iBAAe,cAAc,CAAC,GAAG,EAAE,MAAM,iBAExC;AAED,eAAe,cAAc,CAAC"}
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _launchDefaultBrowser = _interopRequireDefault(require("./launchDefaultBrowser"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
async function launchDebugger(url) {
return (0, _launchDefaultBrowser.default)(url);
}
var _default = launchDebugger;
exports.default = _default;
//# sourceMappingURL=/Users/thymikee/Developer/oss/rncli/packages/cli-tools/build/launchDebugger.js.map
{"version":3,"names":["launchDebugger","url","launchDefaultBrowser"],"sources":["../src/launchDebugger.ts"],"sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\nimport launchDefaultBrowser from './launchDefaultBrowser';\n\nasync function launchDebugger(url: string) {\n return launchDefaultBrowser(url);\n}\n\nexport default launchDebugger;\n"],"mappings":";;;;;;AASA;AAA0D;AAT1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,eAAeA,cAAc,CAACC,GAAW,EAAE;EACzC,OAAO,IAAAC,6BAAoB,EAACD,GAAG,CAAC;AAClC;AAAC,eAEcD,cAAc;AAAA"}
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
declare function launchDefaultBrowser(url: string): Promise<void>;
export default launchDefaultBrowser;
//# sourceMappingURL=launchDefaultBrowser.d.ts.map
{"version":3,"file":"launchDefaultBrowser.d.ts","sourceRoot":"","sources":["../src/launchDefaultBrowser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,iBAAe,oBAAoB,CAAC,GAAG,EAAE,MAAM,iBAU9C;AAED,eAAe,oBAAoB,CAAC"}
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _open() {
const data = _interopRequireDefault(require("open"));
_open = function () {
return data;
};
return data;
}
var _throwIfNonAllowedProtocol = _interopRequireDefault(require("./throwIfNonAllowedProtocol"));
var _logger = _interopRequireDefault(require("./logger"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
async function launchDefaultBrowser(url) {
try {
(0, _throwIfNonAllowedProtocol.default)(url);
await (0, _open().default)(url);
} catch (err) {
if (err instanceof Error) {
_logger.default.error('Browser exited with error:', err.message);
}
}
}
var _default = launchDefaultBrowser;
exports.default = _default;
//# sourceMappingURL=/Users/thymikee/Developer/oss/rncli/packages/cli-tools/build/launchDefaultBrowser.js.map
{"version":3,"names":["launchDefaultBrowser","url","throwIfNonAllowedProtocol","open","err","Error","logger","error","message"],"sources":["../src/launchDefaultBrowser.ts"],"sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\nimport open from 'open';\nimport throwIfNonAllowedProtocol from './throwIfNonAllowedProtocol';\nimport logger from './logger';\n\nasync function launchDefaultBrowser(url: string) {\n try {\n throwIfNonAllowedProtocol(url);\n\n await open(url);\n } catch (err) {\n if (err instanceof Error) {\n logger.error('Browser exited with error:', err.message);\n }\n }\n}\n\nexport default launchDefaultBrowser;\n"],"mappings":";;;;;;AASA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;AACA;AAA8B;AAX9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,eAAeA,oBAAoB,CAACC,GAAW,EAAE;EAC/C,IAAI;IACF,IAAAC,kCAAyB,EAACD,GAAG,CAAC;IAE9B,MAAM,IAAAE,eAAI,EAACF,GAAG,CAAC;EACjB,CAAC,CAAC,OAAOG,GAAG,EAAE;IACZ,IAAIA,GAAG,YAAYC,KAAK,EAAE;MACxBC,eAAM,CAACC,KAAK,CAAC,4BAA4B,EAAEH,GAAG,CAACI,OAAO,CAAC;IACzD;EACF;AACF;AAAC,eAEcR,oBAAoB;AAAA"}
/**
* Check if a url uses an allowed protocol
*/
export default function throwIfNonAllowedProtocol(url: string): void;
//# sourceMappingURL=throwIfNonAllowedProtocol.d.ts.map
{"version":3,"file":"throwIfNonAllowedProtocol.d.ts","sourceRoot":"","sources":["../src/throwIfNonAllowedProtocol.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,GAAG,EAAE,MAAM,QAW5D"}
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = throwIfNonAllowedProtocol;
/**
* Check if a url uses an allowed protocol
*/
const ALLOWED_PROTOCOLS = ['http:', 'https:', 'devtools:', 'flipper:'];
function throwIfNonAllowedProtocol(url) {
const _url = new URL(url);
const urlProtocol = _url.protocol;
if (!ALLOWED_PROTOCOLS.includes(urlProtocol)) {
throw new Error(`Invalid url protocol ${urlProtocol}.\nAllowed protocols: ${ALLOWED_PROTOCOLS.join(', ')}`);
}
}
//# sourceMappingURL=/Users/thymikee/Developer/oss/rncli/packages/cli-tools/build/throwIfNonAllowedProtocol.js.map
{"version":3,"names":["ALLOWED_PROTOCOLS","throwIfNonAllowedProtocol","url","_url","URL","urlProtocol","protocol","includes","Error","join"],"sources":["../src/throwIfNonAllowedProtocol.ts"],"sourcesContent":["/**\n * Check if a url uses an allowed protocol\n */\n\nconst ALLOWED_PROTOCOLS = ['http:', 'https:', 'devtools:', 'flipper:'];\n\nexport default function throwIfNonAllowedProtocol(url: string) {\n const _url = new URL(url);\n const urlProtocol = _url.protocol;\n\n if (!ALLOWED_PROTOCOLS.includes(urlProtocol)) {\n throw new Error(\n `Invalid url protocol ${urlProtocol}.\\nAllowed protocols: ${ALLOWED_PROTOCOLS.join(\n ', ',\n )}`,\n );\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEA,MAAMA,iBAAiB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC;AAEvD,SAASC,yBAAyB,CAACC,GAAW,EAAE;EAC7D,MAAMC,IAAI,GAAG,IAAIC,GAAG,CAACF,GAAG,CAAC;EACzB,MAAMG,WAAW,GAAGF,IAAI,CAACG,QAAQ;EAEjC,IAAI,CAACN,iBAAiB,CAACO,QAAQ,CAACF,WAAW,CAAC,EAAE;IAC5C,MAAM,IAAIG,KAAK,CACZ,wBAAuBH,WAAY,yBAAwBL,iBAAiB,CAACS,IAAI,CAChF,IAAI,CACJ,EAAC,CACJ;EACH;AACF"}