You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
3.2 KiB
78 lines
3.2 KiB
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.closeJsInspector = closeJsInspector;
|
|
exports.openJsInspector = openJsInspector;
|
|
exports.queryAllInspectorAppsAsync = queryAllInspectorAppsAsync;
|
|
exports.queryInspectorAppAsync = queryInspectorAppAsync;
|
|
function _nodeFetch() {
|
|
const data = _interopRequireDefault(require("node-fetch"));
|
|
_nodeFetch = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _LaunchBrowser() {
|
|
const data = require("./LaunchBrowser");
|
|
_LaunchBrowser = function () {
|
|
return data;
|
|
};
|
|
return data;
|
|
}
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
let openingBrowserInstance = null;
|
|
async function openJsInspector(app) {
|
|
// To update devtoolsFrontendRev, find the full commit hash in the url:
|
|
// https://chromium.googlesource.com/chromium/src.git/+log/refs/tags/{CHROME_VERSION}/chrome/VERSION
|
|
//
|
|
// 1. Replace {CHROME_VERSION} with the target chrome version
|
|
// 2. Click the first log item in the webpage
|
|
// 3. The full commit hash is the desired revision
|
|
const devtoolsFrontendRev = 'd9568d04d7dd79269c5a655d7ada69650c5a8336'; // Chrome 100.0.4896.75
|
|
|
|
const urlBase = `https://chrome-devtools-frontend.appspot.com/serve_rev/@${devtoolsFrontendRev}/devtools_app.html`;
|
|
const ws = app.webSocketDebuggerUrl.replace(/^ws:\/\//, '');
|
|
const url = `${urlBase}?panel=console&ws=${encodeURIComponent(ws)}`;
|
|
await closeJsInspector();
|
|
openingBrowserInstance = await (0, _LaunchBrowser().launchBrowserAsync)(url);
|
|
}
|
|
async function closeJsInspector() {
|
|
var _openingBrowserInstan;
|
|
await ((_openingBrowserInstan = openingBrowserInstance) === null || _openingBrowserInstan === void 0 ? void 0 : _openingBrowserInstan.close());
|
|
openingBrowserInstance = null;
|
|
}
|
|
async function queryInspectorAppAsync(metroServerOrigin, appId) {
|
|
var _apps$find;
|
|
const apps = await queryAllInspectorAppsAsync(metroServerOrigin);
|
|
return (_apps$find = apps.find(app => app.description === appId)) !== null && _apps$find !== void 0 ? _apps$find : null;
|
|
}
|
|
async function queryAllInspectorAppsAsync(metroServerOrigin) {
|
|
const resp = await (0, _nodeFetch().default)(`${metroServerOrigin}/json/list`);
|
|
const apps = transformApps(await resp.json());
|
|
// Only use targets with better reloading support
|
|
return apps.filter(app => app.title === 'React Native Experimental (Improved Chrome Reloads)');
|
|
}
|
|
|
|
// The description of `React Native Experimental (Improved Chrome Reloads)` target is `don't use` from metro.
|
|
// This function tries to transform the unmeaningful description to appId
|
|
function transformApps(apps) {
|
|
const deviceIdToAppId = {};
|
|
for (const app of apps) {
|
|
if (app.description !== "don't use") {
|
|
const deviceId = app.id.split('-')[0];
|
|
const appId = app.description;
|
|
deviceIdToAppId[deviceId] = appId;
|
|
}
|
|
}
|
|
return apps.map(app => {
|
|
if (app.description === "don't use") {
|
|
var _deviceIdToAppId$devi;
|
|
const deviceId = app.id.split('-')[0];
|
|
app.description = (_deviceIdToAppId$devi = deviceIdToAppId[deviceId]) !== null && _deviceIdToAppId$devi !== void 0 ? _deviceIdToAppId$devi : app.description;
|
|
}
|
|
return app;
|
|
});
|
|
}
|
|
//# sourceMappingURL=JsInspector.js.map
|