{"version":3,"sources":["Diagnostics.js"],"names":["async","info","let","user","await","UserManager","getCurrentUserAsync","username","expoHome","UserSettings","dotExpoHomeDirectory","infoJsonFile","path","join","writeAsync","tempDir","Env","home","archivePath","Utils","ncpAsync","filter","filename","includes","settingsJsonFile","SETTINGS_FILE_NAME","settingsJson","readAsync","accessToken","auth","e","console","error","tar","create","file","gzip","cwd","relative","rimraf","sync","isNode","fs","createReadStream","Blob","readFileAsync","formData","append","response","Api","callMethodAsync","url","_uploadLogsAsync","options","Binaries","sourceBashLoginScriptsAsync","whichCommand","process","platform","result","spawnAsync","nodeVersion","_","trim","stdout","nodePath","npmVersion","npmPath","watchmanVersion","Watchman","unblockAndGetVersionAsync","watchmanPath","adbVersion","adbPath","env","PATH","shell","SHELL","os","homedir","nvmPath","NVM_PATH","lang","LANG","dirname","__dirname","memoryFree","_formatBytes","freemem","memoryTotal","totalmem","ip","address","hostname","xdeProcesses","child_process","execSync","toString","numXdeProcesses","watchmanProcesses","numWatchmanProcesses","ngrokProcesses","numNgrokProcesses","isXcodeInstalled","xcrunVersion","xcodebuildVersion","launchctlLimit","uploadLogs","limitLengthForIntercom","mapValues","value","length","startsWith","substring","getDeviceInfoAsync","promisify","readFile","bytes","toFixed"],"mappings":"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","file":"../Diagnostics.js","sourcesContent":["/**\n * @flow\n */\n\nimport _ from 'lodash';\nimport child_process from 'child_process';\nimport fs from 'fs';\nimport JsonFile from '@expo/json-file';\nimport os from 'os';\nimport path from 'path';\nimport promisify from 'util.promisify';\nimport rimraf from 'rimraf';\nimport spawnAsync from '@expo/spawn-async';\nimport tar from 'tar';\n\nimport ip from './ip';\nimport Api from './Api';\nimport * as Binaries from './Binaries';\nimport * as Env from './Env';\nimport FormData from './tools/FormData';\nimport { isNode } from './tools/EnvironmentHelper';\nimport UserManager from './User';\nimport UserSettings from './UserSettings';\nimport * as Utils from './Utils';\nimport * as Watchman from './Watchman';\n\nconst readFileAsync = promisify(fs.readFile);\n\nasync function _uploadLogsAsync(info: any): Promise {\n let user = await UserManager.getCurrentUserAsync();\n let username = user ? user.username : 'anonymous';\n\n // write info to file\n let expoHome = UserSettings.dotExpoHomeDirectory();\n let infoJsonFile = new JsonFile(path.join(expoHome, 'debug-info.json'));\n await infoJsonFile.writeAsync(info);\n\n // copy files to tempDir\n let tempDir = path.join(Env.home(), `${username}-diagnostics`);\n let archivePath = path.join(expoHome, 'diagnostics.tar.gz');\n await Utils.ncpAsync(expoHome, tempDir, {\n filter: filename => {\n if (\n filename.includes('diagnostics') ||\n filename.includes('starter-app-cache') ||\n filename.includes('android-apk-cache') ||\n filename.includes('ios-simulator-app-cache') ||\n filename.includes('state.json~')\n ) {\n return false;\n } else {\n return true;\n }\n },\n });\n\n // remove access token\n try {\n let settingsJsonFile = new JsonFile(path.join(tempDir, UserSettings.SETTINGS_FILE_NAME));\n let settingsJson = await settingsJsonFile.readAsync();\n settingsJson.accessToken = 'redacted';\n settingsJson.auth = 'redacted';\n await settingsJsonFile.writeAsync(settingsJson);\n } catch (e) {\n console.error(e);\n }\n\n // compress\n await tar.create({ file: archivePath, gzip: true, cwd: Env.home() }, [\n path.relative(Env.home(), tempDir),\n ]);\n rimraf.sync(tempDir);\n\n // upload\n let file;\n if (isNode()) {\n file = fs.createReadStream(archivePath);\n } else {\n file = new Blob([await readFileAsync(archivePath)]);\n }\n let formData = new FormData();\n formData.append('archive', file);\n\n let response = await Api.callMethodAsync('uploadDiagnostics', [{}], 'put', null, { formData });\n return response.url;\n}\n\n/* eslint-disable prefer-template */\n// From http://stackoverflow.com/questions/15900485/correct-way-to-convert-size-in-bytes-to-kb-mb-gb-in-javascript\nfunction _formatBytes(bytes: number): string {\n if (bytes >= 1000000000) {\n return (bytes / 1000000000).toFixed(2) + ' GB';\n } else if (bytes >= 1000000) {\n return (bytes / 1000000).toFixed(2) + ' MB';\n } else if (bytes >= 1000) {\n return (bytes / 1000).toFixed(2) + ' KB';\n } else if (bytes > 1) {\n return bytes + ' bytes';\n } else if (bytes === 1) {\n return bytes + '${bytes} byte';\n } else {\n return '0 bytes';\n }\n}\n/* eslint-enable prefer-template */\n\nexport async function getDeviceInfoAsync(options: any = {}): Promise {\n let info = {};\n\n await Binaries.sourceBashLoginScriptsAsync();\n let whichCommand = process.platform === 'win32' ? 'where' : 'which';\n\n try {\n let result = await spawnAsync('node', ['--version']);\n info.nodeVersion = _.trim(result.stdout);\n } catch (e) {}\n\n try {\n let result = await spawnAsync(whichCommand, ['node']);\n info.nodePath = _.trim(result.stdout);\n } catch (e) {}\n\n try {\n let result = await spawnAsync('npm', ['--version']);\n info.npmVersion = _.trim(result.stdout);\n } catch (e) {}\n\n try {\n let result = await spawnAsync(whichCommand, ['npm']);\n info.npmPath = _.trim(result.stdout);\n } catch (e) {}\n\n try {\n info.watchmanVersion = await Watchman.unblockAndGetVersionAsync();\n } catch (e) {}\n\n try {\n let result = await spawnAsync(whichCommand, ['watchman']);\n info.watchmanPath = _.trim(result.stdout);\n } catch (e) {}\n\n try {\n let result = await spawnAsync('adb', ['version']);\n info.adbVersion = _.trim(result.stdout);\n } catch (e) {}\n\n try {\n let result = await spawnAsync(whichCommand, ['adb']);\n info.adbPath = _.trim(result.stdout);\n } catch (e) {}\n\n info.path = process.env.PATH;\n info.shell = process.env.SHELL;\n info.home = os.homedir();\n info.nvmPath = process.env.NVM_PATH;\n info.lang = process.env.LANG;\n info.dirname = __dirname;\n info.memoryFree = _formatBytes(os.freemem());\n info.memoryTotal = _formatBytes(os.totalmem());\n info.ip = ip.address();\n info.hostname = os.hostname();\n\n // TODO: fix these commands on linux\n if (process.platform === 'darwin') {\n // || process.platform === 'linux') {\n try {\n info.xdeProcesses = _.trim(child_process.execSync('pgrep XDE | xargs ps -p').toString());\n } catch (e) {}\n\n try {\n info.numXdeProcesses = _.trim(child_process.execSync('pgrep XDE | wc -l').toString());\n } catch (e) {}\n\n try {\n info.watchmanProcesses = _.trim(\n child_process.execSync('pgrep watchman | xargs ps -p').toString()\n );\n } catch (e) {}\n\n try {\n info.numWatchmanProcesses = _.trim(\n child_process.execSync('pgrep watchman | wc -l').toString()\n );\n } catch (e) {}\n\n try {\n info.ngrokProcesses = _.trim(child_process.execSync('pgrep ngrok | xargs ps -p').toString());\n } catch (e) {}\n\n try {\n info.numNgrokProcesses = _.trim(child_process.execSync('pgrep ngrok | wc -l').toString());\n } catch (e) {}\n }\n\n if (process.platform === 'darwin') {\n // `xcrun` and `xcodebuild` will pop up a dialog if Xcode isn't installed\n if (Binaries.isXcodeInstalled()) {\n try {\n let result = await spawnAsync('xcrun', ['--version']);\n info.xcrunVersion = _.trim(result.stdout);\n } catch (e) {}\n\n try {\n let result = await spawnAsync('xcodebuild', ['-version']);\n info.xcodebuildVersion = _.trim(result.stdout);\n } catch (e) {}\n }\n\n try {\n let result = await spawnAsync('launchctl', ['limit']);\n info.launchctlLimit = _.trim(result.stdout);\n } catch (e) {}\n }\n\n // TODO: can probably get rid of these options if we remove Intercom\n if (options.uploadLogs) {\n info.url = await _uploadLogsAsync(info);\n }\n\n if (options.limitLengthForIntercom) {\n info = _.mapValues(info, value => {\n if (value && value.length > 100 && !value.startsWith('http')) {\n return value.substring(0, 100);\n } else {\n return value;\n }\n });\n }\n\n return info;\n}\n"],"sourceRoot":"/xdl/src"}