appium
Version:
Automation for Apps.
159 lines • 6.49 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.listCommands = listCommands;
exports.listExtensions = listExtensions;
const lodash_1 = __importDefault(require("lodash"));
const base_driver_1 = require("@appium/base-driver");
async function listCommands(sessionId) {
let driverRestMethodMap = {};
let driverBiDiCommands = {};
let pluginRestMethodMaps = {};
let pluginBiDiCommands = {};
if (sessionId) {
const driverClass = this.driverForSession(sessionId)?.constructor;
driverRestMethodMap = driverClass?.newMethodMap ?? {};
driverBiDiCommands = driverClass?.newBidiCommands ?? {};
const pluginClasses = this.pluginsForSession(sessionId)
.map((p) => p.constructor);
pluginRestMethodMaps = lodash_1.default.fromPairs(pluginClasses.map((c) => [c.name, c.newMethodMap ?? {}]));
pluginBiDiCommands = lodash_1.default.fromPairs(pluginClasses.map((c) => [c.name, c.newBidiCommands ?? {}]));
}
return {
rest: {
base: methodMapToRestCommandsInfo(base_driver_1.METHOD_MAP),
driver: methodMapToRestCommandsInfo(driverRestMethodMap),
plugins: pluginRestMethodMaps ? lodash_1.default.mapValues(pluginRestMethodMaps, methodMapToRestCommandsInfo) : undefined,
},
bidi: toBiDiCommandsMap(base_driver_1.BIDI_COMMANDS, driverBiDiCommands, pluginBiDiCommands),
};
}
async function listExtensions(sessionId) {
let driverExecuteMethodMap = {};
let pluginExecuteMethodMaps = {};
if (sessionId) {
const driverClass = this.driverForSession(sessionId)?.constructor;
driverExecuteMethodMap = driverClass?.executeMethodMap ?? {};
const pluginClasses = this.pluginsForSession(sessionId)
.map((p) => p.constructor);
pluginExecuteMethodMaps = lodash_1.default.fromPairs(pluginClasses.map((c) => [c.name, c.executeMethodMap ?? {}]));
}
return {
rest: {
driver: executeMethodMapToCommandsInfo(driverExecuteMethodMap),
plugins: pluginExecuteMethodMaps ? lodash_1.default.mapValues(pluginExecuteMethodMaps, executeMethodMapToCommandsInfo) : undefined,
},
};
}
function toRestCommandParams(params) {
if (!params) {
return;
}
const toRestCommandItemParam = (x, isRequired) => {
const isNameAnArray = lodash_1.default.isArray(x);
const name = isNameAnArray ? x[0] : x;
if (!lodash_1.default.isString(name)) {
return;
}
// If parameter names are arrays then this means
// either of them is required.
// Not sure we could reflect that in here.
const required = isRequired && !isNameAnArray;
return {
name,
required,
};
};
const requiredParams = (params.required ?? [])
.map((name) => toRestCommandItemParam(name, true))
.filter((x) => !lodash_1.default.isUndefined(x));
const optionalParams = (params.optional ?? [])
.map((name) => toRestCommandItemParam(name, false))
.filter((x) => !lodash_1.default.isUndefined(x));
return requiredParams.length || optionalParams.length
? [...requiredParams, ...optionalParams]
: undefined;
}
function methodMapToRestCommandsInfo(mm) {
const res = {};
for (const [uriPath, methods] of lodash_1.default.toPairs(mm)) {
const methodsMap = {};
for (const [method, spec] of lodash_1.default.toPairs(methods)) {
methodsMap[method] = {
command: spec.command,
deprecated: spec.deprecated,
info: spec.info,
params: toRestCommandParams(spec.payloadParams),
};
}
res[uriPath] = methodsMap;
}
return res;
}
function executeMethodMapToCommandsInfo(emm) {
const result = {};
for (const [name, info] of lodash_1.default.toPairs(emm)) {
result[name] = {
command: info.command,
deprecated: info.deprecated,
info: info.info,
params: toRestCommandParams(info.params),
};
}
return result;
}
function toBiDiCommandsMap(baseModuleMap, driverModuleMap, pluginModuleMaps) {
const toBiDiCommandParams = (params) => {
if (!params) {
return;
}
const toBiDiCommandItemParam = (x, isRequired) => {
const isNameAnArray = lodash_1.default.isArray(x);
const name = isNameAnArray ? x[0] : x;
if (!lodash_1.default.isString(name)) {
return;
}
// If parameter names are arrays then this means
// either of them is required.
// Not sure we could reflect that in here.
const required = isRequired && !isNameAnArray;
return {
name,
required,
};
};
const requiredParams = (params.required ?? [])
.map((name) => toBiDiCommandItemParam(name, true))
.filter((x) => !lodash_1.default.isUndefined(x));
const optionalParams = (params.optional ?? [])
.map((name) => toBiDiCommandItemParam(name, false))
.filter((x) => !lodash_1.default.isUndefined(x));
return requiredParams.length || optionalParams.length
? [...requiredParams, ...optionalParams]
: undefined;
};
const moduleMapToBiDiCommandsInfo = (mm) => {
const res = {};
for (const [domain, commands] of lodash_1.default.toPairs(mm)) {
const commandsMap = {};
for (const [name, spec] of lodash_1.default.toPairs(commands)) {
commandsMap[name] = {
command: spec.command,
deprecated: spec.deprecated,
info: spec.info,
params: toBiDiCommandParams(spec.params),
};
}
res[domain] = commandsMap;
}
return res;
};
return {
base: moduleMapToBiDiCommandsInfo(baseModuleMap),
driver: moduleMapToBiDiCommandsInfo(driverModuleMap),
plugins: pluginModuleMaps ? lodash_1.default.mapValues(pluginModuleMaps, moduleMapToBiDiCommandsInfo) : undefined,
};
}
//# sourceMappingURL=inspector-commands.js.map