{"version":3,"sources":["jsdelivr-header.js","/npm/adb-toolkit@0.4.16/src/index.js"],"names":[],"mappings":"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","file":"/npm/adb-toolkit@0.4.16/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/adb-toolkit@0.4.16/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const shell = require('shelljs');\n\nconst adb = 'adb';\nvar options = {silent: true};\n\nfunction getDevices(opt) {\n  if (typeof opt !== 'undefined') {\n    options = opt;\n  }\n\n  var adbDevices = shell.exec(`${adb} devices -l`, options).stdout.trim().split('\\n');\n  adbDevices.shift();\n  var devices = [];\n\n  adbDevices.forEach(line => {\n    if (line.includes(\"unauthorized\")) {\n      const re =/([^\\s]+).+unauthorized\\s/gi;\n      var result = re.exec(line);\n      console.warn(`!!! Device unauthorized: ${result[1]}`);\n\n      // @todo\n    } else {\n      const re =/([^\\s]+).+device .+model:([^\\s]+)\\s/gi;\n      var result = re.exec(line);\n      devices.push(new ADBDevice(result[1], result[2]));\n    }\n  });\n  return devices;\n}\n\n\nfunction ADBDevice(serial, deviceProduct) {\n  this.serial = serial;\n  this.deviceProduct = deviceProduct;\n}\n\nADBDevice.prototype = {\n  getInfo: function() {\n    var props = this.getDeviceProps();\n  \n    return {\n      serial: this.serial,\n      android_version: props['ro.build.version.release'],\n      sdk: props['ro.build.version.sdk'],\n      device: props['ro.product.device'],\n      manufacturer: props['ro.product.manufacturer'],\n      model: props['ro.product.model'],\n      name: props['ro.product.name']\n      // @todo add friendly name: Oculus Go, Mirage Solo...\n    };\n  },\n  getPackageVersions: function(package) {\n    var output = this.getPackageInfo(package);\n    var result = [];\n\n    if (output.trim().length) {\n      const re = /versionCode=(\\d+).+[\\s\\S]+.+versionName=(.+)/gmi;\n      while (res = re.exec(output)) {\n        const versionCode = res[1];\n        const versionName = res[2];\n  \n        result.push({\n          versionCode: versionCode,\n          versionName: versionName\n        });\n      }\n    }\n    return result;\n  },\n  getPackages: function() {\n    return shell.exec(`${adb} -s ${this.serial} shell 'pm list packages -f'`, options).stdout\n      .trim()\n      .replace(/package:/gi, '')\n      .split('\\n');\n  },\n  getPackageInfo(package) {\n    return shell.exec(`${adb} -s ${this.serial} shell dumpsys package ${package}`, options).stdout;\n  },\n  getDeviceProps: function() {\n    var output = shell.exec(`${adb} -s ${this.serial} shell getprop`, options).stdout.trim();\n  \n    var props = {};\n    output.trim()\n      .split('\\n')\n      .map(x => x.replace(/(\\s|\\[|\\])/gi, '')\n      .split(':'))\n      .forEach(x => props[x[0]] = x[1]);\n    return props;\n  },\n  getBrowsers: function(browserCode) {\n    var browsersData = [\n      {\n        name: 'Firefox Reality',\n        code: 'fxr',\n        package: 'org.mozilla.vrbrowser',\n        //launchCmd: `${adb} -s ${this.serial} shell am start -a android.intent.action.VIEW -d \"{URL}\" org.mozilla.vrbrowser/org.mozilla.vrbrowser.VRBrowserActivity`\n        launchCmd: `${adb} -s ${this.serial} shell am start -n org.mozilla.vrbrowser/org.mozilla.vrbrowser.VRBrowserActivity --es url \"{URL}\" --ez dom.vr.require-gesture false --ez privacy.reduceTimerPrecision false`\n      },\n      {\n        name: 'Firefox Reality Dev',\n        code: 'fxrd',\n        package: 'org.mozilla.vrbrowser.dev',\n        //launchCmd: `${adb} -s ${this.serial} shell am start -a android.intent.action.VIEW -d \"{URL}\" org.mozilla.vrbrowser/org.mozilla.vrbrowser.VRBrowserActivity`\n        //launchCmd: `${adb} -s ${this.serial} shell am start -a android.intent.action.VIEW -d \"{URL}\" org.mozilla.vrbrowser.dev/org.mozilla.vrbrowser.VRBrowserActivity --ez dom.vr.require-gesture false --ez privacy.reduceTimerPrecision false`\n        launchCmd: `${adb} -s ${this.serial} shell am start -n org.mozilla.vrbrowser.dev/org.mozilla.vrbrowser.VRBrowserActivity --es url \"{URL}\" --ez dom.vr.require-gesture false --ez privacy.reduceTimerPrecision false`\n      },\n      {\n        name: 'Chrome',\n        code: 'chrome',\n        package: 'com.android.chrome',\n        launchCmd: `${adb} -s ${this.serial} shell am start -n com.android.chrome/org.chromium.chrome.browser.ChromeTabbedActivity -d \"{URL}\" --activity-clear-task -c com.google.intent.category.DAYDREAM`\n      },\n      {\n        name: 'Chrome Canary',\n        code: 'canary',\n        package: 'com.chrome.canary',\n        launchCmd: `${adb} -s ${this.serial} shell am start -n com.chrome.canary/org.chromium.chrome.browser.ChromeTabbedActivity -d \"{URL}\" --activity-clear-task -c com.google.intent.category.DAYDREAM`\n      },\n      {\n        name: 'Oculus Browser',\n        code: 'oculus',\n        package: 'com.oculus.browser', \n        launchCmd: `${adb} -s ${this.serial} shell am start -n \"com.oculus.vrshell/.MainActivity\" -d apk://com.oculus.browser -e uri \"{URL}\"`\n      }\n    ];\n  \n    if (typeof browserCode !== 'undefined') {\n      browsersData = browsersData.filter(browser => browser.code === browserCode);\n    }\n  \n    var browserList = [];\n\n    browsersData.forEach(browserData => {\n      var packageVersions = this.getPackageVersions(browserData.package)\n        .sort((a,b) => a.versionCode < b.versionCode);\n      if (packageVersions.length !== 0) {\n        browserList.push(Object.assign({}, browserData, packageVersions[0]));\n      }\n    });\n  \n    return browserList;\n  },\n  existPackage: function(packageFilename) {\n    return shell.exec(`${adb} -s ${this.serial} shell pm list packages|grep ${packageFilename}`).trim().length > 0;\n  },\n  installPackage: function(packageFilename, callback) {\n    const output = shell.exec(`${adb} -s ${this.serial} install ${packageFilename}`, {}, callback);\n  },\n  reversePorts: function(inPort, outPort, callback) {\n    const output = shell.exec(`${adb} -s ${this.serial} reverse tcp:${inPort} tcp:${outPort}`, {}, callback);\n  },\n  uninstallPackage: function(packageName, callback) {\n    const output = shell.exec(`${adb} -s ${this.serial} uninstall ${packageName}`, {}, callback);\n  },\n  launchUrl: function(url, selectedBrowser, extraParams) {\n    var browser = typeof selectedBrowser === 'undefined' ? this.getBrowsers()[0] : this.getBrowsers(selectedBrowser)[0];\n    if (!browser) {\n      // console.log('No browser found');\n      return false;\n    }\n\n    //var cmd = browser.launchCmd.replace('{URL}', url) + (extraParams ? extraParams : '');\n    var cmd = browser.launchCmd.replace('{URL}', url) + (extraParams ? extraParams : '');\n    if (options.debug) {\n      console.log('shell.exec: ', cmd);\n    }\n\n    const output = shell.exec(cmd, options);\n  },\n  forceStop: function(package, callback) {\n    const output = shell.exec(`${adb} -s ${this.serial} shell am force-stop ${package}`, {}, callback);\n  }\n}\n\nmodule.exports = {\n  getDevices: getDevices\n};"]}