quickgame-cli
Version:
quickgame cli
1 lines • 3.66 kB
JavaScript
var _utils=require("../utils"),adbCommander=require("adb-commander"),chromeLauncher=require("chrome-simple-launcher"),portfinder=require("portfinder"),request=require("request"),LOCAL_HOST="127.0.0.1",MIWEBVIEW_DEVTOOLS_PORT_REGEX=/((?:hybrid_)|(?:miui_))?webview_devtools_remote_(\d+)/,NETSTAT_STATUS_LISTENING="LISTENING",BROWSER_STRING="Browser",TITLE_STRING="title",WEBSOCKET_DEBUGGER_URL_STRING="webSocketDebuggerUrl",CHROME_INSPECTOR_URL="https://devtools.inf.miui.com/inspector/",CHROME_BUNDLED_INSPECTOR_URL="devtools://devtools/bundled/inspector.html",CHROME_INSPECTOR_QUERY="experiments=true&v8only=true",CHROME_INSPECTOR_QUERY_WEBVIEW="experiments=true",REMOTE_INSPECT_PORT=9229,useDesktopbundled=!0,printOnly=!0,isDebugWebview=!1;function getInspectablePageListURL(e){return"http://".concat(LOCAL_HOST,":").concat(e,"/json/list")}function getInspectableVersionURL(e){return"http://".concat(LOCAL_HOST,":").concat(e,"/json/version")}function getInspectorUrl(e){return!e||useDesktopbundled?CHROME_BUNDLED_INSPECTOR_URL:(e=61<e.split(".")[0]?"71.0.3578.132":"61.0.3163.128","".concat(CHROME_INSPECTOR_URL).concat(e,"/inspector.html"))}function forwardPort(n,e){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:REMOTE_INSPECT_PORT;portfinder.basePort=e,portfinder.getPortPromise().then(function(o){var e="adb -s ".concat(n," forward tcp:").concat(o," ").concat(isDebugWebview?"localabstract":"tcp",":").concat(r);return console.log(e),adbCommander.exeCommand(e).then(function(e){e.result;e.err?console.log("Port forward already setup."):console.log("Setup port forawrd."),getAvailablePages(o)})}).catch(function(){console.error("Can not find valid port forward.")})}function getAvailablePages(e){e=getInspectablePageListURL(e);request(e,function(e,o){if(e)return console.log("Error request inspectable pages: "+e);JSON.parse(o.body).map(function(e){var o=e[TITLE_STRING],e=e[WEBSOCKET_DEBUGGER_URL_STRING];e&&(e=e.replace("ws://","ws="),e="".concat(CHROME_BUNDLED_INSPECTOR_URL,"?").concat(isDebugWebview?CHROME_INSPECTOR_QUERY_WEBVIEW:CHROME_INSPECTOR_QUERY,"&").concat(e),console.log("Page: "+o),console.log("Debugger URL: "+e),console.log("Please copy the Debugger URL and paste it into Chrome to open."),printOnly||chromeLauncher.launch(e).then(function(){console.log("Debugger URL opened in Chrome.")}))})})}function getDebuggerUrl(){adbCommander.deviceList().then(function(e,o){if(!o){o=e.deviceList;if(0===o.length)throw new Error("No Device attached to PC.");return Promise.all(o.map(function(r){return new Promise(function(o,n){isDebugWebview?adbCommander.exeCommand("adb shell netstat -anl").then(function(e){e=e.result;if(!e)throw new Error("No network connections.");e.trim().split("\n").map(function(e){var o,n;-1!==e.search(NETSTAT_STATUS_LISTENING)&&(o=e.match(MIWEBVIEW_DEVTOOLS_PORT_REGEX))&&(n=o[2],adbCommander.exeCommand("adb -s ".concat(r," shell ps ").concat(n)).then(function(e){e=e.result,e=e.trim().split("\n")[1];e&&e.match(/com.miui.hybrid:Launcher(\d+)/)&&forwardPort(r,n,o[0])}))})}).then(function(e){return o(e)}).catch(function(e){return n(e)}):forwardPort(r,REMOTE_INSPECT_PORT,REMOTE_INSPECT_PORT)})}))}console.error("fail to execute adb devices")}).then(function(){console.log("Debugger setup.")}).catch(function(e){console.error("Error in generating debugger URL:",e.stack)})}module.exports=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};e.engineType&&!(0,_utils.isSupportEngineType)(e.engineType)||("web"===e.engineType&&(isDebugWebview=!0),adbCommander.exeCommand("adb forward --remove-all").then(function(e,o){o&&console.error("Error clear port forward"),getDebuggerUrl()}))};