Back out "Update adbkit and logcat to maintained librarys"
Summary: Original commit changeset: 2a23c0eaa12f Original Phabricator Diff: D45569652 The new lib causes weird log parsing https://fb.workplace.com/groups/flippersupport/permalink/1629943924152926/ Reviewed By: LukeDefeo, passy Differential Revision: D46390961 fbshipit-source-id: 7c9d0ca7fff2d9cb1ac1a309710f2348233a3471
This commit is contained in:
committed by
Facebook GitHub Bot
parent
bb9793019c
commit
e8e1a32e48
@@ -11,8 +11,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@iarna/toml": "^2.2.5",
|
"@iarna/toml": "^2.2.5",
|
||||||
"JSONStream": "^1.3.1",
|
"JSONStream": "^1.3.1",
|
||||||
"@u4/adbkit": "^4.1.18",
|
"adbkit": "^2.11.1",
|
||||||
"@u4/adbkit-logcat": "^2.1.2",
|
"adbkit-logcat": "^2.0.1",
|
||||||
"archiver": "^5.3.1",
|
"archiver": "^5.3.1",
|
||||||
"async-mutex": "^0.3.2",
|
"async-mutex": "^0.3.2",
|
||||||
"axios": "^0.26.0",
|
"axios": "^0.26.0",
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import CertificateProvider from '../../utils/CertificateProvider';
|
import CertificateProvider from '../../utils/CertificateProvider';
|
||||||
import {Client} from '@u4/adbkit';
|
import {Client} from 'adbkit';
|
||||||
import * as androidUtil from './androidContainerUtility';
|
import * as androidUtil from './androidContainerUtility';
|
||||||
import {csrFileName, extractAppNameFromCSR} from '../../utils/certificateUtils';
|
import {csrFileName, extractAppNameFromCSR} from '../../utils/certificateUtils';
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ export default class AndroidCertificateProvider extends CertificateProvider {
|
|||||||
const appName = await extractAppNameFromCSR(csr);
|
const appName = await extractAppNameFromCSR(csr);
|
||||||
const deviceId = await this.getTargetDeviceId(appName, destination, csr);
|
const deviceId = await this.getTargetDeviceId(appName, destination, csr);
|
||||||
await androidUtil.push(
|
await androidUtil.push(
|
||||||
this.adb.getDevice(deviceId),
|
this.adb,
|
||||||
deviceId,
|
deviceId,
|
||||||
appName,
|
appName,
|
||||||
destination + filename,
|
destination + filename,
|
||||||
@@ -113,7 +113,7 @@ export default class AndroidCertificateProvider extends CertificateProvider {
|
|||||||
csr: string,
|
csr: string,
|
||||||
): Promise<{isMatch: boolean; foundCsr: string}> {
|
): Promise<{isMatch: boolean; foundCsr: string}> {
|
||||||
const deviceCsr = await androidUtil.pull(
|
const deviceCsr = await androidUtil.pull(
|
||||||
this.adb.getDevice(deviceId),
|
this.adb,
|
||||||
deviceId,
|
deviceId,
|
||||||
processName,
|
processName,
|
||||||
directory + csrFileName,
|
directory + csrFileName,
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
* @format
|
* @format
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import adb, {DeviceClient as ADBDeviceClient, PullTransfer} from '@u4/adbkit';
|
import adb, {util, Client as ADBClient, PullTransfer} from 'adbkit';
|
||||||
|
import {Reader} from 'adbkit-logcat';
|
||||||
import {createWriteStream} from 'fs';
|
import {createWriteStream} from 'fs';
|
||||||
import type {DeviceDebugData, DeviceType} from 'flipper-common';
|
import type {DeviceDebugData, DeviceType} from 'flipper-common';
|
||||||
import {spawn} from 'child_process';
|
import {spawn} from 'child_process';
|
||||||
@@ -26,8 +27,10 @@ export default class AndroidDevice
|
|||||||
extends ServerDevice
|
extends ServerDevice
|
||||||
implements DebuggableDevice
|
implements DebuggableDevice
|
||||||
{
|
{
|
||||||
private adbClient: ADBDeviceClient;
|
adb: ADBClient;
|
||||||
|
pidAppMapping: {[key: number]: string} = {};
|
||||||
private recordingProcess?: Promise<string>;
|
private recordingProcess?: Promise<string>;
|
||||||
|
reader?: Reader;
|
||||||
readonly logListener: AndroidLogListener;
|
readonly logListener: AndroidLogListener;
|
||||||
readonly crashWatcher: AndroidCrashWatcher;
|
readonly crashWatcher: AndroidCrashWatcher;
|
||||||
|
|
||||||
@@ -36,7 +39,7 @@ export default class AndroidDevice
|
|||||||
serial: string,
|
serial: string,
|
||||||
deviceType: DeviceType,
|
deviceType: DeviceType,
|
||||||
title: string,
|
title: string,
|
||||||
adb: ADBDeviceClient,
|
adb: ADBClient,
|
||||||
abiList: Array<string>,
|
abiList: Array<string>,
|
||||||
sdkVersion: string,
|
sdkVersion: string,
|
||||||
specs: DeviceSpec[] = [],
|
specs: DeviceSpec[] = [],
|
||||||
@@ -55,12 +58,13 @@ export default class AndroidDevice
|
|||||||
screenshotAvailable: false,
|
screenshotAvailable: false,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
this.adbClient = adb;
|
this.adb = adb;
|
||||||
|
|
||||||
this.logListener = new AndroidLogListener(
|
this.logListener = new AndroidLogListener(
|
||||||
() => this.connected,
|
() => this.connected,
|
||||||
(logEntry) => this.addLogEntry(logEntry),
|
(logEntry) => this.addLogEntry(logEntry),
|
||||||
this.adbClient,
|
this.adb,
|
||||||
|
this.serial,
|
||||||
);
|
);
|
||||||
// It is OK not to await the start of the log listener. We just spawn it and handle errors internally.
|
// It is OK not to await the start of the log listener. We just spawn it and handle errors internally.
|
||||||
this.logListener
|
this.logListener
|
||||||
@@ -83,7 +87,9 @@ export default class AndroidDevice
|
|||||||
|
|
||||||
reverse(ports: number[]): Promise<void> {
|
reverse(ports: number[]): Promise<void> {
|
||||||
return Promise.all(
|
return Promise.all(
|
||||||
ports.map((port) => this.adbClient.reverse(`tcp:${port}`, `tcp:${port}`)),
|
ports.map((port) =>
|
||||||
|
this.adb.reverse(this.serial, `tcp:${port}`, `tcp:${port}`),
|
||||||
|
),
|
||||||
).then(() => {
|
).then(() => {
|
||||||
return;
|
return;
|
||||||
});
|
});
|
||||||
@@ -97,13 +103,13 @@ export default class AndroidDevice
|
|||||||
|
|
||||||
async navigateToLocation(location: string) {
|
async navigateToLocation(location: string) {
|
||||||
const shellCommand = `am start ${encodeURI(location)}`;
|
const shellCommand = `am start ${encodeURI(location)}`;
|
||||||
this.adbClient.shell(shellCommand);
|
this.adb.shell(this.serial, shellCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
async screenshot(): Promise<Buffer> {
|
async screenshot(): Promise<Buffer> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.adbClient
|
this.adb
|
||||||
.screencap()
|
.screencap(this.serial)
|
||||||
.then((stream) => {
|
.then((stream) => {
|
||||||
const chunks: Array<Buffer> = [];
|
const chunks: Array<Buffer> = [];
|
||||||
stream
|
stream
|
||||||
@@ -123,7 +129,7 @@ export default class AndroidDevice
|
|||||||
console.debug('AndroidDevice.setIntoPermissiveMode', this.serial);
|
console.debug('AndroidDevice.setIntoPermissiveMode', this.serial);
|
||||||
try {
|
try {
|
||||||
try {
|
try {
|
||||||
await this.adbClient.root();
|
await this.adb.root(this.serial);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (
|
if (
|
||||||
!(e instanceof Error) ||
|
!(e instanceof Error) ||
|
||||||
@@ -173,15 +179,15 @@ export default class AndroidDevice
|
|||||||
}
|
}
|
||||||
|
|
||||||
async executeShell(command: string): Promise<string> {
|
async executeShell(command: string): Promise<string> {
|
||||||
return await this.adbClient
|
return await this.adb
|
||||||
.shell(command)
|
.shell(this.serial, command)
|
||||||
.then(adb.util.readAll)
|
.then(adb.util.readAll)
|
||||||
.then((output: Buffer) => output.toString().trim());
|
.then((output: Buffer) => output.toString().trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
private async executeShellOrDie(command: string | string[]): Promise<void> {
|
private async executeShellOrDie(command: string | string[]): Promise<void> {
|
||||||
const output = await this.adbClient
|
const output = await this.adb
|
||||||
.shell(command)
|
.shell(this.serial, command)
|
||||||
.then(adb.util.readAll)
|
.then(adb.util.readAll)
|
||||||
.then((output: Buffer) => output.toString().trim());
|
.then((output: Buffer) => output.toString().trim());
|
||||||
if (output) {
|
if (output) {
|
||||||
@@ -190,16 +196,16 @@ export default class AndroidDevice
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async getSdkVersion(): Promise<number> {
|
private async getSdkVersion(): Promise<number> {
|
||||||
return await this.adbClient
|
return await this.adb
|
||||||
.shell('getprop ro.build.version.sdk')
|
.shell(this.serial, 'getprop ro.build.version.sdk')
|
||||||
.then(adb.util.readAll)
|
.then(adb.util.readAll)
|
||||||
.then((output) => Number(output.toString().trim()));
|
.then((output) => Number(output.toString().trim()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async isValidFile(filePath: string): Promise<boolean> {
|
private async isValidFile(filePath: string): Promise<boolean> {
|
||||||
const sdkVersion = await this.getSdkVersion();
|
const sdkVersion = await this.getSdkVersion();
|
||||||
const fileSize = await this.adbClient
|
const fileSize = await this.adb
|
||||||
.shell(`ls -l "${filePath}"`)
|
.shell(this.serial, `ls -l "${filePath}"`)
|
||||||
.then(adb.util.readAll)
|
.then(adb.util.readAll)
|
||||||
.then((output: Buffer) => output.toString().trim().split(' '))
|
.then((output: Buffer) => output.toString().trim().split(' '))
|
||||||
.then((x) => x.filter(Boolean))
|
.then((x) => x.filter(Boolean))
|
||||||
@@ -216,7 +222,7 @@ export default class AndroidDevice
|
|||||||
let newSize: string | undefined;
|
let newSize: string | undefined;
|
||||||
try {
|
try {
|
||||||
const sizeString = (
|
const sizeString = (
|
||||||
await adb.util.readAll(await this.adbClient.shell('wm size'))
|
await adb.util.readAll(await this.adb.shell(this.serial, 'wm size'))
|
||||||
).toString();
|
).toString();
|
||||||
const size = sizeString.split(' ').slice(-1).pop()?.split('x');
|
const size = sizeString.split(' ').slice(-1).pop()?.split('x');
|
||||||
if (size && size.length === 2) {
|
if (size && size.length === 2) {
|
||||||
@@ -233,8 +239,8 @@ export default class AndroidDevice
|
|||||||
}
|
}
|
||||||
const sizeArg = newSize ? `--size ${newSize}` : '';
|
const sizeArg = newSize ? `--size ${newSize}` : '';
|
||||||
const cmd = `screenrecord ${sizeArg} "${recordingLocation}"`;
|
const cmd = `screenrecord ${sizeArg} "${recordingLocation}"`;
|
||||||
this.recordingProcess = this.adbClient
|
this.recordingProcess = this.adb
|
||||||
.shell(cmd)
|
.shell(this.serial, cmd)
|
||||||
.then(adb.util.readAll)
|
.then(adb.util.readAll)
|
||||||
.then(async (output) => {
|
.then(async (output) => {
|
||||||
const isValid = await this.isValidFile(recordingLocation);
|
const isValid = await this.isValidFile(recordingLocation);
|
||||||
@@ -248,7 +254,8 @@ export default class AndroidDevice
|
|||||||
.then(
|
.then(
|
||||||
(_) =>
|
(_) =>
|
||||||
new Promise(async (resolve, reject) => {
|
new Promise(async (resolve, reject) => {
|
||||||
const stream: PullTransfer = await this.adbClient.pull(
|
const stream: PullTransfer = await this.adb.pull(
|
||||||
|
this.serial,
|
||||||
recordingLocation,
|
recordingLocation,
|
||||||
);
|
);
|
||||||
stream.on('end', resolve as () => void);
|
stream.on('end', resolve as () => void);
|
||||||
@@ -267,14 +274,14 @@ export default class AndroidDevice
|
|||||||
if (!recordingProcess) {
|
if (!recordingProcess) {
|
||||||
return Promise.reject(new Error('Recording was not properly started'));
|
return Promise.reject(new Error('Recording was not properly started'));
|
||||||
}
|
}
|
||||||
await this.adbClient.shell(`pkill -l2 screenrecord`);
|
await this.adb.shell(this.serial, `pkill -l2 screenrecord`);
|
||||||
const destination = await recordingProcess;
|
const destination = await recordingProcess;
|
||||||
this.recordingProcess = undefined;
|
this.recordingProcess = undefined;
|
||||||
return destination;
|
return destination;
|
||||||
}
|
}
|
||||||
|
|
||||||
async forwardPort(local: string, remote: string): Promise<boolean> {
|
async forwardPort(local: string, remote: string): Promise<boolean> {
|
||||||
return this.adbClient.forward(local, remote);
|
return this.adb.forward(this.serial, local, remote);
|
||||||
}
|
}
|
||||||
|
|
||||||
disconnect() {
|
disconnect() {
|
||||||
@@ -286,7 +293,7 @@ export default class AndroidDevice
|
|||||||
|
|
||||||
async installApp(apkPath: string) {
|
async installApp(apkPath: string) {
|
||||||
console.log(`Installing app with adb ${apkPath}`);
|
console.log(`Installing app with adb ${apkPath}`);
|
||||||
await this.adbClient.install(apkPath);
|
await this.adb.install(this.serial, apkPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
async readFlipperFolderForAllApps(): Promise<DeviceDebugData[]> {
|
async readFlipperFolderForAllApps(): Promise<DeviceDebugData[]> {
|
||||||
@@ -294,9 +301,9 @@ export default class AndroidDevice
|
|||||||
'AndroidDevice.readFlipperFolderForAllApps',
|
'AndroidDevice.readFlipperFolderForAllApps',
|
||||||
this.info.serial,
|
this.info.serial,
|
||||||
);
|
);
|
||||||
const output = await this.adbClient
|
const output = await this.adb
|
||||||
.shell('pm list packages -3 -e')
|
.shell(this.info.serial, 'pm list packages -3 -e')
|
||||||
.then(adb.util.readAll)
|
.then(util.readAll)
|
||||||
.then((buffer) => buffer.toString());
|
.then((buffer) => buffer.toString());
|
||||||
|
|
||||||
const appIds = output
|
const appIds = output
|
||||||
@@ -315,7 +322,7 @@ export default class AndroidDevice
|
|||||||
const appsCommandsResults = await Promise.all(
|
const appsCommandsResults = await Promise.all(
|
||||||
appIds.map(async (appId): Promise<DeviceDebugData | undefined> => {
|
appIds.map(async (appId): Promise<DeviceDebugData | undefined> => {
|
||||||
const sonarDirFilePaths = await executeCommandAsApp(
|
const sonarDirFilePaths = await executeCommandAsApp(
|
||||||
this.adbClient,
|
this.adb,
|
||||||
this.info.serial,
|
this.info.serial,
|
||||||
appId,
|
appId,
|
||||||
`find /data/data/${appId}/files/sonar -type f`,
|
`find /data/data/${appId}/files/sonar -type f`,
|
||||||
@@ -362,7 +369,7 @@ export default class AndroidDevice
|
|||||||
return {
|
return {
|
||||||
path: filePath,
|
path: filePath,
|
||||||
data: await pull(
|
data: await pull(
|
||||||
this.adbClient,
|
this.adb,
|
||||||
this.info.serial,
|
this.info.serial,
|
||||||
appId,
|
appId,
|
||||||
filePath,
|
filePath,
|
||||||
@@ -372,7 +379,7 @@ export default class AndroidDevice
|
|||||||
);
|
);
|
||||||
|
|
||||||
const sonarDirContentWithStatsCommandPromise = executeCommandAsApp(
|
const sonarDirContentWithStatsCommandPromise = executeCommandAsApp(
|
||||||
this.adbClient,
|
this.adb,
|
||||||
this.info.serial,
|
this.info.serial,
|
||||||
appId,
|
appId,
|
||||||
`ls -al /data/data/${appId}/files/sonar`,
|
`ls -al /data/data/${appId}/files/sonar`,
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
* @format
|
* @format
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type {DeviceClient as ADBClient} from '@u4/adbkit';
|
import type {Client as ADBClient} from 'adbkit';
|
||||||
import {Priority, Reader} from '@u4/adbkit-logcat';
|
import {Priority} from 'adbkit-logcat';
|
||||||
import {DeviceLogEntry, DeviceLogLevel} from 'flipper-common';
|
import {DeviceLogEntry, DeviceLogLevel} from 'flipper-common';
|
||||||
import {DeviceListener} from '../../utils/DeviceListener';
|
import {DeviceListener} from '../../utils/DeviceListener';
|
||||||
|
|
||||||
@@ -17,13 +17,14 @@ export class AndroidLogListener extends DeviceListener {
|
|||||||
isDeviceConnected: () => boolean,
|
isDeviceConnected: () => boolean,
|
||||||
private onNewLogEntry: (logEntry: DeviceLogEntry) => void,
|
private onNewLogEntry: (logEntry: DeviceLogEntry) => void,
|
||||||
private readonly adb: ADBClient,
|
private readonly adb: ADBClient,
|
||||||
|
private readonly serial: string,
|
||||||
) {
|
) {
|
||||||
super(isDeviceConnected);
|
super(isDeviceConnected);
|
||||||
}
|
}
|
||||||
protected async startListener() {
|
protected async startListener() {
|
||||||
const reader = (await this.adb.openLogcat({
|
const reader = await this.adb.openLogcat(this.serial, {
|
||||||
clear: true,
|
clear: true,
|
||||||
})) as Reader;
|
});
|
||||||
|
|
||||||
let gracefulShutdown = false;
|
let gracefulShutdown = false;
|
||||||
let lastKnownError: Error | undefined;
|
let lastKnownError: Error | undefined;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
import {DeviceType} from 'flipper-common';
|
import {DeviceType} from 'flipper-common';
|
||||||
import AndroidDevice from './AndroidDevice';
|
import AndroidDevice from './AndroidDevice';
|
||||||
import {DeviceClient} from '@u4/adbkit';
|
import {Client as ADBClient} from 'adbkit';
|
||||||
import {FlipperServerImpl} from '../../FlipperServerImpl';
|
import {FlipperServerImpl} from '../../FlipperServerImpl';
|
||||||
|
|
||||||
export default class KaiOSDevice extends AndroidDevice {
|
export default class KaiOSDevice extends AndroidDevice {
|
||||||
@@ -18,7 +18,7 @@ export default class KaiOSDevice extends AndroidDevice {
|
|||||||
serial: string,
|
serial: string,
|
||||||
deviceType: DeviceType,
|
deviceType: DeviceType,
|
||||||
title: string,
|
title: string,
|
||||||
adb: DeviceClient,
|
adb: ADBClient,
|
||||||
abiList: Array<string>,
|
abiList: Array<string>,
|
||||||
sdkVersion: string,
|
sdkVersion: string,
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
import {reportPlatformFailures} from 'flipper-common';
|
import {reportPlatformFailures} from 'flipper-common';
|
||||||
import {execFile} from 'promisify-child-process';
|
import {execFile} from 'promisify-child-process';
|
||||||
import adbkit, {Client as ADBClient} from '@u4/adbkit';
|
|
||||||
import path from 'path';
|
|
||||||
import adbConfig from './adbConfig';
|
import adbConfig from './adbConfig';
|
||||||
|
import adbkit, {Client} from 'adbkit';
|
||||||
|
import path from 'path';
|
||||||
|
|
||||||
type Config = {
|
type Config = {
|
||||||
androidHome: string;
|
androidHome: string;
|
||||||
@@ -23,7 +23,7 @@ type Config = {
|
|||||||
|
|
||||||
export async function initializeAdbClient(
|
export async function initializeAdbClient(
|
||||||
config: Config,
|
config: Config,
|
||||||
): Promise<ADBClient | void> {
|
): Promise<Client | void> {
|
||||||
const adbClient = await reportPlatformFailures(
|
const adbClient = await reportPlatformFailures(
|
||||||
createClient(config),
|
createClient(config),
|
||||||
'createADBClient',
|
'createADBClient',
|
||||||
@@ -39,8 +39,8 @@ export async function initializeAdbClient(
|
|||||||
/* Adbkit will attempt to start the adb server if it's not already running,
|
/* Adbkit will attempt to start the adb server if it's not already running,
|
||||||
however, it sometimes fails with ENOENT errors. So instead, we start it
|
however, it sometimes fails with ENOENT errors. So instead, we start it
|
||||||
manually before requesting a client. */
|
manually before requesting a client. */
|
||||||
async function createClient(config: Config): Promise<ADBClient> {
|
async function createClient(config: Config): Promise<Client> {
|
||||||
return reportPlatformFailures<ADBClient>(
|
return reportPlatformFailures<Client>(
|
||||||
startAdbServer(config.androidHome).then(() =>
|
startAdbServer(config.androidHome).then(() =>
|
||||||
adbkit.createClient(adbConfig(config.adbKitSettings)),
|
adbkit.createClient(adbConfig(config.adbKitSettings)),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import {UnsupportedError} from 'flipper-common';
|
import {UnsupportedError} from 'flipper-common';
|
||||||
import adbkit, {DeviceClient} from '@u4/adbkit';
|
import adbkit, {Client} from 'adbkit';
|
||||||
|
|
||||||
const allowedAppNameRegex = /^[\w.-]+$/;
|
const allowedAppNameRegex = /^[\w.-]+$/;
|
||||||
const appNotApplicationRegex = /not an application/;
|
const appNotApplicationRegex = /not an application/;
|
||||||
@@ -23,7 +23,7 @@ export type FilePath = string;
|
|||||||
export type FileContent = string;
|
export type FileContent = string;
|
||||||
|
|
||||||
export async function push(
|
export async function push(
|
||||||
client: DeviceClient,
|
client: Client,
|
||||||
deviceId: string,
|
deviceId: string,
|
||||||
app: string,
|
app: string,
|
||||||
filepath: string,
|
filepath: string,
|
||||||
@@ -36,7 +36,7 @@ export async function push(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function pull(
|
export async function pull(
|
||||||
client: DeviceClient,
|
client: Client,
|
||||||
deviceId: string,
|
deviceId: string,
|
||||||
app: string,
|
app: string,
|
||||||
path: string,
|
path: string,
|
||||||
@@ -81,7 +81,7 @@ class RunAsError extends Error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _push(
|
function _push(
|
||||||
deviceClient: DeviceClient,
|
client: Client,
|
||||||
deviceId: string,
|
deviceId: string,
|
||||||
app: AppName,
|
app: AppName,
|
||||||
filename: FilePath,
|
filename: FilePath,
|
||||||
@@ -91,12 +91,12 @@ function _push(
|
|||||||
// TODO: this is sensitive to escaping issues, can we leverage client.push instead?
|
// TODO: this is sensitive to escaping issues, can we leverage client.push instead?
|
||||||
// https://www.npmjs.com/package/adbkit#pushing-a-file-to-all-connected-devices
|
// https://www.npmjs.com/package/adbkit#pushing-a-file-to-all-connected-devices
|
||||||
const command = `echo "${contents}" > '${filename}' && chmod 644 '${filename}'`;
|
const command = `echo "${contents}" > '${filename}' && chmod 644 '${filename}'`;
|
||||||
return executeCommandAsApp(deviceClient, deviceId, app, command)
|
return executeCommandAsApp(client, deviceId, app, command)
|
||||||
.then((_) => undefined)
|
.then((_) => undefined)
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
if (error instanceof RunAsError) {
|
if (error instanceof RunAsError) {
|
||||||
// Fall back to running the command directly. This will work if adb is running as root.
|
// Fall back to running the command directly. This will work if adb is running as root.
|
||||||
executeCommandWithSu(deviceClient, deviceId, app, command, error);
|
executeCommandWithSu(client, deviceId, app, command, error);
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
throw error;
|
throw error;
|
||||||
@@ -104,32 +104,24 @@ function _push(
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _pull(
|
function _pull(
|
||||||
deviceClient: DeviceClient,
|
client: Client,
|
||||||
deviceId: string,
|
deviceId: string,
|
||||||
app: AppName,
|
app: AppName,
|
||||||
path: FilePath,
|
path: FilePath,
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const command = `cat '${path}'`;
|
const command = `cat '${path}'`;
|
||||||
return executeCommandAsApp(deviceClient, deviceId, app, command).catch(
|
return executeCommandAsApp(client, deviceId, app, command).catch((error) => {
|
||||||
(error) => {
|
|
||||||
if (error instanceof RunAsError) {
|
if (error instanceof RunAsError) {
|
||||||
// Fall back to running the command directly. This will work if adb is running as root.
|
// Fall back to running the command directly. This will work if adb is running as root.
|
||||||
return executeCommandWithSu(
|
return executeCommandWithSu(client, deviceId, app, command, error);
|
||||||
deviceClient,
|
|
||||||
deviceId,
|
|
||||||
app,
|
|
||||||
command,
|
|
||||||
error,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
throw error;
|
throw error;
|
||||||
},
|
});
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Keep this method private since it relies on pre-validated arguments
|
// Keep this method private since it relies on pre-validated arguments
|
||||||
export function executeCommandAsApp(
|
export function executeCommandAsApp(
|
||||||
client: DeviceClient,
|
client: Client,
|
||||||
deviceId: string,
|
deviceId: string,
|
||||||
app: string,
|
app: string,
|
||||||
command: string,
|
command: string,
|
||||||
@@ -144,7 +136,7 @@ export function executeCommandAsApp(
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function executeCommandWithSu(
|
async function executeCommandWithSu(
|
||||||
client: DeviceClient,
|
client: Client,
|
||||||
deviceId: string,
|
deviceId: string,
|
||||||
app: string,
|
app: string,
|
||||||
command: string,
|
command: string,
|
||||||
@@ -159,14 +151,14 @@ async function executeCommandWithSu(
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _executeCommandWithRunner(
|
function _executeCommandWithRunner(
|
||||||
client: DeviceClient,
|
client: Client,
|
||||||
deviceId: string,
|
deviceId: string,
|
||||||
app: string,
|
app: string,
|
||||||
command: string,
|
command: string,
|
||||||
runner: string,
|
runner: string,
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
return client
|
return client
|
||||||
.shell(`echo '${command}' | ${runner}`)
|
.shell(deviceId, `echo '${command}' | ${runner}`)
|
||||||
.then(adbkit.util.readAll)
|
.then(adbkit.util.readAll)
|
||||||
.then((buffer) => buffer.toString())
|
.then((buffer) => buffer.toString())
|
||||||
.then((output) => {
|
.then((output) => {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
import AndroidDevice from './AndroidDevice';
|
import AndroidDevice from './AndroidDevice';
|
||||||
import KaiOSDevice from './KaiOSDevice';
|
import KaiOSDevice from './KaiOSDevice';
|
||||||
import child_process from 'child_process';
|
import child_process from 'child_process';
|
||||||
import {Client as ADBClient, Device} from '@u4/adbkit';
|
import {Client as ADBClient, Device} from 'adbkit';
|
||||||
import {join} from 'path';
|
import {join} from 'path';
|
||||||
import {FlipperServerImpl} from '../../FlipperServerImpl';
|
import {FlipperServerImpl} from '../../FlipperServerImpl';
|
||||||
import {notNull} from '../../utils/typeUtils';
|
import {notNull} from '../../utils/typeUtils';
|
||||||
@@ -26,7 +26,10 @@ export class AndroidDeviceManager {
|
|||||||
this.certificateProvider = new AndroidCertificateProvider(this.adbClient);
|
this.certificateProvider = new AndroidCertificateProvider(this.adbClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
private createDevice(device: Device): Promise<AndroidDevice | undefined> {
|
private createDevice(
|
||||||
|
adbClient: ADBClient,
|
||||||
|
device: Device,
|
||||||
|
): Promise<AndroidDevice | undefined> {
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve, reject) => {
|
||||||
const type =
|
const type =
|
||||||
device.type !== 'device' || device.id.startsWith('emulator')
|
device.type !== 'device' || device.id.startsWith('emulator')
|
||||||
@@ -34,9 +37,7 @@ export class AndroidDeviceManager {
|
|||||||
: 'physical';
|
: 'physical';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const deviceClient = device.getClient();
|
const props = await adbClient.getProperties(device.id);
|
||||||
|
|
||||||
const props = await deviceClient.getProperties();
|
|
||||||
try {
|
try {
|
||||||
let name = props['ro.product.model'];
|
let name = props['ro.product.model'];
|
||||||
const abiString = props['ro.product.cpu.abilist'] || '';
|
const abiString = props['ro.product.cpu.abilist'] || '';
|
||||||
@@ -55,7 +56,7 @@ export class AndroidDeviceManager {
|
|||||||
device.id,
|
device.id,
|
||||||
type,
|
type,
|
||||||
name,
|
name,
|
||||||
deviceClient,
|
adbClient,
|
||||||
abiList,
|
abiList,
|
||||||
sdkVersion,
|
sdkVersion,
|
||||||
);
|
);
|
||||||
@@ -194,7 +195,7 @@ export class AndroidDeviceManager {
|
|||||||
const devices = await this.adbClient.listDevices();
|
const devices = await this.adbClient.listDevices();
|
||||||
for (const device of devices) {
|
for (const device of devices) {
|
||||||
if (device.type !== 'offline') {
|
if (device.type !== 'offline') {
|
||||||
this.registerDevice(device);
|
this.registerDevice(this.adbClient, device);
|
||||||
} else {
|
} else {
|
||||||
this.handleOfflineDevice(device);
|
this.handleOfflineDevice(device);
|
||||||
}
|
}
|
||||||
@@ -236,7 +237,7 @@ export class AndroidDeviceManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (device.type !== 'offline') {
|
if (device.type !== 'offline') {
|
||||||
this.registerDevice(device);
|
this.registerDevice(this.adbClient, device);
|
||||||
} else {
|
} else {
|
||||||
this.handleOfflineDevice(device);
|
this.handleOfflineDevice(device);
|
||||||
}
|
}
|
||||||
@@ -246,7 +247,7 @@ export class AndroidDeviceManager {
|
|||||||
if (device.type === 'offline') {
|
if (device.type === 'offline') {
|
||||||
this.flipperServer.unregisterDevice(device.id);
|
this.flipperServer.unregisterDevice(device.id);
|
||||||
} else {
|
} else {
|
||||||
this.registerDevice(device);
|
this.registerDevice(this.adbClient, device);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -272,8 +273,8 @@ export class AndroidDeviceManager {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async registerDevice(deviceData: Device) {
|
private async registerDevice(adbClient: ADBClient, deviceData: Device) {
|
||||||
const androidDevice = await this.createDevice(deviceData);
|
const androidDevice = await this.createDevice(adbClient, deviceData);
|
||||||
if (!androidDevice) {
|
if (!androidDevice) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,6 +116,7 @@
|
|||||||
"resolutions": {
|
"resolutions": {
|
||||||
"@jest-runner/electron/electron": "18.2.0",
|
"@jest-runner/electron/electron": "18.2.0",
|
||||||
"jest-environment-jsdom": "29.5.0",
|
"jest-environment-jsdom": "29.5.0",
|
||||||
|
"adbkit-logcat": "^2.0.1",
|
||||||
"minimist": "1.2.6",
|
"minimist": "1.2.6",
|
||||||
"node-forge": "^1.0.6"
|
"node-forge": "^1.0.6"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2675,11 +2675,6 @@
|
|||||||
ajv "^6.12.0"
|
ajv "^6.12.0"
|
||||||
ajv-keywords "^3.4.1"
|
ajv-keywords "^3.4.1"
|
||||||
|
|
||||||
"@devicefarmer/minicap-prebuilt@^2.7.1":
|
|
||||||
version "2.7.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@devicefarmer/minicap-prebuilt/-/minicap-prebuilt-2.7.1.tgz#338cf797735213135af728c103b7de463d04906d"
|
|
||||||
integrity sha512-XM+mPIA9hgwSF4eOq0RnKSXycj2rLNm3Xsl7MM0kG3CtTpX3/J0AA8P+v8zWiGNCMxyhl2VwY52nmQE/QwN3zg==
|
|
||||||
|
|
||||||
"@electron/get@^1.13.0":
|
"@electron/get@^1.13.0":
|
||||||
version "1.14.1"
|
version "1.14.1"
|
||||||
resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40"
|
resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40"
|
||||||
@@ -3695,59 +3690,6 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-3.0.3.tgz#e679ad10535e31d333f809f7a71335cc9aef1e55"
|
resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-3.0.3.tgz#e679ad10535e31d333f809f7a71335cc9aef1e55"
|
||||||
integrity sha512-KX8gMYA9ujBPOd1HFsV9e0iEx7Uoj8AG/3YsW4TtWQTg4lJvr82qNm7o/cFQfYRIt+jw7Ew/4oL4A22zOT+IRA==
|
integrity sha512-KX8gMYA9ujBPOd1HFsV9e0iEx7Uoj8AG/3YsW4TtWQTg4lJvr82qNm7o/cFQfYRIt+jw7Ew/4oL4A22zOT+IRA==
|
||||||
|
|
||||||
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
|
|
||||||
version "1.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
|
|
||||||
integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==
|
|
||||||
|
|
||||||
"@protobufjs/base64@^1.1.2":
|
|
||||||
version "1.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
|
|
||||||
integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
|
|
||||||
|
|
||||||
"@protobufjs/codegen@^2.0.4":
|
|
||||||
version "2.0.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
|
|
||||||
integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
|
|
||||||
|
|
||||||
"@protobufjs/eventemitter@^1.1.0":
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
|
|
||||||
integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==
|
|
||||||
|
|
||||||
"@protobufjs/fetch@^1.1.0":
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
|
|
||||||
integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==
|
|
||||||
dependencies:
|
|
||||||
"@protobufjs/aspromise" "^1.1.1"
|
|
||||||
"@protobufjs/inquire" "^1.1.0"
|
|
||||||
|
|
||||||
"@protobufjs/float@^1.0.2":
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
|
|
||||||
integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==
|
|
||||||
|
|
||||||
"@protobufjs/inquire@^1.1.0":
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
|
|
||||||
integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==
|
|
||||||
|
|
||||||
"@protobufjs/path@^1.1.2":
|
|
||||||
version "1.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
|
|
||||||
integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==
|
|
||||||
|
|
||||||
"@protobufjs/pool@^1.1.0":
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
|
|
||||||
integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==
|
|
||||||
|
|
||||||
"@protobufjs/utf8@^1.1.0":
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
|
|
||||||
integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
|
|
||||||
|
|
||||||
"@reach/observe-rect@^1.1.0", "@reach/observe-rect@^1.2.0":
|
"@reach/observe-rect@^1.1.0", "@reach/observe-rect@^1.2.0":
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@reach/observe-rect/-/observe-rect-1.2.0.tgz#d7a6013b8aafcc64c778a0ccb83355a11204d3b2"
|
resolved "https://registry.yarnpkg.com/@reach/observe-rect/-/observe-rect-1.2.0.tgz#d7a6013b8aafcc64c778a0ccb83355a11204d3b2"
|
||||||
@@ -4156,11 +4098,6 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008"
|
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008"
|
||||||
integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==
|
integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==
|
||||||
|
|
||||||
"@types/long@^4.0.1":
|
|
||||||
version "4.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a"
|
|
||||||
integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==
|
|
||||||
|
|
||||||
"@types/mdast@^3.0.0":
|
"@types/mdast@^3.0.0":
|
||||||
version "3.0.3"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb"
|
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb"
|
||||||
@@ -4252,11 +4189,6 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d"
|
||||||
integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==
|
integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==
|
||||||
|
|
||||||
"@types/node@>=13.7.0":
|
|
||||||
version "18.16.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.3.tgz#6bda7819aae6ea0b386ebc5b24bdf602f1b42b01"
|
|
||||||
integrity sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==
|
|
||||||
|
|
||||||
"@types/node@^16.11.26":
|
"@types/node@^16.11.26":
|
||||||
version "16.11.36"
|
version "16.11.36"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.36.tgz#9ab9f8276987132ed2b225cace2218ba794fc751"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.36.tgz#9ab9f8276987132ed2b225cace2218ba794fc751"
|
||||||
@@ -4709,46 +4641,6 @@
|
|||||||
"@typescript-eslint/types" "5.55.0"
|
"@typescript-eslint/types" "5.55.0"
|
||||||
eslint-visitor-keys "^3.3.0"
|
eslint-visitor-keys "^3.3.0"
|
||||||
|
|
||||||
"@u4/adbkit-logcat@2.1.2", "@u4/adbkit-logcat@^2.1.2":
|
|
||||||
version "2.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@u4/adbkit-logcat/-/adbkit-logcat-2.1.2.tgz#09bf408d6f07063e9b6ea9bf1d08f466076ee389"
|
|
||||||
integrity sha512-mCAuqwWCA2MXYP8nfPJe9IJQ/aTkiFCVvF+qnsBXQ5ceaQOnw2JKNQxjz5Gw7dhYZ9iazvcxg6FNhyec5pfHeQ==
|
|
||||||
|
|
||||||
"@u4/adbkit-monkey@^1.0.5":
|
|
||||||
version "1.0.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/@u4/adbkit-monkey/-/adbkit-monkey-1.0.5.tgz#b43217c76a82195551bd56ce8fc61a3b3a3e8756"
|
|
||||||
integrity sha512-6Hoz8EeKVK3eEJAGR44yzclADhA/5Q4KDlTtegMY4Dl5VMGq+tm1HtrmBvT++kftfrG64/H7xnrOwQ7DwQ2TlA==
|
|
||||||
|
|
||||||
"@u4/adbkit@^4.1.18":
|
|
||||||
version "4.1.18"
|
|
||||||
resolved "https://registry.yarnpkg.com/@u4/adbkit/-/adbkit-4.1.18.tgz#6e65227b476909f454de68444a7f815ba7bbdb2b"
|
|
||||||
integrity sha512-30nwR9p7QXPf1uqGwA6rnjjv7Qogbp7VnfF6tM8SL58evxMwNQdpAKVLD4BqIpui8k9mZfMwuWCR8T7RgDibRw==
|
|
||||||
dependencies:
|
|
||||||
"@u4/adbkit-logcat" "2.1.2"
|
|
||||||
"@u4/adbkit-monkey" "^1.0.5"
|
|
||||||
"@u4/minicap-prebuilt" "^1.0.0"
|
|
||||||
"@xmldom/xmldom" "^0.8.6"
|
|
||||||
commander "9.4.1"
|
|
||||||
debug "~4.3.4"
|
|
||||||
get-port "5.1.1"
|
|
||||||
node-forge "^1.3.1"
|
|
||||||
promise-duplex "^6.0.0"
|
|
||||||
promise-readable "^6.0.0"
|
|
||||||
protobufjs "^6.11.3"
|
|
||||||
xpath "^0.0.32"
|
|
||||||
optionalDependencies:
|
|
||||||
"@devicefarmer/minicap-prebuilt" "^2.7.1"
|
|
||||||
|
|
||||||
"@u4/minicap-prebuilt@^1.0.0":
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@u4/minicap-prebuilt/-/minicap-prebuilt-1.0.0.tgz#9075d248f0a0cefc9a81224cc564490a7bbb47dd"
|
|
||||||
integrity sha512-z+hfnXEZmlCjNUfk4EioIWOLGoMg44a63FWcLqym2xSJuGP9WGS3qJ6ZXjT6ErYsuzSLPR0LGzCqfhXkQs/NBA==
|
|
||||||
|
|
||||||
"@xmldom/xmldom@^0.8.6":
|
|
||||||
version "0.8.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.7.tgz#8b1e39c547013941974d83ad5e9cf5042071a9a0"
|
|
||||||
integrity sha512-sI1Ly2cODlWStkINzqGrZ8K6n+MTSbAeQnAipGyL+KZCXuHaRlj2gyyy8B/9MvsFFqN7XHryQnB2QwhzvJXovg==
|
|
||||||
|
|
||||||
"@yarnpkg/lockfile@^1.1.0":
|
"@yarnpkg/lockfile@^1.1.0":
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
|
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
|
||||||
@@ -4820,6 +4712,31 @@ acorn@^8.5.0:
|
|||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
|
||||||
integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
|
integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
|
||||||
|
|
||||||
|
adbkit-logcat@^1.1.0, adbkit-logcat@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/adbkit-logcat/-/adbkit-logcat-2.0.1.tgz#d4986b9fc7cfda42733389d46a52124abef43ca5"
|
||||||
|
integrity sha512-MznVzzEzcrWhIaIyblll+a0AL1TICJe/yuaia7HDYTAtiNabR/9amJkAnLt30U8/W7MVBc3mvU1jB/6MJ/TYHw==
|
||||||
|
|
||||||
|
adbkit-monkey@~1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz#f291be701a2efc567a63fc7aa6afcded31430be1"
|
||||||
|
integrity sha1-8pG+cBou/FZ6Y/x6pq/N7TFDC+E=
|
||||||
|
dependencies:
|
||||||
|
async "~0.2.9"
|
||||||
|
|
||||||
|
adbkit@^2.11.1:
|
||||||
|
version "2.11.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/adbkit/-/adbkit-2.11.1.tgz#7da847fe561254f3121088947bc1907ef053e894"
|
||||||
|
integrity sha512-hDTiRg9NX3HQt7WoDAPCplUpvzr4ZzQa2lq7BdTTJ/iOZ6O7YNAs6UYD8sFAiBEcYHDRIyq3cm9sZP6uZnhvXw==
|
||||||
|
dependencies:
|
||||||
|
adbkit-logcat "^1.1.0"
|
||||||
|
adbkit-monkey "~1.0.1"
|
||||||
|
bluebird "~2.9.24"
|
||||||
|
commander "^2.3.0"
|
||||||
|
debug "~2.6.3"
|
||||||
|
node-forge "^0.7.1"
|
||||||
|
split "~0.3.3"
|
||||||
|
|
||||||
address@^1.0.1:
|
address@^1.0.1:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
|
resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
|
||||||
@@ -5295,6 +5212,11 @@ async@^3.2.2, async@^3.2.3:
|
|||||||
resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
|
resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
|
||||||
integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
|
integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
|
||||||
|
|
||||||
|
async@~0.2.9:
|
||||||
|
version "0.2.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
|
||||||
|
integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E=
|
||||||
|
|
||||||
asynckit@^0.4.0:
|
asynckit@^0.4.0:
|
||||||
version "0.4.0"
|
version "0.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||||
@@ -5675,6 +5597,11 @@ bluebird@^3.5.5:
|
|||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de"
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de"
|
||||||
integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==
|
integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==
|
||||||
|
|
||||||
|
bluebird@~2.9.24:
|
||||||
|
version "2.9.34"
|
||||||
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.9.34.tgz#2f7b4ec80216328a9fddebdf69c8d4942feff7d8"
|
||||||
|
integrity sha1-L3tOyAIWMoqf3evfacjUlC/v99g=
|
||||||
|
|
||||||
body-parser@1.19.2:
|
body-parser@1.19.2:
|
||||||
version "1.19.2"
|
version "1.19.2"
|
||||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e"
|
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e"
|
||||||
@@ -6374,12 +6301,7 @@ commander@2.9.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
graceful-readlink ">= 1.0.0"
|
graceful-readlink ">= 1.0.0"
|
||||||
|
|
||||||
commander@9.4.1:
|
commander@^2.20.0, commander@^2.3.0:
|
||||||
version "9.4.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd"
|
|
||||||
integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==
|
|
||||||
|
|
||||||
commander@^2.20.0:
|
|
||||||
version "2.20.3"
|
version "2.20.3"
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||||
@@ -6568,11 +6490,6 @@ core-js-pure@^3.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813"
|
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813"
|
||||||
integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==
|
integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==
|
||||||
|
|
||||||
core-js@^3.6.5:
|
|
||||||
version "3.30.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.1.tgz#fc9c5adcc541d8e9fa3e381179433cbf795628ba"
|
|
||||||
integrity sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ==
|
|
||||||
|
|
||||||
core-util-is@1.0.2, core-util-is@~1.0.0:
|
core-util-is@1.0.2, core-util-is@~1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||||
@@ -6745,14 +6662,14 @@ dayjs@1.x:
|
|||||||
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468"
|
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468"
|
||||||
integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==
|
integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==
|
||||||
|
|
||||||
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9:
|
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9, debug@~2.6.3:
|
||||||
version "2.6.9"
|
version "2.6.9"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||||
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "2.0.0"
|
ms "2.0.0"
|
||||||
|
|
||||||
debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2, debug@~4.3.4:
|
debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2:
|
||||||
version "4.3.4"
|
version "4.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||||
@@ -8526,11 +8443,6 @@ get-package-type@^0.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
|
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
|
||||||
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
|
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
|
||||||
|
|
||||||
get-port@5.1.1:
|
|
||||||
version "5.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193"
|
|
||||||
integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==
|
|
||||||
|
|
||||||
get-stream@^2.2.0:
|
get-stream@^2.2.0:
|
||||||
version "2.3.1"
|
version "2.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
|
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
|
||||||
@@ -10958,11 +10870,6 @@ lolex@^5.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@sinonjs/commons" "^1.7.0"
|
"@sinonjs/commons" "^1.7.0"
|
||||||
|
|
||||||
long@^4.0.0:
|
|
||||||
version "4.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
|
|
||||||
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
|
|
||||||
|
|
||||||
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
|
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
|
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
|
||||||
@@ -11651,7 +11558,7 @@ node-fetch@2.6.0:
|
|||||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
|
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
|
||||||
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
|
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
|
||||||
|
|
||||||
node-forge@^0.10.0, node-forge@^1.0.6, node-forge@^1.3.1:
|
node-forge@^0.10.0, node-forge@^0.7.1, node-forge@^1.0.6:
|
||||||
version "1.3.1"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
|
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
|
||||||
integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
|
integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
|
||||||
@@ -12420,32 +12327,11 @@ progress@^2.0.0, progress@^2.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
|
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
|
||||||
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
|
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
|
||||||
|
|
||||||
promise-duplex@^6.0.0:
|
|
||||||
version "6.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/promise-duplex/-/promise-duplex-6.0.0.tgz#9d9d13383ac0f70701b9f095ffd486f106c2232e"
|
|
||||||
integrity sha512-ZL7rquzjTFzInDBeWYcsT+qddolNvzigahk6MI6qLSbQvlyRRCJkU3JztgaVunzvkH28smRa2Qu/cY9RXtSkgA==
|
|
||||||
dependencies:
|
|
||||||
core-js "^3.6.5"
|
|
||||||
promise-readable "^6.0.0"
|
|
||||||
promise-writable "^6.0.0"
|
|
||||||
|
|
||||||
promise-polyfill@^8.1.3:
|
promise-polyfill@^8.1.3:
|
||||||
version "8.1.3"
|
version "8.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116"
|
resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116"
|
||||||
integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==
|
integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==
|
||||||
|
|
||||||
promise-readable@^6.0.0:
|
|
||||||
version "6.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/promise-readable/-/promise-readable-6.0.0.tgz#ab1ec1a3daa53ed8764b61902fb7f3de3242025a"
|
|
||||||
integrity sha512-5NxtmUswijvX5cAM0zPSy6yiCXH/eKBpiiBq6JfAUrmngMquMbzcBhF2qA+ocs4rYYKdvAfv3cOvZxADLtL1CA==
|
|
||||||
dependencies:
|
|
||||||
core-js "^3.6.5"
|
|
||||||
|
|
||||||
promise-writable@^6.0.0:
|
|
||||||
version "6.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/promise-writable/-/promise-writable-6.0.0.tgz#4d703e75873a4e755a39bdb926a37f41538e507f"
|
|
||||||
integrity sha512-b81zre/itgJFS7dwWzIdKNVVqvLiUxYRS/wolUB0H1YY/tAaS146XGKa4Q/5wCbsnXLyn0MCeV6f8HHe4iUHLg==
|
|
||||||
|
|
||||||
promise@^7.1.1:
|
promise@^7.1.1:
|
||||||
version "7.3.1"
|
version "7.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
|
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
|
||||||
@@ -12487,25 +12373,6 @@ proto-list@~1.2.1:
|
|||||||
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
|
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
|
||||||
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
|
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
|
||||||
|
|
||||||
protobufjs@^6.11.3:
|
|
||||||
version "6.11.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74"
|
|
||||||
integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==
|
|
||||||
dependencies:
|
|
||||||
"@protobufjs/aspromise" "^1.1.2"
|
|
||||||
"@protobufjs/base64" "^1.1.2"
|
|
||||||
"@protobufjs/codegen" "^2.0.4"
|
|
||||||
"@protobufjs/eventemitter" "^1.1.0"
|
|
||||||
"@protobufjs/fetch" "^1.1.0"
|
|
||||||
"@protobufjs/float" "^1.0.2"
|
|
||||||
"@protobufjs/inquire" "^1.1.0"
|
|
||||||
"@protobufjs/path" "^1.1.2"
|
|
||||||
"@protobufjs/pool" "^1.1.0"
|
|
||||||
"@protobufjs/utf8" "^1.1.0"
|
|
||||||
"@types/long" "^4.0.1"
|
|
||||||
"@types/node" ">=13.7.0"
|
|
||||||
long "^4.0.0"
|
|
||||||
|
|
||||||
proxy-addr@~2.0.7:
|
proxy-addr@~2.0.7:
|
||||||
version "2.0.7"
|
version "2.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
|
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
|
||||||
@@ -14209,6 +14076,13 @@ split2@^4.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809"
|
resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809"
|
||||||
integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==
|
integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==
|
||||||
|
|
||||||
|
split@~0.3.3:
|
||||||
|
version "0.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
|
||||||
|
integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=
|
||||||
|
dependencies:
|
||||||
|
through "2"
|
||||||
|
|
||||||
sprintf-js@^1.1.2:
|
sprintf-js@^1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
|
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
|
||||||
@@ -14605,7 +14479,7 @@ through2@^2.0.1:
|
|||||||
readable-stream "~2.3.6"
|
readable-stream "~2.3.6"
|
||||||
xtend "~4.0.1"
|
xtend "~4.0.1"
|
||||||
|
|
||||||
"through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8:
|
through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8:
|
||||||
version "2.3.8"
|
version "2.3.8"
|
||||||
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
||||||
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
|
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
|
||||||
@@ -15478,11 +15352,6 @@ xmlchars@^2.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
|
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
|
||||||
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
|
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
|
||||||
|
|
||||||
xpath@^0.0.32:
|
|
||||||
version "0.0.32"
|
|
||||||
resolved "https://registry.yarnpkg.com/xpath/-/xpath-0.0.32.tgz#1b73d3351af736e17ec078d6da4b8175405c48af"
|
|
||||||
integrity sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw==
|
|
||||||
|
|
||||||
xtend@^4.0.0, xtend@~4.0.1:
|
xtend@^4.0.0, xtend@~4.0.1:
|
||||||
version "4.0.2"
|
version "4.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
||||||
|
|||||||
Reference in New Issue
Block a user