appium-remote-debugger 9.1.18 → 10.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -7
- package/README.md +5 -0
- package/atoms/active_element.js +50 -59
- package/atoms/clear.js +117 -138
- package/atoms/clear_local_storage.js +74 -0
- package/atoms/clear_session_storage.js +74 -0
- package/atoms/click.js +123 -157
- package/atoms/default_content.js +74 -0
- package/atoms/execute_async_script.js +9 -15
- package/atoms/execute_script.js +7 -14
- package/atoms/execute_sql.js +2 -0
- package/atoms/find_element.js +90 -99
- package/atoms/find_element_fragment.js +116 -0
- package/atoms/find_elements.js +92 -99
- package/atoms/frame_by_id_or_name.js +92 -100
- package/atoms/frame_by_index.js +50 -59
- package/atoms/get_appcache_status.js +74 -0
- package/atoms/get_attribute.js +89 -0
- package/atoms/get_attribute_value.js +67 -69
- package/atoms/get_effective_style.js +75 -0
- package/atoms/get_element_from_cache.js +3 -6
- package/atoms/get_frame_window.js +50 -59
- package/atoms/get_local_storage_item.js +74 -0
- package/atoms/get_local_storage_key.js +70 -0
- package/atoms/get_local_storage_keys.js +74 -0
- package/atoms/get_local_storage_size.js +74 -0
- package/atoms/get_location.js +3 -0
- package/atoms/get_session_storage_item.js +74 -0
- package/atoms/get_session_storage_key.js +70 -0
- package/atoms/get_session_storage_keys.js +74 -0
- package/atoms/get_session_storage_size.js +74 -0
- package/atoms/get_size.js +74 -74
- package/atoms/get_text.js +97 -98
- package/atoms/get_top_left_coordinates.js +88 -91
- package/atoms/get_value_of_css_property.js +73 -74
- package/atoms/is_displayed.js +91 -92
- package/atoms/is_editable.js +69 -0
- package/atoms/is_enabled.js +66 -66
- package/atoms/is_focusable.js +71 -0
- package/atoms/is_interactable.js +95 -0
- package/atoms/is_selected.js +66 -69
- package/atoms/lastupdate +7 -5
- package/atoms/remove_local_storage_item.js +74 -0
- package/atoms/remove_session_storage_item.js +74 -0
- package/atoms/set_local_storage_item.js +74 -0
- package/atoms/set_session_storage_item.js +74 -0
- package/atoms/submit.js +115 -136
- package/atoms/type.js +115 -136
- package/build/lib/atoms.js +9 -3
- package/build/lib/atoms.js.map +1 -1
- package/build/lib/rpc/rpc-message-handler.js +1 -1
- package/build/lib/rpc/rpc-message-handler.js.map +1 -1
- package/lib/atoms.js +9 -2
- package/lib/rpc/rpc-message-handler.js +1 -2
- package/package.json +9 -9
- package/scripts/build-atoms.js +2 -3
- package/scripts/common.js +67 -107
- package/atoms/element_equals_element.js +0 -83
- package/atoms/fireEvent.js +0 -84
- package/atoms/get_window_size.js +0 -8
- package/atoms/move_mouse.js +0 -134
- package/atoms/refresh.js +0 -82
- package/atoms/tap.js +0 -150
- package/atoms/title.js +0 -82
- package/scripts/import-atoms.js +0 -3
package/build/lib/atoms.js
CHANGED
|
@@ -14,6 +14,12 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
14
14
|
var _logger = _interopRequireDefault(require("./logger"));
|
|
15
15
|
var _utils = require("./utils");
|
|
16
16
|
const ATOMS_CACHE = {};
|
|
17
|
+
function atomsStringify(obj) {
|
|
18
|
+
if (typeof obj === 'undefined') {
|
|
19
|
+
return 'undefined';
|
|
20
|
+
}
|
|
21
|
+
return JSON.stringify(obj);
|
|
22
|
+
}
|
|
17
23
|
async function getAtom(atomName) {
|
|
18
24
|
if (!_lodash.default.has(ATOMS_CACHE, atomName)) {
|
|
19
25
|
const atomFileName = _path.default.resolve((0, _utils.getModuleRoot)(), 'atoms', `${atomName}.js`);
|
|
@@ -28,7 +34,7 @@ async function getAtom(atomName) {
|
|
|
28
34
|
async function wrapScriptForFrame(script, frame) {
|
|
29
35
|
_logger.default.debug(`Wrapping script for frame '${frame}'`);
|
|
30
36
|
const elFromCache = await getAtom('get_element_from_cache');
|
|
31
|
-
return `(function (window) { var document = window.document; ` + `return (${script}); })((${elFromCache.toString('utf8')})(${
|
|
37
|
+
return `(function (window) { var document = window.document; ` + `return (${script}); })((${elFromCache.toString('utf8')})(${atomsStringify(frame)}))`;
|
|
32
38
|
}
|
|
33
39
|
async function getScriptForAtom(atom, args, frames = [], asyncCallBack = null) {
|
|
34
40
|
const atomSrc = await getAtom(atom);
|
|
@@ -42,7 +48,7 @@ async function getScriptForAtom(atom, args, frames = [], asyncCallBack = null) {
|
|
|
42
48
|
_logger.default.debug(`Executing '${atom}' atom in default context`);
|
|
43
49
|
script = `(${atomSrc})`;
|
|
44
50
|
}
|
|
45
|
-
args = args.map(
|
|
51
|
+
args = args.map(atomsStringify);
|
|
46
52
|
if (asyncCallBack) {
|
|
47
53
|
script += `(${args.join(',')}, ${asyncCallBack}, true)`;
|
|
48
54
|
} else {
|
|
@@ -52,4 +58,4 @@ async function getScriptForAtom(atom, args, frames = [], asyncCallBack = null) {
|
|
|
52
58
|
}
|
|
53
59
|
var _default = getAtom;
|
|
54
60
|
exports.default = _default;
|
|
55
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VwcG9ydCIsInJlcXVpcmUiLCJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9kYXNoIiwiX2xvZ2dlciIsIl91dGlscyIsIkFUT01TX0NBQ0hFIiwiYXRvbXNTdHJpbmdpZnkiLCJvYmoiLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0QXRvbSIsImF0b21OYW1lIiwiXyIsImhhcyIsImF0b21GaWxlTmFtZSIsInBhdGgiLCJyZXNvbHZlIiwiZ2V0TW9kdWxlUm9vdCIsImZzIiwicmVhZEZpbGUiLCJlIiwiRXJyb3IiLCJ3cmFwU2NyaXB0Rm9yRnJhbWUiLCJzY3JpcHQiLCJmcmFtZSIsImxvZyIsImRlYnVnIiwiZWxGcm9tQ2FjaGUiLCJ0b1N0cmluZyIsImdldFNjcmlwdEZvckF0b20iLCJhdG9tIiwiYXJncyIsImZyYW1lcyIsImFzeW5jQ2FsbEJhY2siLCJhdG9tU3JjIiwibGVuZ3RoIiwibWFwIiwiam9pbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9saWIvYXRvbXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnMgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBnZXRNb2R1bGVSb290IH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IEFUT01TX0NBQ0hFID0ge307XG5cbmZ1bmN0aW9uIGF0b21zU3RyaW5naWZ5KG9iaikge1xuICBpZiAodHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaik7XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QXRvbSAoYXRvbU5hbWUpIHtcbiAgLy8gY2hlY2sgaWYgd2UgaGF2ZSBhbHJlYWR5IGxvYWRlZCBhbmQgY2FjaGVkIHRoaXMgYXRvbVxuICBpZiAoIV8uaGFzKEFUT01TX0NBQ0hFLCBhdG9tTmFtZSkpIHtcbiAgICBjb25zdCBhdG9tRmlsZU5hbWUgPSBwYXRoLnJlc29sdmUoZ2V0TW9kdWxlUm9vdCgpLCAnYXRvbXMnLCBgJHthdG9tTmFtZX0uanNgKTtcbiAgICB0cnkge1xuICAgICAgQVRPTVNfQ0FDSEVbYXRvbU5hbWVdID0gYXdhaXQgZnMucmVhZEZpbGUoYXRvbUZpbGVOYW1lKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2FkIEF0b20gJyR7YXRvbU5hbWV9JyBmcm9tIGZpbGUgJyR7YXRvbUZpbGVOYW1lfSdgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gQVRPTVNfQ0FDSEVbYXRvbU5hbWVdO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cmFwU2NyaXB0Rm9yRnJhbWUgKHNjcmlwdCwgZnJhbWUpIHtcbiAgbG9nLmRlYnVnKGBXcmFwcGluZyBzY3JpcHQgZm9yIGZyYW1lICcke2ZyYW1lfSdgKTtcbiAgY29uc3QgZWxGcm9tQ2FjaGUgPSBhd2FpdCBnZXRBdG9tKCdnZXRfZWxlbWVudF9mcm9tX2NhY2hlJyk7XG4gIHJldHVybiBgKGZ1bmN0aW9uICh3aW5kb3cpIHsgdmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50OyBgICtcbiAgICAgICAgIGByZXR1cm4gKCR7c2NyaXB0fSk7IH0pKCgke2VsRnJvbUNhY2hlLnRvU3RyaW5nKCd1dGY4Jyl9KSgke2F0b21zU3RyaW5naWZ5KGZyYW1lKX0pKWA7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFNjcmlwdEZvckF0b20gKGF0b20sIGFyZ3MsIGZyYW1lcyA9IFtdLCBhc3luY0NhbGxCYWNrID0gbnVsbCkge1xuICBjb25zdCBhdG9tU3JjID0gYXdhaXQgZ2V0QXRvbShhdG9tKTtcbiAgbGV0IHNjcmlwdDtcbiAgaWYgKGZyYW1lcy5sZW5ndGggPiAwKSB7XG4gICAgc2NyaXB0ID0gYXRvbVNyYztcbiAgICBmb3IgKGNvbnN0IGZyYW1lIG9mIGZyYW1lcykge1xuICAgICAgc2NyaXB0ID0gYXdhaXQgd3JhcFNjcmlwdEZvckZyYW1lKHNjcmlwdCwgZnJhbWUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsb2cuZGVidWcoYEV4ZWN1dGluZyAnJHthdG9tfScgYXRvbSBpbiBkZWZhdWx0IGNvbnRleHRgKTtcbiAgICBzY3JpcHQgPSBgKCR7YXRvbVNyY30pYDtcbiAgfVxuXG4gIC8vIGFkZCB0aGUgYXJndW1lbnRzLCBhcyBzdHJpbmdzXG4gIGFyZ3MgPSBhcmdzLm1hcChhdG9tc1N0cmluZ2lmeSk7XG4gIGlmIChhc3luY0NhbGxCYWNrKSB7XG4gICAgc2NyaXB0ICs9IGAoJHthcmdzLmpvaW4oJywnKX0sICR7YXN5bmNDYWxsQmFja30sIHRydWUpYDtcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHQgKz0gYCgke2FyZ3Muam9pbignLCcpfSlgO1xuICB9XG5cbiAgcmV0dXJuIHNjcmlwdDtcbn1cblxuZXhwb3J0IHsgZ2V0QXRvbSwgZ2V0U2NyaXB0Rm9yQXRvbSB9O1xuZXhwb3J0IGRlZmF1bHQgZ2V0QXRvbTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUVBLE1BQU1NLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFFdEIsU0FBU0MsY0FBY0EsQ0FBQ0MsR0FBRyxFQUFFO0VBQzNCLElBQUksT0FBT0EsR0FBRyxLQUFLLFdBQVcsRUFBRTtJQUM5QixPQUFPLFdBQVc7RUFDcEI7RUFDQSxPQUFPQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0YsR0FBRyxDQUFDO0FBQzVCO0FBR0EsZUFBZUcsT0FBT0EsQ0FBRUMsUUFBUSxFQUFFO0VBRWhDLElBQUksQ0FBQ0MsZUFBQyxDQUFDQyxHQUFHLENBQUNSLFdBQVcsRUFBRU0sUUFBUSxDQUFDLEVBQUU7SUFDakMsTUFBTUcsWUFBWSxHQUFHQyxhQUFJLENBQUNDLE9BQU8sQ0FBQyxJQUFBQyxvQkFBYSxFQUFDLENBQUMsRUFBRSxPQUFPLEVBQUcsR0FBRU4sUUFBUyxLQUFJLENBQUM7SUFDN0UsSUFBSTtNQUNGTixXQUFXLENBQUNNLFFBQVEsQ0FBQyxHQUFHLE1BQU1PLFdBQUUsQ0FBQ0MsUUFBUSxDQUFDTCxZQUFZLENBQUM7SUFDekQsQ0FBQyxDQUFDLE9BQU9NLENBQUMsRUFBRTtNQUNWLE1BQU0sSUFBSUMsS0FBSyxDQUFFLHdCQUF1QlYsUUFBUyxnQkFBZUcsWUFBYSxHQUFFLENBQUM7SUFDbEY7RUFDRjtFQUVBLE9BQU9ULFdBQVcsQ0FBQ00sUUFBUSxDQUFDO0FBQzlCO0FBRUEsZUFBZVcsa0JBQWtCQSxDQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRTtFQUNoREMsZUFBRyxDQUFDQyxLQUFLLENBQUUsOEJBQTZCRixLQUFNLEdBQUUsQ0FBQztFQUNqRCxNQUFNRyxXQUFXLEdBQUcsTUFBTWpCLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztFQUMzRCxPQUFRLHVEQUFzRCxHQUN0RCxXQUFVYSxNQUFPLFVBQVNJLFdBQVcsQ0FBQ0MsUUFBUSxDQUFDLE1BQU0sQ0FBRSxLQUFJdEIsY0FBYyxDQUFDa0IsS0FBSyxDQUFFLElBQUc7QUFDOUY7QUFFQSxlQUFlSyxnQkFBZ0JBLENBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxNQUFNLEdBQUcsRUFBRSxFQUFFQyxhQUFhLEdBQUcsSUFBSSxFQUFFO0VBQzlFLE1BQU1DLE9BQU8sR0FBRyxNQUFNeEIsT0FBTyxDQUFDb0IsSUFBSSxDQUFDO0VBQ25DLElBQUlQLE1BQU07RUFDVixJQUFJUyxNQUFNLENBQUNHLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDckJaLE1BQU0sR0FBR1csT0FBTztJQUNoQixLQUFLLE1BQU1WLEtBQUssSUFBSVEsTUFBTSxFQUFFO01BQzFCVCxNQUFNLEdBQUcsTUFBTUQsa0JBQWtCLENBQUNDLE1BQU0sRUFBRUMsS0FBSyxDQUFDO0lBQ2xEO0VBQ0YsQ0FBQyxNQUFNO0lBQ0xDLGVBQUcsQ0FBQ0MsS0FBSyxDQUFFLGNBQWFJLElBQUssMkJBQTBCLENBQUM7SUFDeERQLE1BQU0sR0FBSSxJQUFHVyxPQUFRLEdBQUU7RUFDekI7RUFHQUgsSUFBSSxHQUFHQSxJQUFJLENBQUNLLEdBQUcsQ0FBQzlCLGNBQWMsQ0FBQztFQUMvQixJQUFJMkIsYUFBYSxFQUFFO0lBQ2pCVixNQUFNLElBQUssSUFBR1EsSUFBSSxDQUFDTSxJQUFJLENBQUMsR0FBRyxDQUFFLEtBQUlKLGFBQWMsU0FBUTtFQUN6RCxDQUFDLE1BQU07SUFDTFYsTUFBTSxJQUFLLElBQUdRLElBQUksQ0FBQ00sSUFBSSxDQUFDLEdBQUcsQ0FBRSxHQUFFO0VBQ2pDO0VBRUEsT0FBT2QsTUFBTTtBQUNmO0FBQUMsSUFBQWUsUUFBQSxHQUdjNUIsT0FBTztBQUFBNkIsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUEifQ==
|
package/build/lib/atoms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atoms.js","names":["_support","require","_path","_interopRequireDefault","_lodash","_logger","_utils","ATOMS_CACHE","getAtom","atomName","_","has","atomFileName","path","resolve","getModuleRoot","fs","readFile","e","Error","wrapScriptForFrame","script","frame","log","debug","elFromCache","toString","
|
|
1
|
+
{"version":3,"file":"atoms.js","names":["_support","require","_path","_interopRequireDefault","_lodash","_logger","_utils","ATOMS_CACHE","atomsStringify","obj","JSON","stringify","getAtom","atomName","_","has","atomFileName","path","resolve","getModuleRoot","fs","readFile","e","Error","wrapScriptForFrame","script","frame","log","debug","elFromCache","toString","getScriptForAtom","atom","args","frames","asyncCallBack","atomSrc","length","map","join","_default","exports","default"],"sources":["../../lib/atoms.js"],"sourcesContent":["import { fs } from '@appium/support';\nimport path from 'path';\nimport _ from 'lodash';\nimport log from './logger';\nimport { getModuleRoot } from './utils';\n\nconst ATOMS_CACHE = {};\n\nfunction atomsStringify(obj) {\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n return JSON.stringify(obj);\n}\n\n\nasync function getAtom (atomName) {\n // check if we have already loaded and cached this atom\n if (!_.has(ATOMS_CACHE, atomName)) {\n const atomFileName = path.resolve(getModuleRoot(), 'atoms', `${atomName}.js`);\n try {\n ATOMS_CACHE[atomName] = await fs.readFile(atomFileName);\n } catch (e) {\n throw new Error(`Unable to load Atom '${atomName}' from file '${atomFileName}'`);\n }\n }\n\n return ATOMS_CACHE[atomName];\n}\n\nasync function wrapScriptForFrame (script, frame) {\n log.debug(`Wrapping script for frame '${frame}'`);\n const elFromCache = await getAtom('get_element_from_cache');\n return `(function (window) { var document = window.document; ` +\n `return (${script}); })((${elFromCache.toString('utf8')})(${atomsStringify(frame)}))`;\n}\n\nasync function getScriptForAtom (atom, args, frames = [], asyncCallBack = null) {\n const atomSrc = await getAtom(atom);\n let script;\n if (frames.length > 0) {\n script = atomSrc;\n for (const frame of frames) {\n script = await wrapScriptForFrame(script, frame);\n }\n } else {\n log.debug(`Executing '${atom}' atom in default context`);\n script = `(${atomSrc})`;\n }\n\n // add the arguments, as strings\n args = args.map(atomsStringify);\n if (asyncCallBack) {\n script += `(${args.join(',')}, ${asyncCallBack}, true)`;\n } else {\n script += `(${args.join(',')})`;\n }\n\n return script;\n}\n\nexport { getAtom, getScriptForAtom };\nexport default getAtom;\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,OAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AAEA,MAAMM,WAAW,GAAG,CAAC,CAAC;AAEtB,SAASC,cAAcA,CAACC,GAAG,EAAE;EAC3B,IAAI,OAAOA,GAAG,KAAK,WAAW,EAAE;IAC9B,OAAO,WAAW;EACpB;EACA,OAAOC,IAAI,CAACC,SAAS,CAACF,GAAG,CAAC;AAC5B;AAGA,eAAeG,OAAOA,CAAEC,QAAQ,EAAE;EAEhC,IAAI,CAACC,eAAC,CAACC,GAAG,CAACR,WAAW,EAAEM,QAAQ,CAAC,EAAE;IACjC,MAAMG,YAAY,GAAGC,aAAI,CAACC,OAAO,CAAC,IAAAC,oBAAa,EAAC,CAAC,EAAE,OAAO,EAAG,GAAEN,QAAS,KAAI,CAAC;IAC7E,IAAI;MACFN,WAAW,CAACM,QAAQ,CAAC,GAAG,MAAMO,WAAE,CAACC,QAAQ,CAACL,YAAY,CAAC;IACzD,CAAC,CAAC,OAAOM,CAAC,EAAE;MACV,MAAM,IAAIC,KAAK,CAAE,wBAAuBV,QAAS,gBAAeG,YAAa,GAAE,CAAC;IAClF;EACF;EAEA,OAAOT,WAAW,CAACM,QAAQ,CAAC;AAC9B;AAEA,eAAeW,kBAAkBA,CAAEC,MAAM,EAAEC,KAAK,EAAE;EAChDC,eAAG,CAACC,KAAK,CAAE,8BAA6BF,KAAM,GAAE,CAAC;EACjD,MAAMG,WAAW,GAAG,MAAMjB,OAAO,CAAC,wBAAwB,CAAC;EAC3D,OAAQ,uDAAsD,GACtD,WAAUa,MAAO,UAASI,WAAW,CAACC,QAAQ,CAAC,MAAM,CAAE,KAAItB,cAAc,CAACkB,KAAK,CAAE,IAAG;AAC9F;AAEA,eAAeK,gBAAgBA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,MAAM,GAAG,EAAE,EAAEC,aAAa,GAAG,IAAI,EAAE;EAC9E,MAAMC,OAAO,GAAG,MAAMxB,OAAO,CAACoB,IAAI,CAAC;EACnC,IAAIP,MAAM;EACV,IAAIS,MAAM,CAACG,MAAM,GAAG,CAAC,EAAE;IACrBZ,MAAM,GAAGW,OAAO;IAChB,KAAK,MAAMV,KAAK,IAAIQ,MAAM,EAAE;MAC1BT,MAAM,GAAG,MAAMD,kBAAkB,CAACC,MAAM,EAAEC,KAAK,CAAC;IAClD;EACF,CAAC,MAAM;IACLC,eAAG,CAACC,KAAK,CAAE,cAAaI,IAAK,2BAA0B,CAAC;IACxDP,MAAM,GAAI,IAAGW,OAAQ,GAAE;EACzB;EAGAH,IAAI,GAAGA,IAAI,CAACK,GAAG,CAAC9B,cAAc,CAAC;EAC/B,IAAI2B,aAAa,EAAE;IACjBV,MAAM,IAAK,IAAGQ,IAAI,CAACM,IAAI,CAAC,GAAG,CAAE,KAAIJ,aAAc,SAAQ;EACzD,CAAC,MAAM;IACLV,MAAM,IAAK,IAAGQ,IAAI,CAACM,IAAI,CAAC,GAAG,CAAE,GAAE;EACjC;EAEA,OAAOd,MAAM;AACf;AAAC,IAAAe,QAAA,GAGc5B,OAAO;AAAA6B,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -173,4 +173,4 @@ class RpcMessageHandler extends _events.default {
|
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
exports.default = RpcMessageHandler;
|
|
176
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX3N1cHBvcnQiLCJfZXZlbnRzIiwiUnBjTWVzc2FnZUhhbmRsZXIiLCJFdmVudEVtaXR0ZXJzIiwiY29uc3RydWN0b3IiLCJpc1RhcmdldEJhc2VkIiwiX2lzVGFyZ2V0QmFzZWQiLCJoYW5kbGVNZXNzYWdlIiwicGxpc3QiLCJzZWxlY3RvciIsIl9fc2VsZWN0b3IiLCJsb2ciLCJkZWJ1ZyIsImFyZ3VtZW50IiwiX19hcmd1bWVudCIsImVtaXQiLCJXSVJTaW11bGF0b3JOYW1lS2V5IiwiV0lSU2ltdWxhdG9yQnVpbGRLZXkiLCJXSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleSIsIldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSIsIldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsIldJUkxpc3RpbmdLZXkiLCJoYW5kbGVEYXRhTWVzc2FnZSIsInBhcnNlRGF0YUtleSIsIkpTT04iLCJwYXJzZSIsIldJUk1lc3NhZ2VEYXRhS2V5IiwidG9TdHJpbmciLCJlcnIiLCJlcnJvciIsIl8iLCJ0cnVuY2F0ZSIsInN0cmluZ2lmeSIsImxlbmd0aCIsIkVycm9yIiwibWVzc2FnZSIsImRpc3BhdGNoRGF0YU1lc3NhZ2UiLCJtc2dJZCIsIm1ldGhvZCIsInBhcmFtcyIsInJlc3VsdCIsImlzRW1wdHkiLCJsaXN0ZW5lckNvdW50IiwiX3Jlc3VsdCIsImhhcyIsInZhbHVlIiwiZXZlbnROYW1lcyIsImFyZ3MiLCJwdXNoIiwicmVjb3JkIiwiY29udGV4dCIsInN0YXJ0c1dpdGgiLCJuYW1lIiwiX3Jlc3VsdDIiLCJkYXRhS2V5IiwiaWQiLCJhcHAiLCJ0YXJnZXRJbmZvIiwib2xkVGFyZ2V0SWQiLCJuZXdUYXJnZXRJZCIsInRhcmdldElkIiwid2FybiIsInV0aWwiLCJqc29uU3RyaW5naWZ5Iiwid2FzVGhyb3duIiwiX3Jlc3VsdDMiLCJfcmVzdWx0NCIsIl9yZXN1bHQ1IiwiX3Jlc3VsdDYiLCJkZXNjcmlwdGlvbiIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9ycGMtbWVzc2FnZS1oYW5kbGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBFdmVudEVtaXR0ZXJzIGZyb20gJ2V2ZW50cyc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnBjTWVzc2FnZUhhbmRsZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXJzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgc2V0IGlzVGFyZ2V0QmFzZWQgKGlzVGFyZ2V0QmFzZWQpIHtcbiAgICB0aGlzLl9pc1RhcmdldEJhc2VkID0gISFpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlTWVzc2FnZSAocGxpc3QpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IHBsaXN0Ll9fc2VsZWN0b3I7XG4gICAgaWYgKCFzZWxlY3Rvcikge1xuICAgICAgbG9nLmRlYnVnKCdHb3QgYW4gaW52YWxpZCBwbGlzdCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZ3VtZW50ID0gcGxpc3QuX19hcmd1bWVudDtcbiAgICBzd2l0Y2ggKHNlbGVjdG9yKSB7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydFNldHVwOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRTZXR1cDonLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYXJndW1lbnQuV0lSU2ltdWxhdG9yTmFtZUtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JCdWlsZEtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q29ubmVjdGVkQXBwbGljYXRpb25MaXN0Oic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDb25uZWN0ZWRBcHBsaWNhdGlvbkxpc3Q6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50TGlzdGluZzonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJMaXN0aW5nS2V5XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25EaXNjb25uZWN0ZWQ6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX2FwcGxpY2F0aW9uVXBkYXRlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25VcGRhdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q3VycmVudFN0YXRlOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDdXJyZW50U3RhdGU6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50RGF0YTonOlxuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZURhdGFNZXNzYWdlKHBsaXN0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsb2cuZGVidWcoYERlYnVnZ2VyIGdvdCBhIG1lc3NhZ2UgZm9yICcke3NlbGVjdG9yfScgYW5kIGhhdmUgbm8gYCArXG4gICAgICAgICAgYGhhbmRsZXIsIGRvaW5nIG5vdGhpbmcuYCk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VEYXRhS2V5IChwbGlzdCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShwbGlzdC5fX2FyZ3VtZW50LldJUk1lc3NhZ2VEYXRhS2V5LnRvU3RyaW5nKCd1dGY4JykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKGBVbnBhcnNlYWJsZSBtZXNzYWdlIGRhdGE6ICR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShwbGlzdCksIHtsZW5ndGg6IDEwMH0pfWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgbWVzc2FnZSBkYXRhOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc3BhdGNoRGF0YU1lc3NhZ2UgKG1zZ0lkLCBtZXRob2QsIHBhcmFtcywgcmVzdWx0LCBlcnJvcikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICBpZiAoIV8uaXNFbXB0eShtc2dJZCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgSGFuZGxpbmcgbWVzc2FnZSAoaWQ6ICcke21zZ0lkfScpYCk7XG4gICAgfVxuXG4gICAgaWYgKG1zZ0lkKSB7XG4gICAgICBpZiAodGhpcy5saXN0ZW5lckNvdW50KG1zZ0lkKSkge1xuICAgICAgICBpZiAoXy5oYXMocmVzdWx0Py5yZXN1bHQsICd2YWx1ZScpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXQobXNnSWQsIGVycm9yLCByZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmVycm9yKGBXZWIgSW5zcGVjdG9yIHJldHVybmVkIGRhdGEgZm9yIG1lc3NhZ2UgJyR7bXNnSWR9JyBgICtcbiAgICAgICAgICBgYnV0IHdlIHdlcmUgbm90IHdhaXRpbmcgZm9yIHRoYXQgbWVzc2FnZSEgYCArXG4gICAgICAgICAgYHJlc3VsdDogJyR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX0nOyBgICtcbiAgICAgICAgICBgZXJyb3I6ICcke0pTT04uc3RyaW5naWZ5KGVycm9yKX0nYCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGV2ZW50TmFtZXMgPSBbbWV0aG9kXTtcbiAgICBsZXQgYXJncyA9IFtwYXJhbXNdO1xuXG4gICAgLy8gc29tZSBldmVudHMgaGF2ZSBkaWZmZXJlbnQgbmFtZXMsIG9yIHRoZSBhcmd1bWVudHMgYXJlIG1hcHBlZCBmcm9tIHRoZVxuICAgIC8vIHBhcmFtZXRlcnMgcmVjZWl2ZWRcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAnUGFnZS5mcmFtZVN0b3BwZWRMb2FkaW5nJzpcbiAgICAgICAgZXZlbnROYW1lcy5wdXNoKCdQYWdlLmZyYW1lTmF2aWdhdGVkJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgJ1BhZ2UuZnJhbWVOYXZpZ2F0ZWQnOlxuICAgICAgICBhcmdzID0gW2AnJHttZXRob2R9JyBldmVudGBdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1RpbWVsaW5lLmV2ZW50UmVjb3JkZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcyB8fCBwYXJhbXMucmVjb3JkXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDb25zb2xlLm1lc3NhZ2VBZGRlZCc6XG4gICAgICAgIGFyZ3MgPSBbcGFyYW1zLm1lc3NhZ2VdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1J1bnRpbWUuZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcy5jb250ZXh0XTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBwYXNzXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChfLnN0YXJ0c1dpdGgobWV0aG9kLCAnTmV0d29yay4nKSkge1xuICAgICAgLy8gYWdncmVnYXRlIE5ldHdvcmsgZXZlbnRzLCBhbmQgYWRkIG9yaWdpbmFsIG1ldGhvZCBuYW1lIHRvIHRoZSBhcmd1bWVudHNcbiAgICAgIGV2ZW50TmFtZXMucHVzaCgnTmV0d29ya0V2ZW50Jyk7XG4gICAgICBhcmdzLnB1c2gobWV0aG9kKTtcbiAgICB9XG4gICAgaWYgKF8uc3RhcnRzV2l0aChtZXRob2QsICdDb25zb2xlLicpKSB7XG4gICAgICAvLyBhZ2dyZWdhdGUgTmV0d29yayBldmVudHMsIGFuZCBhZGQgb3JpZ2luYWwgbWV0aG9kIG5hbWUgdG8gdGhlIGFyZ3VtZW50c1xuICAgICAgZXZlbnROYW1lcy5wdXNoKCdDb25zb2xlRXZlbnQnKTtcbiAgICAgIGFyZ3MucHVzaChtZXRob2QpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBldmVudE5hbWVzKSB7XG4gICAgICB0aGlzLmVtaXQobmFtZSwgZXJyb3IsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhbmRsZURhdGFNZXNzYWdlIChwbGlzdCkge1xuICAgIGNvbnN0IGRhdGFLZXkgPSB0aGlzLnBhcnNlRGF0YUtleShwbGlzdCk7XG4gICAgbGV0IG1zZ0lkID0gKGRhdGFLZXkuaWQgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgbGV0IHJlc3VsdCA9IGRhdGFLZXkucmVzdWx0O1xuXG4gICAgbGV0IG1ldGhvZCA9IGRhdGFLZXkubWV0aG9kO1xuICAgIGxldCBwYXJhbXM7XG5cbiAgICBpZiAobWV0aG9kID09PSAnVGFyZ2V0LnRhcmdldENyZWF0ZWQnKSB7XG4gICAgICAvLyB0aGlzIGlzIGluIHJlc3BvbnNlIHRvIGEgYF9ycGNfZm9yd2FyZFNvY2tldFNldHVwOmAgY2FsbFxuICAgICAgLy8gdGFyZ2V0SW5mbzogeyB0YXJnZXRJZDogJ3BhZ2UtMScsIHR5cGU6ICdwYWdlJyB9XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IHRhcmdldEluZm8gPSBkYXRhS2V5LnBhcmFtcy50YXJnZXRJbmZvO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnKSB7XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IG9sZFRhcmdldElkID0gZGF0YUtleS5wYXJhbXMub2xkVGFyZ2V0SWQ7XG4gICAgICBjb25zdCBuZXdUYXJnZXRJZCA9IGRhdGFLZXkucGFyYW1zLm5ld1RhcmdldElkO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnLCBudWxsLCBhcHAsIG9sZFRhcmdldElkLCBuZXdUYXJnZXRJZCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJykge1xuICAgICAgY29uc3QgYXBwID0gcGxpc3QuX19hcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICBjb25zdCB0YXJnZXRJbmZvID0gZGF0YUtleS5wYXJhbXMudGFyZ2V0SW5mbyB8fCB7dGFyZ2V0SWQ6IGRhdGFLZXkucGFyYW1zLnRhcmdldElkfTtcbiAgICAgIHRoaXMuZW1pdCgnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhS2V5LmVycm9yICYmIHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgaWYgKGRhdGFLZXkubWV0aG9kICE9PSAnVGFyZ2V0LmRpc3BhdGNoTWVzc2FnZUZyb21UYXJnZXQnKSB7XG4gICAgICAgIC8vIHRoaXMgc29ydCBvZiBtZXNzYWdlLCBhdCB0aGlzIHBvaW50LCBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudFxuICAgICAgICAvLyB0aGF0IHRoZSBvcmlnaW5hbCBtZXNzYWdlIHdhcyByZWNlaXZlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBUYXJnZXQtYmFzZWQgbWVzc2FnZSB3cmFwcGluZyBhIHByb3RvY29sIG1lc3NhZ2VcbiAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbWVzc2FnZSA9IEpTT04ucGFyc2UoZGF0YUtleS5wYXJhbXMubWVzc2FnZSk7XG4gICAgICAgIG1zZ0lkID0gbWVzc2FnZS5pZDtcbiAgICAgICAgbWV0aG9kID0gbWVzc2FnZS5tZXRob2Q7XG4gICAgICAgIHJlc3VsdCA9IG1lc3NhZ2UucmVzdWx0IHx8IG1lc3NhZ2U7XG4gICAgICAgIHBhcmFtcyA9IHJlc3VsdC5wYXJhbXM7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIHRoZW4gc29tZSBhc3BlY3Qgb2YgdGhlIHByb3RvY29sIGlzIG1pc3NpbmcgdG8gdXNcbiAgICAgICAgLy8gc28gcHJpbnQgdGhlIGVudGlyZSBtZXNzYWdlIHRvIGdldCB2aXNpYmlpdHkgaW50byB3aGF0IGlzIGdvaW5nIG9uXG4gICAgICAgIGxvZy5lcnJvcihgVW5leHBlY3RlZCBtZXNzYWdlIGZvcm1hdCBmcm9tIFdlYiBJbnNwZWN0b3I6YCk7XG4gICAgICAgIHRoaXMud2Fybih1dGlsLmpzb25TdHJpbmdpZnkocGxpc3QpKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMgPSBkYXRhS2V5LnBhcmFtcztcbiAgICB9XG5cbiAgICAvLyB3ZSBjYW4gZ2V0IGFuIGVycm9yLCBvciB3ZSBjYW4gZ2V0IGEgcmVzcG9uc2UgdGhhdCBpcyBhbiBlcnJvclxuICAgIGxldCBlcnJvciA9IGRhdGFLZXkuZXJyb3IgfHwgbnVsbDtcbiAgICBpZiAocmVzdWx0Py53YXNUaHJvd24pIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgPyAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgOiAnRXJyb3Igb2NjdXJyZWQgaW4gaGFuZGxpbmcgZGF0YSBtZXNzYWdlJztcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2hEYXRhTWVzc2FnZShtc2dJZCwgbWV0aG9kLCBwYXJhbXMsIHJlc3VsdCwgZXJyb3IpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBR2UsTUFBTUksaUJBQWlCLFNBQVNDLGVBQWEsQ0FBQztFQUMzREMsV0FBV0EsQ0FBRUMsYUFBYSxHQUFHLEtBQUssRUFBRTtJQUNsQyxLQUFLLENBQUMsQ0FBQztJQUVQLElBQUksQ0FBQ0EsYUFBYSxHQUFHQSxhQUFhO0VBQ3BDO0VBRUEsSUFBSUEsYUFBYUEsQ0FBQSxFQUFJO0lBQ25CLE9BQU8sSUFBSSxDQUFDQyxjQUFjO0VBQzVCO0VBRUEsSUFBSUQsYUFBYUEsQ0FBRUEsYUFBYSxFQUFFO0lBQ2hDLElBQUksQ0FBQ0MsY0FBYyxHQUFHLENBQUMsQ0FBQ0QsYUFBYTtFQUN2QztFQUVBLE1BQU1FLGFBQWFBLENBQUVDLEtBQUssRUFBRTtJQUMxQixNQUFNQyxRQUFRLEdBQUdELEtBQUssQ0FBQ0UsVUFBVTtJQUNqQyxJQUFJLENBQUNELFFBQVEsRUFBRTtNQUNiRSxlQUFHLENBQUNDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztNQUNqQztJQUNGO0lBRUEsTUFBTUMsUUFBUSxHQUFHTCxLQUFLLENBQUNNLFVBQVU7SUFDakMsUUFBUUwsUUFBUTtNQUNkLEtBQUssbUJBQW1CO1FBQ3RCLElBQUksQ0FBQ00sSUFBSSxDQUFDLG1CQUFtQixFQUMzQixJQUFJLEVBQ0pGLFFBQVEsQ0FBQ0csbUJBQW1CLEVBQzVCSCxRQUFRLENBQUNJLG9CQUFvQixFQUM3QkosUUFBUSxDQUFDSyw2QkFDWCxDQUFDO1FBQ0Q7TUFDRixLQUFLLHNDQUFzQztR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
|
|
176
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX3N1cHBvcnQiLCJfZXZlbnRzIiwiUnBjTWVzc2FnZUhhbmRsZXIiLCJFdmVudEVtaXR0ZXJzIiwiY29uc3RydWN0b3IiLCJpc1RhcmdldEJhc2VkIiwiX2lzVGFyZ2V0QmFzZWQiLCJoYW5kbGVNZXNzYWdlIiwicGxpc3QiLCJzZWxlY3RvciIsIl9fc2VsZWN0b3IiLCJsb2ciLCJkZWJ1ZyIsImFyZ3VtZW50IiwiX19hcmd1bWVudCIsImVtaXQiLCJXSVJTaW11bGF0b3JOYW1lS2V5IiwiV0lSU2ltdWxhdG9yQnVpbGRLZXkiLCJXSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleSIsIldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSIsIldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsIldJUkxpc3RpbmdLZXkiLCJoYW5kbGVEYXRhTWVzc2FnZSIsInBhcnNlRGF0YUtleSIsIkpTT04iLCJwYXJzZSIsIldJUk1lc3NhZ2VEYXRhS2V5IiwidG9TdHJpbmciLCJlcnIiLCJlcnJvciIsIl8iLCJ0cnVuY2F0ZSIsInN0cmluZ2lmeSIsImxlbmd0aCIsIkVycm9yIiwibWVzc2FnZSIsImRpc3BhdGNoRGF0YU1lc3NhZ2UiLCJtc2dJZCIsIm1ldGhvZCIsInBhcmFtcyIsInJlc3VsdCIsImlzRW1wdHkiLCJsaXN0ZW5lckNvdW50IiwiX3Jlc3VsdCIsImhhcyIsInZhbHVlIiwiZXZlbnROYW1lcyIsImFyZ3MiLCJwdXNoIiwicmVjb3JkIiwiY29udGV4dCIsInN0YXJ0c1dpdGgiLCJuYW1lIiwiX3Jlc3VsdDIiLCJkYXRhS2V5IiwiaWQiLCJhcHAiLCJ0YXJnZXRJbmZvIiwib2xkVGFyZ2V0SWQiLCJuZXdUYXJnZXRJZCIsInRhcmdldElkIiwid2FybiIsInV0aWwiLCJqc29uU3RyaW5naWZ5Iiwid2FzVGhyb3duIiwiX3Jlc3VsdDMiLCJfcmVzdWx0NCIsIl9yZXN1bHQ1IiwiX3Jlc3VsdDYiLCJkZXNjcmlwdGlvbiIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9ycGMtbWVzc2FnZS1oYW5kbGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBFdmVudEVtaXR0ZXJzIGZyb20gJ2V2ZW50cyc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnBjTWVzc2FnZUhhbmRsZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXJzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgc2V0IGlzVGFyZ2V0QmFzZWQgKGlzVGFyZ2V0QmFzZWQpIHtcbiAgICB0aGlzLl9pc1RhcmdldEJhc2VkID0gISFpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlTWVzc2FnZSAocGxpc3QpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IHBsaXN0Ll9fc2VsZWN0b3I7XG4gICAgaWYgKCFzZWxlY3Rvcikge1xuICAgICAgbG9nLmRlYnVnKCdHb3QgYW4gaW52YWxpZCBwbGlzdCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZ3VtZW50ID0gcGxpc3QuX19hcmd1bWVudDtcbiAgICBzd2l0Y2ggKHNlbGVjdG9yKSB7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydFNldHVwOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRTZXR1cDonLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYXJndW1lbnQuV0lSU2ltdWxhdG9yTmFtZUtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JCdWlsZEtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q29ubmVjdGVkQXBwbGljYXRpb25MaXN0Oic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDb25uZWN0ZWRBcHBsaWNhdGlvbkxpc3Q6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50TGlzdGluZzonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJMaXN0aW5nS2V5XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25EaXNjb25uZWN0ZWQ6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX2FwcGxpY2F0aW9uVXBkYXRlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25VcGRhdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q3VycmVudFN0YXRlOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDdXJyZW50U3RhdGU6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50RGF0YTonOlxuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZURhdGFNZXNzYWdlKHBsaXN0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsb2cuZGVidWcoYERlYnVnZ2VyIGdvdCBhIG1lc3NhZ2UgZm9yICcke3NlbGVjdG9yfScgYW5kIGhhdmUgbm8gYCArXG4gICAgICAgICAgYGhhbmRsZXIsIGRvaW5nIG5vdGhpbmcuYCk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VEYXRhS2V5IChwbGlzdCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShwbGlzdC5fX2FyZ3VtZW50LldJUk1lc3NhZ2VEYXRhS2V5LnRvU3RyaW5nKCd1dGY4JykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKGBVbnBhcnNlYWJsZSBtZXNzYWdlIGRhdGE6ICR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShwbGlzdCksIHtsZW5ndGg6IDEwMH0pfWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgbWVzc2FnZSBkYXRhOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc3BhdGNoRGF0YU1lc3NhZ2UgKG1zZ0lkLCBtZXRob2QsIHBhcmFtcywgcmVzdWx0LCBlcnJvcikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICBpZiAoIV8uaXNFbXB0eShtc2dJZCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgSGFuZGxpbmcgbWVzc2FnZSAoaWQ6ICcke21zZ0lkfScpYCk7XG4gICAgfVxuXG4gICAgaWYgKG1zZ0lkKSB7XG4gICAgICBpZiAodGhpcy5saXN0ZW5lckNvdW50KG1zZ0lkKSkge1xuICAgICAgICBpZiAoXy5oYXMocmVzdWx0Py5yZXN1bHQsICd2YWx1ZScpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXQobXNnSWQsIGVycm9yLCByZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmVycm9yKGBXZWIgSW5zcGVjdG9yIHJldHVybmVkIGRhdGEgZm9yIG1lc3NhZ2UgJyR7bXNnSWR9JyBgICtcbiAgICAgICAgICBgYnV0IHdlIHdlcmUgbm90IHdhaXRpbmcgZm9yIHRoYXQgbWVzc2FnZSEgYCArXG4gICAgICAgICAgYHJlc3VsdDogJyR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX0nOyBgICtcbiAgICAgICAgICBgZXJyb3I6ICcke0pTT04uc3RyaW5naWZ5KGVycm9yKX0nYCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGV2ZW50TmFtZXMgPSBbbWV0aG9kXTtcbiAgICBsZXQgYXJncyA9IFtwYXJhbXNdO1xuXG4gICAgLy8gc29tZSBldmVudHMgaGF2ZSBkaWZmZXJlbnQgbmFtZXMsIG9yIHRoZSBhcmd1bWVudHMgYXJlIG1hcHBlZCBmcm9tIHRoZVxuICAgIC8vIHBhcmFtZXRlcnMgcmVjZWl2ZWRcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAnUGFnZS5mcmFtZVN0b3BwZWRMb2FkaW5nJzpcbiAgICAgICAgZXZlbnROYW1lcy5wdXNoKCdQYWdlLmZyYW1lTmF2aWdhdGVkJyk7XG4gICAgICBjYXNlICdQYWdlLmZyYW1lTmF2aWdhdGVkJzogLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1mYWxsdGhyb3VnaFxuICAgICAgICBhcmdzID0gW2AnJHttZXRob2R9JyBldmVudGBdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1RpbWVsaW5lLmV2ZW50UmVjb3JkZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcyB8fCBwYXJhbXMucmVjb3JkXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDb25zb2xlLm1lc3NhZ2VBZGRlZCc6XG4gICAgICAgIGFyZ3MgPSBbcGFyYW1zLm1lc3NhZ2VdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1J1bnRpbWUuZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcy5jb250ZXh0XTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBwYXNzXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChfLnN0YXJ0c1dpdGgobWV0aG9kLCAnTmV0d29yay4nKSkge1xuICAgICAgLy8gYWdncmVnYXRlIE5ldHdvcmsgZXZlbnRzLCBhbmQgYWRkIG9yaWdpbmFsIG1ldGhvZCBuYW1lIHRvIHRoZSBhcmd1bWVudHNcbiAgICAgIGV2ZW50TmFtZXMucHVzaCgnTmV0d29ya0V2ZW50Jyk7XG4gICAgICBhcmdzLnB1c2gobWV0aG9kKTtcbiAgICB9XG4gICAgaWYgKF8uc3RhcnRzV2l0aChtZXRob2QsICdDb25zb2xlLicpKSB7XG4gICAgICAvLyBhZ2dyZWdhdGUgTmV0d29yayBldmVudHMsIGFuZCBhZGQgb3JpZ2luYWwgbWV0aG9kIG5hbWUgdG8gdGhlIGFyZ3VtZW50c1xuICAgICAgZXZlbnROYW1lcy5wdXNoKCdDb25zb2xlRXZlbnQnKTtcbiAgICAgIGFyZ3MucHVzaChtZXRob2QpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBldmVudE5hbWVzKSB7XG4gICAgICB0aGlzLmVtaXQobmFtZSwgZXJyb3IsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhbmRsZURhdGFNZXNzYWdlIChwbGlzdCkge1xuICAgIGNvbnN0IGRhdGFLZXkgPSB0aGlzLnBhcnNlRGF0YUtleShwbGlzdCk7XG4gICAgbGV0IG1zZ0lkID0gKGRhdGFLZXkuaWQgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgbGV0IHJlc3VsdCA9IGRhdGFLZXkucmVzdWx0O1xuXG4gICAgbGV0IG1ldGhvZCA9IGRhdGFLZXkubWV0aG9kO1xuICAgIGxldCBwYXJhbXM7XG5cbiAgICBpZiAobWV0aG9kID09PSAnVGFyZ2V0LnRhcmdldENyZWF0ZWQnKSB7XG4gICAgICAvLyB0aGlzIGlzIGluIHJlc3BvbnNlIHRvIGEgYF9ycGNfZm9yd2FyZFNvY2tldFNldHVwOmAgY2FsbFxuICAgICAgLy8gdGFyZ2V0SW5mbzogeyB0YXJnZXRJZDogJ3BhZ2UtMScsIHR5cGU6ICdwYWdlJyB9XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IHRhcmdldEluZm8gPSBkYXRhS2V5LnBhcmFtcy50YXJnZXRJbmZvO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnKSB7XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IG9sZFRhcmdldElkID0gZGF0YUtleS5wYXJhbXMub2xkVGFyZ2V0SWQ7XG4gICAgICBjb25zdCBuZXdUYXJnZXRJZCA9IGRhdGFLZXkucGFyYW1zLm5ld1RhcmdldElkO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnLCBudWxsLCBhcHAsIG9sZFRhcmdldElkLCBuZXdUYXJnZXRJZCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJykge1xuICAgICAgY29uc3QgYXBwID0gcGxpc3QuX19hcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICBjb25zdCB0YXJnZXRJbmZvID0gZGF0YUtleS5wYXJhbXMudGFyZ2V0SW5mbyB8fCB7dGFyZ2V0SWQ6IGRhdGFLZXkucGFyYW1zLnRhcmdldElkfTtcbiAgICAgIHRoaXMuZW1pdCgnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhS2V5LmVycm9yICYmIHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgaWYgKGRhdGFLZXkubWV0aG9kICE9PSAnVGFyZ2V0LmRpc3BhdGNoTWVzc2FnZUZyb21UYXJnZXQnKSB7XG4gICAgICAgIC8vIHRoaXMgc29ydCBvZiBtZXNzYWdlLCBhdCB0aGlzIHBvaW50LCBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudFxuICAgICAgICAvLyB0aGF0IHRoZSBvcmlnaW5hbCBtZXNzYWdlIHdhcyByZWNlaXZlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBUYXJnZXQtYmFzZWQgbWVzc2FnZSB3cmFwcGluZyBhIHByb3RvY29sIG1lc3NhZ2VcbiAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbWVzc2FnZSA9IEpTT04ucGFyc2UoZGF0YUtleS5wYXJhbXMubWVzc2FnZSk7XG4gICAgICAgIG1zZ0lkID0gbWVzc2FnZS5pZDtcbiAgICAgICAgbWV0aG9kID0gbWVzc2FnZS5tZXRob2Q7XG4gICAgICAgIHJlc3VsdCA9IG1lc3NhZ2UucmVzdWx0IHx8IG1lc3NhZ2U7XG4gICAgICAgIHBhcmFtcyA9IHJlc3VsdC5wYXJhbXM7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIHRoZW4gc29tZSBhc3BlY3Qgb2YgdGhlIHByb3RvY29sIGlzIG1pc3NpbmcgdG8gdXNcbiAgICAgICAgLy8gc28gcHJpbnQgdGhlIGVudGlyZSBtZXNzYWdlIHRvIGdldCB2aXNpYmlpdHkgaW50byB3aGF0IGlzIGdvaW5nIG9uXG4gICAgICAgIGxvZy5lcnJvcihgVW5leHBlY3RlZCBtZXNzYWdlIGZvcm1hdCBmcm9tIFdlYiBJbnNwZWN0b3I6YCk7XG4gICAgICAgIHRoaXMud2Fybih1dGlsLmpzb25TdHJpbmdpZnkocGxpc3QpKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMgPSBkYXRhS2V5LnBhcmFtcztcbiAgICB9XG5cbiAgICAvLyB3ZSBjYW4gZ2V0IGFuIGVycm9yLCBvciB3ZSBjYW4gZ2V0IGEgcmVzcG9uc2UgdGhhdCBpcyBhbiBlcnJvclxuICAgIGxldCBlcnJvciA9IGRhdGFLZXkuZXJyb3IgfHwgbnVsbDtcbiAgICBpZiAocmVzdWx0Py53YXNUaHJvd24pIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgPyAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgOiAnRXJyb3Igb2NjdXJyZWQgaW4gaGFuZGxpbmcgZGF0YSBtZXNzYWdlJztcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2hEYXRhTWVzc2FnZShtc2dJZCwgbWV0aG9kLCBwYXJhbXMsIHJlc3VsdCwgZXJyb3IpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBR2UsTUFBTUksaUJBQWlCLFNBQVNDLGVBQWEsQ0FBQztFQUMzREMsV0FBV0EsQ0FBRUMsYUFBYSxHQUFHLEtBQUssRUFBRTtJQUNsQyxLQUFLLENBQUMsQ0FBQztJQUVQLElBQUksQ0FBQ0EsYUFBYSxHQUFHQSxhQUFhO0VBQ3BDO0VBRUEsSUFBSUEsYUFBYUEsQ0FBQSxFQUFJO0lBQ25CLE9BQU8sSUFBSSxDQUFDQyxjQUFjO0VBQzVCO0VBRUEsSUFBSUQsYUFBYUEsQ0FBRUEsYUFBYSxFQUFFO0lBQ2hDLElBQUksQ0FBQ0MsY0FBYyxHQUFHLENBQUMsQ0FBQ0QsYUFBYTtFQUN2QztFQUVBLE1BQU1FLGFBQWFBLENBQUVDLEtBQUssRUFBRTtJQUMxQixNQUFNQyxRQUFRLEdBQUdELEtBQUssQ0FBQ0UsVUFBVTtJQUNqQyxJQUFJLENBQUNELFFBQVEsRUFBRTtNQUNiRSxlQUFHLENBQUNDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztNQUNqQztJQUNGO0lBRUEsTUFBTUMsUUFBUSxHQUFHTCxLQUFLLENBQUNNLFVBQVU7SUFDakMsUUFBUUwsUUFBUTtNQUNkLEtBQUssbUJBQW1CO1FBQ3RCLElBQUksQ0FBQ00sSUFBSSxDQUFDLG1CQUFtQixFQUMzQixJQUFJLEVBQ0pGLFFBQVEsQ0FBQ0csbUJBQW1CLEVBQzVCSCxRQUFRLENBQUNJLG9CQUFvQixFQUM3QkosUUFBUSxDQUFDSyw2QkFDWCxDQUFDO1FBQ0Q7TUFDRixLQUFLLHNDQUFzQztRQUN6QyxJQUFJLENBQUNILElBQUksQ0FBQyxzQ0FBc0MsRUFDOUMsSUFBSSxFQUNKRixRQUFRLENBQUNNLDJCQUNYLENBQUM7UUFDRDtNQUNGLEtBQUssOEJBQThCO1FBQ2pDLElBQUksQ0FBQ0osSUFBSSxDQUFDLHlCQUF5QixFQUNqQyxJQUFJLEVBQ0pGLFFBQVEsQ0FBQ08sMkJBQTJCLEVBQ3BDUCxRQUFRLENBQUNRLGFBQ1gsQ0FBQztRQUNEO01BQ0YsS0FBSyw0QkFBNEI7UUFDL0IsSUFBSSxDQUFDTixJQUFJLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxFQUFFRixRQUFRLENBQUM7UUFDdkQ7TUFDRixLQUFLLCtCQUErQjtRQUNsQyxJQUFJLENBQUNFLElBQUksQ0FBQywrQkFBK0IsRUFBRSxJQUFJLEVBQUVGLFFBQVEsQ0FBQztRQUMxRDtNQUNGLEtBQUssMEJBQTBCO1FBQzdCLElBQUksQ0FBQ0UsSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUksRUFBRUYsUUFBUSxDQUFDO1FBQ3JEO01BQ0YsS0FBSyxpQ0FBaUM7UUFDcEMsSUFBSSxDQUFDRSxJQUFJLENBQUMsaUNBQWlDLEVBQUUsSUFBSSxFQUFFRixRQUFRLENBQUM7UUFDNUQ7TUFDRixLQUFLLDBCQUEwQjtRQUM3QixJQUFJLENBQUNFLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLEVBQUVGLFFBQVEsQ0FBQztRQUNyRDtNQUNGLEtBQUssMkJBQTJCO1FBQzlCLE1BQU0sSUFBSSxDQUFDUyxpQkFBaUIsQ0FBQ2QsS0FBSyxDQUFDO1FBQ25DO01BQ0Y7UUFDRUcsZUFBRyxDQUFDQyxLQUFLLENBQUUsK0JBQThCSCxRQUFTLGdCQUFlLEdBQzlELHlCQUF3QixDQUFDO0lBQ2hDO0VBQ0Y7RUFFQWMsWUFBWUEsQ0FBRWYsS0FBSyxFQUFFO0lBQ25CLElBQUk7TUFDRixPQUFPZ0IsSUFBSSxDQUFDQyxLQUFLLENBQUNqQixLQUFLLENBQUNNLFVBQVUsQ0FBQ1ksaUJBQWlCLENBQUNDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RSxDQUFDLENBQUMsT0FBT0MsR0FBRyxFQUFFO01BQ1pqQixlQUFHLENBQUNrQixLQUFLLENBQUUsNkJBQTRCQyxlQUFDLENBQUNDLFFBQVEsQ0FBQ1AsSUFBSSxDQUFDUSxTQUFTLENBQUN4QixLQUFLLENBQUMsRUFBRTtRQUFDeUIsTUFBTSxFQUFFO01BQUcsQ0FBQyxDQUFFLEVBQUMsQ0FBQztNQUMxRixNQUFNLElBQUlDLEtBQUssQ0FBRSxpQ0FBZ0NOLEdBQUcsQ0FBQ08sT0FBUSxFQUFDLENBQUM7SUFDakU7RUFDRjtFQUVBLE1BQU1DLG1CQUFtQkEsQ0FBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsTUFBTSxFQUFFWCxLQUFLLEVBQUU7SUFDL0QsSUFBSSxDQUFDQyxlQUFDLENBQUNXLE9BQU8sQ0FBQ0osS0FBSyxDQUFDLEVBQUU7TUFDckIxQixlQUFHLENBQUNDLEtBQUssQ0FBRSwwQkFBeUJ5QixLQUFNLElBQUcsQ0FBQztJQUNoRDtJQUVBLElBQUlBLEtBQUssRUFBRTtNQUNULElBQUksSUFBSSxDQUFDSyxhQUFhLENBQUNMLEtBQUssQ0FBQyxFQUFFO1FBQUEsSUFBQU0sT0FBQTtRQUM3QixJQUFJYixlQUFDLENBQUNjLEdBQUcsRUFBQUQsT0FBQSxHQUFDSCxNQUFNLGNBQUFHLE9BQUEsdUJBQU5BLE9BQUEsQ0FBUUgsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1VBQ2xDQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDSyxLQUFLO1FBQzlCO1FBQ0EsSUFBSSxDQUFDOUIsSUFBSSxDQUFDc0IsS0FBSyxFQUFFUixLQUFLLEVBQUVXLE1BQU0sQ0FBQztNQUNqQyxDQUFDLE1BQU07UUFDTDdCLGVBQUcsQ0FBQ2tCLEtBQUssQ0FBRSw0Q0FBMkNRLEtBQU0sSUFBRyxHQUM1RCw0Q0FBMkMsR0FDM0MsWUFBV2IsSUFBSSxDQUFDUSxTQUFTLENBQUNRLE1BQU0sQ0FBRSxLQUFJLEdBQ3RDLFdBQVVoQixJQUFJLENBQUNRLFNBQVMsQ0FBQ0gsS0FBSyxDQUFFLEdBQUUsQ0FBQztNQUN4QztNQUNBO0lBQ0Y7SUFFQSxJQUFJaUIsVUFBVSxHQUFHLENBQUNSLE1BQU0sQ0FBQztJQUN6QixJQUFJUyxJQUFJLEdBQUcsQ0FBQ1IsTUFBTSxDQUFDO0lBSW5CLFFBQVFELE1BQU07TUFDWixLQUFLLDBCQUEwQjtRQUM3QlEsVUFBVSxDQUFDRSxJQUFJLENBQUMscUJBQXFCLENBQUM7TUFDeEMsS0FBSyxxQkFBcUI7UUFDeEJELElBQUksR0FBRyxDQUFFLElBQUdULE1BQU8sU0FBUSxDQUFDO1FBQzVCO01BQ0YsS0FBSyx3QkFBd0I7UUFDM0JTLElBQUksR0FBRyxDQUFDUixNQUFNLElBQUlBLE1BQU0sQ0FBQ1UsTUFBTSxDQUFDO1FBQ2hDO01BQ0YsS0FBSyxzQkFBc0I7UUFDekJGLElBQUksR0FBRyxDQUFDUixNQUFNLENBQUNKLE9BQU8sQ0FBQztRQUN2QjtNQUNGLEtBQUssaUNBQWlDO1FBQ3BDWSxJQUFJLEdBQUcsQ0FBQ1IsTUFBTSxDQUFDVyxPQUFPLENBQUM7UUFDdkI7TUFDRjtRQUVFO0lBQ0o7SUFFQSxJQUFJcEIsZUFBQyxDQUFDcUIsVUFBVSxDQUFDYixNQUFNLEVBQUUsVUFBVSxDQUFDLEVBQUU7TUFFcENRLFVBQVUsQ0FBQ0UsSUFBSSxDQUFDLGNBQWMsQ0FBQztNQUMvQkQsSUFBSSxDQUFDQyxJQUFJLENBQUNWLE1BQU0sQ0FBQztJQUNuQjtJQUNBLElBQUlSLGVBQUMsQ0FBQ3FCLFVBQVUsQ0FBQ2IsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFO01BRXBDUSxVQUFVLENBQUNFLElBQUksQ0FBQyxjQUFjLENBQUM7TUFDL0JELElBQUksQ0FBQ0MsSUFBSSxDQUFDVixNQUFNLENBQUM7SUFDbkI7SUFFQSxLQUFLLE1BQU1jLElBQUksSUFBSU4sVUFBVSxFQUFFO01BQzdCLElBQUksQ0FBQy9CLElBQUksQ0FBQ3FDLElBQUksRUFBRXZCLEtBQUssRUFBRSxHQUFHa0IsSUFBSSxDQUFDO0lBQ2pDO0VBQ0Y7RUFFQSxNQUFNekIsaUJBQWlCQSxDQUFFZCxLQUFLLEVBQUU7SUFBQSxJQUFBNkMsUUFBQTtJQUM5QixNQUFNQyxPQUFPLEdBQUcsSUFBSSxDQUFDL0IsWUFBWSxDQUFDZixLQUFLLENBQUM7SUFDeEMsSUFBSTZCLEtBQUssR0FBRyxDQUFDaUIsT0FBTyxDQUFDQyxFQUFFLElBQUksRUFBRSxFQUFFNUIsUUFBUSxDQUFDLENBQUM7SUFDekMsSUFBSWEsTUFBTSxHQUFHYyxPQUFPLENBQUNkLE1BQU07SUFFM0IsSUFBSUYsTUFBTSxHQUFHZ0IsT0FBTyxDQUFDaEIsTUFBTTtJQUMzQixJQUFJQyxNQUFNO0lBRVYsSUFBSUQsTUFBTSxLQUFLLHNCQUFzQixFQUFFO01BR3JDLE1BQU1rQixHQUFHLEdBQUdoRCxLQUFLLENBQUNNLFVBQVUsQ0FBQ00sMkJBQTJCO01BQ3hELE1BQU1xQyxVQUFVLEdBQUdILE9BQU8sQ0FBQ2YsTUFBTSxDQUFDa0IsVUFBVTtNQUM1QyxJQUFJLENBQUMxQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxFQUFFeUMsR0FBRyxFQUFFQyxVQUFVLENBQUM7TUFDeEQ7SUFDRixDQUFDLE1BQU0sSUFBSW5CLE1BQU0sS0FBSyxtQ0FBbUMsRUFBRTtNQUN6RCxNQUFNa0IsR0FBRyxHQUFHaEQsS0FBSyxDQUFDTSxVQUFVLENBQUNNLDJCQUEyQjtNQUN4RCxNQUFNc0MsV0FBVyxHQUFHSixPQUFPLENBQUNmLE1BQU0sQ0FBQ21CLFdBQVc7TUFDOUMsTUFBTUMsV0FBVyxHQUFHTCxPQUFPLENBQUNmLE1BQU0sQ0FBQ29CLFdBQVc7TUFDOUMsSUFBSSxDQUFDNUMsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLElBQUksRUFBRXlDLEdBQUcsRUFBRUUsV0FBVyxFQUFFQyxXQUFXLENBQUM7TUFDbkY7SUFDRixDQUFDLE1BQU0sSUFBSXJCLE1BQU0sS0FBSyx3QkFBd0IsRUFBRTtNQUM5QyxNQUFNa0IsR0FBRyxHQUFHaEQsS0FBSyxDQUFDTSxVQUFVLENBQUNNLDJCQUEyQjtNQUN4RCxNQUFNcUMsVUFBVSxHQUFHSCxPQUFPLENBQUNmLE1BQU0sQ0FBQ2tCLFVBQVUsSUFBSTtRQUFDRyxRQUFRLEVBQUVOLE9BQU8sQ0FBQ2YsTUFBTSxDQUFDcUI7TUFBUSxDQUFDO01BQ25GLElBQUksQ0FBQzdDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLEVBQUV5QyxHQUFHLEVBQUVDLFVBQVUsQ0FBQztNQUMxRDtJQUNGO0lBRUEsSUFBSSxDQUFDSCxPQUFPLENBQUN6QixLQUFLLElBQUksSUFBSSxDQUFDeEIsYUFBYSxFQUFFO01BQ3hDLElBQUlpRCxPQUFPLENBQUNoQixNQUFNLEtBQUssa0NBQWtDLEVBQUU7UUFHekQ7TUFDRjtNQUdBLElBQUlILE9BQU87TUFDWCxJQUFJO1FBQ0ZBLE9BQU8sR0FBR1gsSUFBSSxDQUFDQyxLQUFLLENBQUM2QixPQUFPLENBQUNmLE1BQU0sQ0FBQ0osT0FBTyxDQUFDO1FBQzVDRSxLQUFLLEdBQUdGLE9BQU8sQ0FBQ29CLEVBQUU7UUFDbEJqQixNQUFNLEdBQUdILE9BQU8sQ0FBQ0csTUFBTTtRQUN2QkUsTUFBTSxHQUFHTCxPQUFPLENBQUNLLE1BQU0sSUFBSUwsT0FBTztRQUNsQ0ksTUFBTSxHQUFHQyxNQUFNLENBQUNELE1BQU07TUFDeEIsQ0FBQyxDQUFDLE9BQU9YLEdBQUcsRUFBRTtRQUdaakIsZUFBRyxDQUFDa0IsS0FBSyxDQUFFLCtDQUE4QyxDQUFDO1FBQzFELElBQUksQ0FBQ2dDLElBQUksQ0FBQ0MsYUFBSSxDQUFDQyxhQUFhLENBQUN2RCxLQUFLLENBQUMsQ0FBQztRQUNwQyxNQUFNb0IsR0FBRztNQUNYO0lBQ0YsQ0FBQyxNQUFNO01BQ0xXLE1BQU0sR0FBR2UsT0FBTyxDQUFDZixNQUFNO0lBQ3pCO0lBR0EsSUFBSVYsS0FBSyxHQUFHeUIsT0FBTyxDQUFDekIsS0FBSyxJQUFJLElBQUk7SUFDakMsS0FBQXdCLFFBQUEsR0FBSWIsTUFBTSxjQUFBYSxRQUFBLGVBQU5BLFFBQUEsQ0FBUVcsU0FBUyxFQUFFO01BQUEsSUFBQUMsUUFBQSxFQUFBQyxRQUFBLEVBQUFDLFFBQUEsRUFBQUMsUUFBQTtNQUNyQixNQUFNakMsT0FBTyxHQUFJLENBQUE4QixRQUFBLEdBQUF6QixNQUFNLGNBQUF5QixRQUFBLGdCQUFBQSxRQUFBLEdBQU5BLFFBQUEsQ0FBUXpCLE1BQU0sY0FBQXlCLFFBQUEsZUFBZEEsUUFBQSxDQUFnQnBCLEtBQUssS0FBQXFCLFFBQUEsR0FBSTFCLE1BQU0sY0FBQTBCLFFBQUEsZ0JBQUFBLFFBQUEsR0FBTkEsUUFBQSxDQUFRMUIsTUFBTSxjQUFBMEIsUUFBQSxlQUFkQSxRQUFBLENBQWdCRyxXQUFXLEdBQ2hFLEVBQUFGLFFBQUEsR0FBQTNCLE1BQU0sY0FBQTJCLFFBQUEsZ0JBQUFBLFFBQUEsR0FBTkEsUUFBQSxDQUFRM0IsTUFBTSxjQUFBMkIsUUFBQSx1QkFBZEEsUUFBQSxDQUFnQnRCLEtBQUssT0FBQXVCLFFBQUEsR0FBSTVCLE1BQU0sY0FBQTRCLFFBQUEsZ0JBQUFBLFFBQUEsR0FBTkEsUUFBQSxDQUFRNUIsTUFBTSxjQUFBNEIsUUFBQSx1QkFBZEEsUUFBQSxDQUFnQkMsV0FBVyxJQUNyRCx5Q0FBeUM7TUFDN0N4QyxLQUFLLEdBQUcsSUFBSUssS0FBSyxDQUFDQyxPQUFPLENBQUM7SUFDNUI7SUFFQSxNQUFNLElBQUksQ0FBQ0MsbUJBQW1CLENBQUNDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLE1BQU0sRUFBRVgsS0FBSyxDQUFDO0VBQ3RFO0FBQ0Y7QUFBQ3lDLE9BQUEsQ0FBQUMsT0FBQSxHQUFBckUsaUJBQUEifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-message-handler.js","names":["_logger","_interopRequireDefault","require","_lodash","_support","_events","RpcMessageHandler","EventEmitters","constructor","isTargetBased","_isTargetBased","handleMessage","plist","selector","__selector","log","debug","argument","__argument","emit","WIRSimulatorNameKey","WIRSimulatorBuildKey","WIRSimulatorProductVersionKey","WIRApplicationDictionaryKey","WIRApplicationIdentifierKey","WIRListingKey","handleDataMessage","parseDataKey","JSON","parse","WIRMessageDataKey","toString","err","error","_","truncate","stringify","length","Error","message","dispatchDataMessage","msgId","method","params","result","isEmpty","listenerCount","_result","has","value","eventNames","args","push","record","context","startsWith","name","_result2","dataKey","id","app","targetInfo","oldTargetId","newTargetId","targetId","warn","util","jsonStringify","wasThrown","_result3","_result4","_result5","_result6","description","exports","default"],"sources":["../../../lib/rpc/rpc-message-handler.js"],"sourcesContent":["import log from '../logger';\nimport _ from 'lodash';\nimport { util } from '@appium/support';\nimport EventEmitters from 'events';\n\n\nexport default class RpcMessageHandler extends EventEmitters {\n constructor (isTargetBased = false) {\n super();\n\n this.isTargetBased = isTargetBased;\n }\n\n get isTargetBased () {\n return this._isTargetBased;\n }\n\n set isTargetBased (isTargetBased) {\n this._isTargetBased = !!isTargetBased;\n }\n\n async handleMessage (plist) {\n const selector = plist.__selector;\n if (!selector) {\n log.debug('Got an invalid plist');\n return;\n }\n\n const argument = plist.__argument;\n switch (selector) {\n case '_rpc_reportSetup:':\n this.emit('_rpc_reportSetup:',\n null,\n argument.WIRSimulatorNameKey,\n argument.WIRSimulatorBuildKey,\n argument.WIRSimulatorProductVersionKey\n );\n break;\n case '_rpc_reportConnectedApplicationList:':\n this.emit('_rpc_reportConnectedApplicationList:',\n null,\n argument.WIRApplicationDictionaryKey\n );\n break;\n case '_rpc_applicationSentListing:':\n this.emit('_rpc_forwardGetListing:',\n null,\n argument.WIRApplicationIdentifierKey,\n argument.WIRListingKey\n );\n break;\n case '_rpc_applicationConnected:':\n this.emit('_rpc_applicationConnected:', null, argument);\n break;\n case '_rpc_applicationDisconnected:':\n this.emit('_rpc_applicationDisconnected:', null, argument);\n break;\n case '_rpc_applicationUpdated:':\n this.emit('_rpc_applicationUpdated:', null, argument);\n break;\n case '_rpc_reportConnectedDriverList:':\n this.emit('_rpc_reportConnectedDriverList:', null, argument);\n break;\n case '_rpc_reportCurrentState:':\n this.emit('_rpc_reportCurrentState:', null, argument);\n break;\n case '_rpc_applicationSentData:':\n await this.handleDataMessage(plist);\n break;\n default:\n log.debug(`Debugger got a message for '${selector}' and have no ` +\n `handler, doing nothing.`);\n }\n }\n\n parseDataKey (plist) {\n try {\n return JSON.parse(plist.__argument.WIRMessageDataKey.toString('utf8'));\n } catch (err) {\n log.error(`Unparseable message data: ${_.truncate(JSON.stringify(plist), {length: 100})}`);\n throw new Error(`Unable to parse message data: ${err.message}`);\n }\n }\n\n async dispatchDataMessage (msgId, method, params, result, error) { // eslint-disable-line require-await\n if (!_.isEmpty(msgId)) {\n log.debug(`Handling message (id: '${msgId}')`);\n }\n\n if (msgId) {\n if (this.listenerCount(msgId)) {\n if (_.has(result?.result, 'value')) {\n result = result.result.value;\n }\n this.emit(msgId, error, result);\n } else {\n log.error(`Web Inspector returned data for message '${msgId}' ` +\n `but we were not waiting for that message! ` +\n `result: '${JSON.stringify(result)}'; ` +\n `error: '${JSON.stringify(error)}'`);\n }\n return;\n }\n\n let eventNames = [method];\n let args = [params];\n\n // some events have different names, or the arguments are mapped from the\n // parameters received\n switch (method) {\n case 'Page.frameStoppedLoading':\n eventNames.push('Page.frameNavigated');\n // eslint-disable-line no-fallthrough\n case 'Page.frameNavigated':\n args = [`'${method}' event`];\n break;\n case 'Timeline.eventRecorded':\n args = [params || params.record];\n break;\n case 'Console.messageAdded':\n args = [params.message];\n break;\n case 'Runtime.executionContextCreated':\n args = [params.context];\n break;\n default:\n // pass\n break;\n }\n\n if (_.startsWith(method, 'Network.')) {\n // aggregate Network events, and add original method name to the arguments\n eventNames.push('NetworkEvent');\n args.push(method);\n }\n if (_.startsWith(method, 'Console.')) {\n // aggregate Network events, and add original method name to the arguments\n eventNames.push('ConsoleEvent');\n args.push(method);\n }\n\n for (const name of eventNames) {\n this.emit(name, error, ...args);\n }\n }\n\n async handleDataMessage (plist) {\n const dataKey = this.parseDataKey(plist);\n let msgId = (dataKey.id || '').toString();\n let result = dataKey.result;\n\n let method = dataKey.method;\n let params;\n\n if (method === 'Target.targetCreated') {\n // this is in response to a `_rpc_forwardSocketSetup:` call\n // targetInfo: { targetId: 'page-1', type: 'page' }\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const targetInfo = dataKey.params.targetInfo;\n this.emit('Target.targetCreated', null, app, targetInfo);\n return;\n } else if (method === 'Target.didCommitProvisionalTarget') {\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const oldTargetId = dataKey.params.oldTargetId;\n const newTargetId = dataKey.params.newTargetId;\n this.emit('Target.didCommitProvisionalTarget', null, app, oldTargetId, newTargetId);\n return;\n } else if (method === 'Target.targetDestroyed') {\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const targetInfo = dataKey.params.targetInfo || {targetId: dataKey.params.targetId};\n this.emit('Target.targetDestroyed', null, app, targetInfo);\n return;\n }\n\n if (!dataKey.error && this.isTargetBased) {\n if (dataKey.method !== 'Target.dispatchMessageFromTarget') {\n // this sort of message, at this point, is just an acknowledgement\n // that the original message was received\n return;\n }\n\n // at this point, we have a Target-based message wrapping a protocol message\n let message;\n try {\n message = JSON.parse(dataKey.params.message);\n msgId = message.id;\n method = message.method;\n result = message.result || message;\n params = result.params;\n } catch (err) {\n // if this happens then some aspect of the protocol is missing to us\n // so print the entire message to get visibiity into what is going on\n log.error(`Unexpected message format from Web Inspector:`);\n this.warn(util.jsonStringify(plist));\n throw err;\n }\n } else {\n params = dataKey.params;\n }\n\n // we can get an error, or we can get a response that is an error\n let error = dataKey.error || null;\n if (result?.wasThrown) {\n const message = (result?.result?.value || result?.result?.description)\n ? (result?.result?.value || result?.result?.description)\n : 'Error occurred in handling data message';\n error = new Error(message);\n }\n\n await this.dispatchDataMessage(msgId, method, params, result, error);\n }\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAGe,MAAMI,iBAAiB,SAASC,eAAa,CAAC;EAC3DC,WAAWA,CAAEC,aAAa,GAAG,KAAK,EAAE;IAClC,KAAK,CAAC,CAAC;IAEP,IAAI,CAACA,aAAa,GAAGA,aAAa;EACpC;EAEA,IAAIA,aAAaA,CAAA,EAAI;IACnB,OAAO,IAAI,CAACC,cAAc;EAC5B;EAEA,IAAID,aAAaA,CAAEA,aAAa,EAAE;IAChC,IAAI,CAACC,cAAc,GAAG,CAAC,CAACD,aAAa;EACvC;EAEA,MAAME,aAAaA,CAAEC,KAAK,EAAE;IAC1B,MAAMC,QAAQ,GAAGD,KAAK,CAACE,UAAU;IACjC,IAAI,CAACD,QAAQ,EAAE;MACbE,eAAG,CAACC,KAAK,CAAC,sBAAsB,CAAC;MACjC;IACF;IAEA,MAAMC,QAAQ,GAAGL,KAAK,CAACM,UAAU;IACjC,QAAQL,QAAQ;MACd,KAAK,mBAAmB;QACtB,IAAI,CAACM,IAAI,CAAC,mBAAmB,EAC3B,IAAI,EACJF,QAAQ,CAACG,mBAAmB,EAC5BH,QAAQ,CAACI,oBAAoB,EAC7BJ,QAAQ,CAACK,6BACX,CAAC;QACD;MACF,KAAK,sCAAsC;QACzC,IAAI,CAACH,IAAI,CAAC,sCAAsC,EAC9C,IAAI,EACJF,QAAQ,CAACM,2BACX,CAAC;QACD;MACF,KAAK,8BAA8B;QACjC,IAAI,CAACJ,IAAI,CAAC,yBAAyB,EACjC,IAAI,EACJF,QAAQ,CAACO,2BAA2B,EACpCP,QAAQ,CAACQ,aACX,CAAC;QACD;MACF,KAAK,4BAA4B;QAC/B,IAAI,CAACN,IAAI,CAAC,4BAA4B,EAAE,IAAI,EAAEF,QAAQ,CAAC;QACvD;MACF,KAAK,+BAA+B;QAClC,IAAI,CAACE,IAAI,CAAC,+BAA+B,EAAE,IAAI,EAAEF,QAAQ,CAAC;QAC1D;MACF,KAAK,0BAA0B;QAC7B,IAAI,CAACE,IAAI,CAAC,0BAA0B,EAAE,IAAI,EAAEF,QAAQ,CAAC;QACrD;MACF,KAAK,iCAAiC;QACpC,IAAI,CAACE,IAAI,CAAC,iCAAiC,EAAE,IAAI,EAAEF,QAAQ,CAAC;QAC5D;MACF,KAAK,0BAA0B;QAC7B,IAAI,CAACE,IAAI,CAAC,0BAA0B,EAAE,IAAI,EAAEF,QAAQ,CAAC;QACrD;MACF,KAAK,2BAA2B;QAC9B,MAAM,IAAI,CAACS,iBAAiB,CAACd,KAAK,CAAC;QACnC;MACF;QACEG,eAAG,CAACC,KAAK,CAAE,+BAA8BH,QAAS,gBAAe,GAC9D,yBAAwB,CAAC;IAChC;EACF;EAEAc,YAAYA,CAAEf,KAAK,EAAE;IACnB,IAAI;MACF,OAAOgB,IAAI,CAACC,KAAK,CAACjB,KAAK,CAACM,UAAU,CAACY,iBAAiB,CAACC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZjB,eAAG,CAACkB,KAAK,CAAE,6BAA4BC,eAAC,CAACC,QAAQ,CAACP,IAAI,CAACQ,SAAS,CAACxB,KAAK,CAAC,EAAE;QAACyB,MAAM,EAAE;MAAG,CAAC,CAAE,EAAC,CAAC;MAC1F,MAAM,IAAIC,KAAK,CAAE,iCAAgCN,GAAG,CAACO,OAAQ,EAAC,CAAC;IACjE;EACF;EAEA,MAAMC,mBAAmBA,CAAEC,KAAK,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEX,KAAK,EAAE;IAC/D,IAAI,CAACC,eAAC,CAACW,OAAO,CAACJ,KAAK,CAAC,EAAE;MACrB1B,eAAG,CAACC,KAAK,CAAE,0BAAyByB,KAAM,IAAG,CAAC;IAChD;IAEA,IAAIA,KAAK,EAAE;MACT,IAAI,IAAI,CAACK,aAAa,CAACL,KAAK,CAAC,EAAE;QAAA,IAAAM,OAAA;QAC7B,IAAIb,eAAC,CAACc,GAAG,EAAAD,OAAA,GAACH,MAAM,cAAAG,OAAA,uBAANA,OAAA,CAAQH,MAAM,EAAE,OAAO,CAAC,EAAE;UAClCA,MAAM,GAAGA,MAAM,CAACA,MAAM,CAACK,KAAK;QAC9B;QACA,IAAI,CAAC9B,IAAI,CAACsB,KAAK,EAAER,KAAK,EAAEW,MAAM,CAAC;MACjC,CAAC,MAAM;QACL7B,eAAG,CAACkB,KAAK,CAAE,4CAA2CQ,KAAM,IAAG,GAC5D,4CAA2C,GAC3C,YAAWb,IAAI,CAACQ,SAAS,CAACQ,MAAM,CAAE,KAAI,GACtC,WAAUhB,IAAI,CAACQ,SAAS,CAACH,KAAK,CAAE,GAAE,CAAC;MACxC;MACA;IACF;IAEA,IAAIiB,UAAU,GAAG,CAACR,MAAM,CAAC;IACzB,IAAIS,IAAI,GAAG,CAACR,MAAM,CAAC;IAInB,QAAQD,MAAM;MACZ,KAAK,0BAA0B;QAC7BQ,UAAU,CAACE,IAAI,CAAC,qBAAqB,CAAC;MAExC,KAAK,qBAAqB;QACxBD,IAAI,GAAG,CAAE,IAAGT,MAAO,SAAQ,CAAC;QAC5B;MACF,KAAK,wBAAwB;QAC3BS,IAAI,GAAG,CAACR,MAAM,IAAIA,MAAM,CAACU,MAAM,CAAC;QAChC;MACF,KAAK,sBAAsB;QACzBF,IAAI,GAAG,CAACR,MAAM,CAACJ,OAAO,CAAC;QACvB;MACF,KAAK,iCAAiC;QACpCY,IAAI,GAAG,CAACR,MAAM,CAACW,OAAO,CAAC;QACvB;MACF;QAEE;IACJ;IAEA,IAAIpB,eAAC,CAACqB,UAAU,CAACb,MAAM,EAAE,UAAU,CAAC,EAAE;MAEpCQ,UAAU,CAACE,IAAI,CAAC,cAAc,CAAC;MAC/BD,IAAI,CAACC,IAAI,CAACV,MAAM,CAAC;IACnB;IACA,IAAIR,eAAC,CAACqB,UAAU,CAACb,MAAM,EAAE,UAAU,CAAC,EAAE;MAEpCQ,UAAU,CAACE,IAAI,CAAC,cAAc,CAAC;MAC/BD,IAAI,CAACC,IAAI,CAACV,MAAM,CAAC;IACnB;IAEA,KAAK,MAAMc,IAAI,IAAIN,UAAU,EAAE;MAC7B,IAAI,CAAC/B,IAAI,CAACqC,IAAI,EAAEvB,KAAK,EAAE,GAAGkB,IAAI,CAAC;IACjC;EACF;EAEA,MAAMzB,iBAAiBA,CAAEd,KAAK,EAAE;IAAA,IAAA6C,QAAA;IAC9B,MAAMC,OAAO,GAAG,IAAI,CAAC/B,YAAY,CAACf,KAAK,CAAC;IACxC,IAAI6B,KAAK,GAAG,CAACiB,OAAO,CAACC,EAAE,IAAI,EAAE,EAAE5B,QAAQ,CAAC,CAAC;IACzC,IAAIa,MAAM,GAAGc,OAAO,CAACd,MAAM;IAE3B,IAAIF,MAAM,GAAGgB,OAAO,CAAChB,MAAM;IAC3B,IAAIC,MAAM;IAEV,IAAID,MAAM,KAAK,sBAAsB,EAAE;MAGrC,MAAMkB,GAAG,GAAGhD,KAAK,CAACM,UAAU,CAACM,2BAA2B;MACxD,MAAMqC,UAAU,GAAGH,OAAO,CAACf,MAAM,CAACkB,UAAU;MAC5C,IAAI,CAAC1C,IAAI,CAAC,sBAAsB,EAAE,IAAI,EAAEyC,GAAG,EAAEC,UAAU,CAAC;MACxD;IACF,CAAC,MAAM,IAAInB,MAAM,KAAK,mCAAmC,EAAE;MACzD,MAAMkB,GAAG,GAAGhD,KAAK,CAACM,UAAU,CAACM,2BAA2B;MACxD,MAAMsC,WAAW,GAAGJ,OAAO,CAACf,MAAM,CAACmB,WAAW;MAC9C,MAAMC,WAAW,GAAGL,OAAO,CAACf,MAAM,CAACoB,WAAW;MAC9C,IAAI,CAAC5C,IAAI,CAAC,mCAAmC,EAAE,IAAI,EAAEyC,GAAG,EAAEE,WAAW,EAAEC,WAAW,CAAC;MACnF;IACF,CAAC,MAAM,IAAIrB,MAAM,KAAK,wBAAwB,EAAE;MAC9C,MAAMkB,GAAG,GAAGhD,KAAK,CAACM,UAAU,CAACM,2BAA2B;MACxD,MAAMqC,UAAU,GAAGH,OAAO,CAACf,MAAM,CAACkB,UAAU,IAAI;QAACG,QAAQ,EAAEN,OAAO,CAACf,MAAM,CAACqB;MAAQ,CAAC;MACnF,IAAI,CAAC7C,IAAI,CAAC,wBAAwB,EAAE,IAAI,EAAEyC,GAAG,EAAEC,UAAU,CAAC;MAC1D;IACF;IAEA,IAAI,CAACH,OAAO,CAACzB,KAAK,IAAI,IAAI,CAACxB,aAAa,EAAE;MACxC,IAAIiD,OAAO,CAAChB,MAAM,KAAK,kCAAkC,EAAE;QAGzD;MACF;MAGA,IAAIH,OAAO;MACX,IAAI;QACFA,OAAO,GAAGX,IAAI,CAACC,KAAK,CAAC6B,OAAO,CAACf,MAAM,CAACJ,OAAO,CAAC;QAC5CE,KAAK,GAAGF,OAAO,CAACoB,EAAE;QAClBjB,MAAM,GAAGH,OAAO,CAACG,MAAM;QACvBE,MAAM,GAAGL,OAAO,CAACK,MAAM,IAAIL,OAAO;QAClCI,MAAM,GAAGC,MAAM,CAACD,MAAM;MACxB,CAAC,CAAC,OAAOX,GAAG,EAAE;QAGZjB,eAAG,CAACkB,KAAK,CAAE,+CAA8C,CAAC;QAC1D,IAAI,CAACgC,IAAI,CAACC,aAAI,CAACC,aAAa,CAACvD,KAAK,CAAC,CAAC;QACpC,MAAMoB,GAAG;MACX;IACF,CAAC,MAAM;MACLW,MAAM,GAAGe,OAAO,CAACf,MAAM;IACzB;IAGA,IAAIV,KAAK,GAAGyB,OAAO,CAACzB,KAAK,IAAI,IAAI;IACjC,KAAAwB,QAAA,GAAIb,MAAM,cAAAa,QAAA,eAANA,QAAA,CAAQW,SAAS,EAAE;MAAA,IAAAC,QAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAC,QAAA;MACrB,MAAMjC,OAAO,GAAI,CAAA8B,QAAA,GAAAzB,MAAM,cAAAyB,QAAA,gBAAAA,QAAA,GAANA,QAAA,CAAQzB,MAAM,cAAAyB,QAAA,eAAdA,QAAA,CAAgBpB,KAAK,KAAAqB,QAAA,GAAI1B,MAAM,cAAA0B,QAAA,gBAAAA,QAAA,GAANA,QAAA,CAAQ1B,MAAM,cAAA0B,QAAA,eAAdA,QAAA,CAAgBG,WAAW,GAChE,EAAAF,QAAA,GAAA3B,MAAM,cAAA2B,QAAA,gBAAAA,QAAA,GAANA,QAAA,CAAQ3B,MAAM,cAAA2B,QAAA,uBAAdA,QAAA,CAAgBtB,KAAK,OAAAuB,QAAA,GAAI5B,MAAM,cAAA4B,QAAA,gBAAAA,QAAA,GAANA,QAAA,CAAQ5B,MAAM,cAAA4B,QAAA,uBAAdA,QAAA,CAAgBC,WAAW,IACrD,yCAAyC;MAC7CxC,KAAK,GAAG,IAAIK,KAAK,CAACC,OAAO,CAAC;IAC5B;IAEA,MAAM,IAAI,CAACC,mBAAmB,CAACC,KAAK,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEX,KAAK,CAAC;EACtE;AACF;AAACyC,OAAA,CAAAC,OAAA,GAAArE,iBAAA"}
|
|
1
|
+
{"version":3,"file":"rpc-message-handler.js","names":["_logger","_interopRequireDefault","require","_lodash","_support","_events","RpcMessageHandler","EventEmitters","constructor","isTargetBased","_isTargetBased","handleMessage","plist","selector","__selector","log","debug","argument","__argument","emit","WIRSimulatorNameKey","WIRSimulatorBuildKey","WIRSimulatorProductVersionKey","WIRApplicationDictionaryKey","WIRApplicationIdentifierKey","WIRListingKey","handleDataMessage","parseDataKey","JSON","parse","WIRMessageDataKey","toString","err","error","_","truncate","stringify","length","Error","message","dispatchDataMessage","msgId","method","params","result","isEmpty","listenerCount","_result","has","value","eventNames","args","push","record","context","startsWith","name","_result2","dataKey","id","app","targetInfo","oldTargetId","newTargetId","targetId","warn","util","jsonStringify","wasThrown","_result3","_result4","_result5","_result6","description","exports","default"],"sources":["../../../lib/rpc/rpc-message-handler.js"],"sourcesContent":["import log from '../logger';\nimport _ from 'lodash';\nimport { util } from '@appium/support';\nimport EventEmitters from 'events';\n\n\nexport default class RpcMessageHandler extends EventEmitters {\n constructor (isTargetBased = false) {\n super();\n\n this.isTargetBased = isTargetBased;\n }\n\n get isTargetBased () {\n return this._isTargetBased;\n }\n\n set isTargetBased (isTargetBased) {\n this._isTargetBased = !!isTargetBased;\n }\n\n async handleMessage (plist) {\n const selector = plist.__selector;\n if (!selector) {\n log.debug('Got an invalid plist');\n return;\n }\n\n const argument = plist.__argument;\n switch (selector) {\n case '_rpc_reportSetup:':\n this.emit('_rpc_reportSetup:',\n null,\n argument.WIRSimulatorNameKey,\n argument.WIRSimulatorBuildKey,\n argument.WIRSimulatorProductVersionKey\n );\n break;\n case '_rpc_reportConnectedApplicationList:':\n this.emit('_rpc_reportConnectedApplicationList:',\n null,\n argument.WIRApplicationDictionaryKey\n );\n break;\n case '_rpc_applicationSentListing:':\n this.emit('_rpc_forwardGetListing:',\n null,\n argument.WIRApplicationIdentifierKey,\n argument.WIRListingKey\n );\n break;\n case '_rpc_applicationConnected:':\n this.emit('_rpc_applicationConnected:', null, argument);\n break;\n case '_rpc_applicationDisconnected:':\n this.emit('_rpc_applicationDisconnected:', null, argument);\n break;\n case '_rpc_applicationUpdated:':\n this.emit('_rpc_applicationUpdated:', null, argument);\n break;\n case '_rpc_reportConnectedDriverList:':\n this.emit('_rpc_reportConnectedDriverList:', null, argument);\n break;\n case '_rpc_reportCurrentState:':\n this.emit('_rpc_reportCurrentState:', null, argument);\n break;\n case '_rpc_applicationSentData:':\n await this.handleDataMessage(plist);\n break;\n default:\n log.debug(`Debugger got a message for '${selector}' and have no ` +\n `handler, doing nothing.`);\n }\n }\n\n parseDataKey (plist) {\n try {\n return JSON.parse(plist.__argument.WIRMessageDataKey.toString('utf8'));\n } catch (err) {\n log.error(`Unparseable message data: ${_.truncate(JSON.stringify(plist), {length: 100})}`);\n throw new Error(`Unable to parse message data: ${err.message}`);\n }\n }\n\n async dispatchDataMessage (msgId, method, params, result, error) { // eslint-disable-line require-await\n if (!_.isEmpty(msgId)) {\n log.debug(`Handling message (id: '${msgId}')`);\n }\n\n if (msgId) {\n if (this.listenerCount(msgId)) {\n if (_.has(result?.result, 'value')) {\n result = result.result.value;\n }\n this.emit(msgId, error, result);\n } else {\n log.error(`Web Inspector returned data for message '${msgId}' ` +\n `but we were not waiting for that message! ` +\n `result: '${JSON.stringify(result)}'; ` +\n `error: '${JSON.stringify(error)}'`);\n }\n return;\n }\n\n let eventNames = [method];\n let args = [params];\n\n // some events have different names, or the arguments are mapped from the\n // parameters received\n switch (method) {\n case 'Page.frameStoppedLoading':\n eventNames.push('Page.frameNavigated');\n case 'Page.frameNavigated': // eslint-disable-line no-fallthrough\n args = [`'${method}' event`];\n break;\n case 'Timeline.eventRecorded':\n args = [params || params.record];\n break;\n case 'Console.messageAdded':\n args = [params.message];\n break;\n case 'Runtime.executionContextCreated':\n args = [params.context];\n break;\n default:\n // pass\n break;\n }\n\n if (_.startsWith(method, 'Network.')) {\n // aggregate Network events, and add original method name to the arguments\n eventNames.push('NetworkEvent');\n args.push(method);\n }\n if (_.startsWith(method, 'Console.')) {\n // aggregate Network events, and add original method name to the arguments\n eventNames.push('ConsoleEvent');\n args.push(method);\n }\n\n for (const name of eventNames) {\n this.emit(name, error, ...args);\n }\n }\n\n async handleDataMessage (plist) {\n const dataKey = this.parseDataKey(plist);\n let msgId = (dataKey.id || '').toString();\n let result = dataKey.result;\n\n let method = dataKey.method;\n let params;\n\n if (method === 'Target.targetCreated') {\n // this is in response to a `_rpc_forwardSocketSetup:` call\n // targetInfo: { targetId: 'page-1', type: 'page' }\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const targetInfo = dataKey.params.targetInfo;\n this.emit('Target.targetCreated', null, app, targetInfo);\n return;\n } else if (method === 'Target.didCommitProvisionalTarget') {\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const oldTargetId = dataKey.params.oldTargetId;\n const newTargetId = dataKey.params.newTargetId;\n this.emit('Target.didCommitProvisionalTarget', null, app, oldTargetId, newTargetId);\n return;\n } else if (method === 'Target.targetDestroyed') {\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const targetInfo = dataKey.params.targetInfo || {targetId: dataKey.params.targetId};\n this.emit('Target.targetDestroyed', null, app, targetInfo);\n return;\n }\n\n if (!dataKey.error && this.isTargetBased) {\n if (dataKey.method !== 'Target.dispatchMessageFromTarget') {\n // this sort of message, at this point, is just an acknowledgement\n // that the original message was received\n return;\n }\n\n // at this point, we have a Target-based message wrapping a protocol message\n let message;\n try {\n message = JSON.parse(dataKey.params.message);\n msgId = message.id;\n method = message.method;\n result = message.result || message;\n params = result.params;\n } catch (err) {\n // if this happens then some aspect of the protocol is missing to us\n // so print the entire message to get visibiity into what is going on\n log.error(`Unexpected message format from Web Inspector:`);\n this.warn(util.jsonStringify(plist));\n throw err;\n }\n } else {\n params = dataKey.params;\n }\n\n // we can get an error, or we can get a response that is an error\n let error = dataKey.error || null;\n if (result?.wasThrown) {\n const message = (result?.result?.value || result?.result?.description)\n ? (result?.result?.value || result?.result?.description)\n : 'Error occurred in handling data message';\n error = new Error(message);\n }\n\n await this.dispatchDataMessage(msgId, method, params, result, error);\n }\n}\n"],"mappings":"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"}
|
package/lib/atoms.js
CHANGED
|
@@ -6,6 +6,13 @@ import { getModuleRoot } from './utils';
|
|
|
6
6
|
|
|
7
7
|
const ATOMS_CACHE = {};
|
|
8
8
|
|
|
9
|
+
function atomsStringify(obj) {
|
|
10
|
+
if (typeof obj === 'undefined') {
|
|
11
|
+
return 'undefined';
|
|
12
|
+
}
|
|
13
|
+
return JSON.stringify(obj);
|
|
14
|
+
}
|
|
15
|
+
|
|
9
16
|
|
|
10
17
|
async function getAtom (atomName) {
|
|
11
18
|
// check if we have already loaded and cached this atom
|
|
@@ -25,7 +32,7 @@ async function wrapScriptForFrame (script, frame) {
|
|
|
25
32
|
log.debug(`Wrapping script for frame '${frame}'`);
|
|
26
33
|
const elFromCache = await getAtom('get_element_from_cache');
|
|
27
34
|
return `(function (window) { var document = window.document; ` +
|
|
28
|
-
`return (${script}); })((${elFromCache.toString('utf8')})(${
|
|
35
|
+
`return (${script}); })((${elFromCache.toString('utf8')})(${atomsStringify(frame)}))`;
|
|
29
36
|
}
|
|
30
37
|
|
|
31
38
|
async function getScriptForAtom (atom, args, frames = [], asyncCallBack = null) {
|
|
@@ -42,7 +49,7 @@ async function getScriptForAtom (atom, args, frames = [], asyncCallBack = null)
|
|
|
42
49
|
}
|
|
43
50
|
|
|
44
51
|
// add the arguments, as strings
|
|
45
|
-
args = args.map(
|
|
52
|
+
args = args.map(atomsStringify);
|
|
46
53
|
if (asyncCallBack) {
|
|
47
54
|
script += `(${args.join(',')}, ${asyncCallBack}, true)`;
|
|
48
55
|
} else {
|
|
@@ -110,8 +110,7 @@ export default class RpcMessageHandler extends EventEmitters {
|
|
|
110
110
|
switch (method) {
|
|
111
111
|
case 'Page.frameStoppedLoading':
|
|
112
112
|
eventNames.push('Page.frameNavigated');
|
|
113
|
-
|
|
114
|
-
case 'Page.frameNavigated':
|
|
113
|
+
case 'Page.frameNavigated': // eslint-disable-line no-fallthrough
|
|
115
114
|
args = [`'${method}' event`];
|
|
116
115
|
break;
|
|
117
116
|
case 'Timeline.eventRecorded':
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"keywords": [
|
|
5
5
|
"appium"
|
|
6
6
|
],
|
|
7
|
-
"version": "
|
|
7
|
+
"version": "10.0.0-beta.2",
|
|
8
8
|
"author": "Appium Contributors",
|
|
9
9
|
"license": "Apache-2.0",
|
|
10
10
|
"repository": {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"asyncbox": "^2.6.0",
|
|
42
42
|
"bluebird": "^3.4.7",
|
|
43
43
|
"fancy-log": "^2.0.0",
|
|
44
|
-
"glob": "^
|
|
44
|
+
"glob": "^10.3.3",
|
|
45
45
|
"lodash": "^4.17.11",
|
|
46
46
|
"source-map-support": "^0.x",
|
|
47
47
|
"teen_process": "^2.0.0"
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
"test": "mocha --exit --timeout 1m \"./test/unit/**/*-specs.js\"",
|
|
58
58
|
"e2e-test": "mocha --exit --timeout 1m \"./test/functional/**/*-specs.js\"",
|
|
59
59
|
"inspect-safari": "node build/bin/web_inspector_proxy.js",
|
|
60
|
-
"build:atoms": "
|
|
61
|
-
"build:atoms:import": "node scripts/
|
|
60
|
+
"build:atoms": "npm run build:selenium && npm run build:atoms:import",
|
|
61
|
+
"build:atoms:import": "node scripts/build-atoms.js",
|
|
62
62
|
"build:selenium": "node scripts/build-selenium.js"
|
|
63
63
|
},
|
|
64
64
|
"pre-commit": [
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"singleQuote": true
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"@appium/eslint-config-appium": "^
|
|
79
|
+
"@appium/eslint-config-appium": "^8.0.4",
|
|
80
80
|
"@babel/cli": "^7.18.10",
|
|
81
81
|
"@babel/core": "^7.18.10",
|
|
82
82
|
"@babel/eslint-parser": "^7.18.9",
|
|
@@ -90,13 +90,13 @@
|
|
|
90
90
|
"chai": "^4.1.2",
|
|
91
91
|
"chai-as-promised": "^7.1.1",
|
|
92
92
|
"conventional-changelog-conventionalcommits": "^6.0.0",
|
|
93
|
-
"eslint": "^
|
|
93
|
+
"eslint": "^8.46.0",
|
|
94
94
|
"eslint-config-prettier": "^8.5.0",
|
|
95
95
|
"finalhandler": "^1.1.2",
|
|
96
96
|
"eslint-plugin-import": "^2.26.0",
|
|
97
|
-
"eslint-plugin-mocha": "^
|
|
97
|
+
"eslint-plugin-mocha": "^10.1.0",
|
|
98
98
|
"eslint-plugin-promise": "^6.0.0",
|
|
99
|
-
"lint-staged": "^
|
|
99
|
+
"lint-staged": "^13.0.3",
|
|
100
100
|
"mocha": "^10.0.0",
|
|
101
101
|
"mocha-junit-reporter": "^2.0.0",
|
|
102
102
|
"mocha-multi-reporters": "^1.5.1",
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"pre-commit": "^1.1.3",
|
|
105
105
|
"prettier": "^3.0.0",
|
|
106
106
|
"serve-static": "^1.14.1",
|
|
107
|
-
"semantic-release": "^
|
|
107
|
+
"semantic-release": "^21.0.7",
|
|
108
108
|
"sinon": "^15.0.0"
|
|
109
109
|
}
|
|
110
110
|
}
|
package/scripts/build-atoms.js
CHANGED
package/scripts/common.js
CHANGED
|
@@ -1,45 +1,27 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
const log = require('fancy-log');
|
|
3
3
|
const fs = require('fs');
|
|
4
|
-
const { exec
|
|
5
|
-
const glob = require('glob');
|
|
6
|
-
const B = require('bluebird');
|
|
4
|
+
const { exec } = require('teen_process');
|
|
5
|
+
const { glob } = require('glob');
|
|
7
6
|
|
|
8
|
-
const SELENIUM_BRANCH = 'selenium-
|
|
7
|
+
const SELENIUM_BRANCH = 'selenium-4.11.0';
|
|
9
8
|
const SELENIUM_GITHUB = 'https://github.com/SeleniumHQ/selenium.git';
|
|
10
9
|
|
|
10
|
+
const BAZEL_WD_ATOMS_TARGET = '//javascript/webdriver/atoms/...';
|
|
11
|
+
const BAZEL_WD_ATOMS_INJECT_TARGET = '//javascript/webdriver/atoms/inject/...';
|
|
12
|
+
const BAZEL_ATOMS_TARGET = '//javascript/atoms/...';
|
|
13
|
+
|
|
11
14
|
const WORKING_ROOT_DIR = path.resolve(__dirname, '..');
|
|
12
15
|
const TMP_DIRECTORY = path.resolve(WORKING_ROOT_DIR, 'tmp');
|
|
13
16
|
const SELENIUM_DIRECTORY = path.resolve(TMP_DIRECTORY, 'selenium');
|
|
17
|
+
const BAZEL_OUT_BASEDIR = path.resolve(SELENIUM_DIRECTORY, 'bazel-out');
|
|
18
|
+
const JS_RELATIVE_DIR = path.join('bin', 'javascript');
|
|
19
|
+
const BAZEL_FRAGMENTS_DIR = path.join(JS_RELATIVE_DIR, 'atoms', 'fragments');
|
|
20
|
+
const BAZEL_WD_ATOMS_DIR = path.join(JS_RELATIVE_DIR, 'webdriver', 'atoms');
|
|
21
|
+
const BAZEL_WD_ATOMS_INJECT_DIR = path.join(BAZEL_WD_ATOMS_DIR, 'inject');
|
|
14
22
|
const ATOMS_DIRECTORY = path.resolve(WORKING_ROOT_DIR, 'atoms');
|
|
15
|
-
const ATOMS_BUILD_DIRECTORY = path.resolve(WORKING_ROOT_DIR, 'atoms_build_dir');
|
|
16
23
|
const LAST_UPDATE_FILE = path.resolve(ATOMS_DIRECTORY, 'lastupdate');
|
|
17
24
|
|
|
18
|
-
const TEMP_BUILD_DIRECTORY_NAME = 'appium-atoms-driver';
|
|
19
|
-
|
|
20
|
-
const ATOMS_BUILD_TARGET = 'build_atoms';
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
async function copyFolderRecursive(src, dest) {
|
|
24
|
-
const entries = await fs.promises.readdir(src, { withFileTypes: true });
|
|
25
|
-
try {
|
|
26
|
-
await fs.promises.access(dest, fs.constants.R_OK);
|
|
27
|
-
} catch (err) {
|
|
28
|
-
await fs.promises.mkdir(dest, { recursive: true });
|
|
29
|
-
}
|
|
30
|
-
for (const entry of entries) {
|
|
31
|
-
const srcPath = path.join(src, entry.name);
|
|
32
|
-
const destPath = path.join(dest, entry.name);
|
|
33
|
-
if (entry.isDirectory()) {
|
|
34
|
-
await copyFolderRecursive(srcPath, destPath);
|
|
35
|
-
} else if (entry.isFile()) {
|
|
36
|
-
await fs.promises.copyFile(srcPath, destPath);
|
|
37
|
-
} else {
|
|
38
|
-
log(`Skip copying ${srcPath}`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
25
|
async function rmDir (dir) {
|
|
44
26
|
try {
|
|
45
27
|
await fs.promises.access(dir, fs.constants.R_OK);
|
|
@@ -92,7 +74,7 @@ async function atomsCleanDir () {
|
|
|
92
74
|
|
|
93
75
|
async function atomsClean () {
|
|
94
76
|
log('Building atoms');
|
|
95
|
-
await exec('
|
|
77
|
+
await exec('bazel', ['clean'], {cwd: SELENIUM_DIRECTORY});
|
|
96
78
|
}
|
|
97
79
|
|
|
98
80
|
async function atomsMkdir () {
|
|
@@ -100,96 +82,74 @@ async function atomsMkdir () {
|
|
|
100
82
|
await fs.promises.mkdir(ATOMS_DIRECTORY, { recursive: true });
|
|
101
83
|
}
|
|
102
84
|
|
|
103
|
-
async function
|
|
104
|
-
log(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
cwd: SELENIUM_DIRECTORY,
|
|
113
|
-
});
|
|
114
|
-
proc.on('lines-stdout', function linesStdout (lines) {
|
|
115
|
-
for (const line of lines) {
|
|
116
|
-
// clean up the output, which has long lines
|
|
117
|
-
// each 'fragment' of an atom produces two line of output
|
|
118
|
-
// Generating export file for webdriver.atoms.inject.action.clear at build/javascript/webdriver/atoms/fragments/inject/clear_exports.js
|
|
119
|
-
// Compiling //javascript/webdriver/atoms/fragments/inject:clear as build/javascript/webdriver/atoms/fragments/inject/clear.js
|
|
120
|
-
// so split each at either 'at' or 'as'
|
|
121
|
-
let buffer = [];
|
|
122
|
-
for (const word of line.split(' ')) {
|
|
123
|
-
if (['at', 'as'].includes(word)) {
|
|
124
|
-
// output the buffer
|
|
125
|
-
log(buffer.join(' '));
|
|
126
|
-
// clear the buffer, and make the next line indented
|
|
127
|
-
buffer = [` `];
|
|
128
|
-
}
|
|
129
|
-
// add the word to the buffer
|
|
130
|
-
buffer.push(word);
|
|
131
|
-
}
|
|
132
|
-
log(buffer.join(' '));
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
proc.on('lines-stderr', function linesStderr (lines) {
|
|
136
|
-
for (const line of lines) {
|
|
137
|
-
log.error(line);
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
await new B((resolve, reject) => {
|
|
141
|
-
proc.on('exit', function exit (code, signal) {
|
|
142
|
-
log(`Finished with code '${code}' and signal '${signal}'`);
|
|
143
|
-
if (code === 0) {
|
|
144
|
-
return resolve(code);
|
|
145
|
-
} else {
|
|
146
|
-
return reject(code);
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
proc.start();
|
|
150
|
-
});
|
|
85
|
+
async function getBazelOutDir () {
|
|
86
|
+
log(`Finding bazel output dir`);
|
|
87
|
+
const outDirMatch = '*-fastbuild';
|
|
88
|
+
const relativeDir = (await glob(outDirMatch, {cwd: BAZEL_OUT_BASEDIR}))[0];
|
|
89
|
+
if (!relativeDir) {
|
|
90
|
+
throw new Error(`Expected architecture-specific Bazel output directory was not found in ` +
|
|
91
|
+
`'${BAZEL_OUT_BASEDIR}'. We looked for something matching '${outDirMatch}`);
|
|
92
|
+
}
|
|
93
|
+
return path.resolve(BAZEL_OUT_BASEDIR, relativeDir);
|
|
151
94
|
}
|
|
152
95
|
|
|
153
|
-
async function
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if (['_exports.js', '_ie.js', '_build_atoms.js', 'deps.js'].some((x) => filename.endsWith(x))) {
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
return true;
|
|
168
|
-
};
|
|
96
|
+
async function atomsBuild () {
|
|
97
|
+
for (const target of [
|
|
98
|
+
BAZEL_ATOMS_TARGET,
|
|
99
|
+
BAZEL_WD_ATOMS_TARGET,
|
|
100
|
+
BAZEL_WD_ATOMS_INJECT_TARGET,
|
|
101
|
+
]) {
|
|
102
|
+
log(`Running bazel build for ${target}`);
|
|
103
|
+
await exec('bazel', ['build', target], {cwd: SELENIUM_DIRECTORY});
|
|
104
|
+
}
|
|
105
|
+
log(`Bazel builds complete`);
|
|
106
|
+
}
|
|
169
107
|
|
|
170
|
-
|
|
108
|
+
async function atomsCopyAtoms (atomsDir, fileFilter = () => true) {
|
|
109
|
+
log(`Copying any atoms found in ${atomsDir} to atoms dir`);
|
|
110
|
+
const filesToCopy = (await glob('**/*-ios.js', {
|
|
171
111
|
absolute: true,
|
|
172
112
|
strict: false,
|
|
173
|
-
cwd:
|
|
174
|
-
}))
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
)
|
|
113
|
+
cwd: atomsDir,
|
|
114
|
+
})).filter(fileFilter);
|
|
115
|
+
for (const file of filesToCopy) {
|
|
116
|
+
// convert - to _ for backwards compatibility with old atoms
|
|
117
|
+
const newFileName = path.basename(file).replace('-ios', '').replace(/-/g, '_');
|
|
118
|
+
const to = path.join(ATOMS_DIRECTORY, newFileName);
|
|
119
|
+
log(`Copying ${file} to ${to}`);
|
|
120
|
+
// delete an existing file if it was put here by an earlier run of the function, to enable
|
|
121
|
+
// overwriting
|
|
122
|
+
try {
|
|
123
|
+
await fs.promises.unlink(to);
|
|
124
|
+
} catch (err) {
|
|
125
|
+
if (!err.message.includes('ENOENT')) {
|
|
126
|
+
throw err;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
await fs.promises.copyFile(file, to);
|
|
179
130
|
}
|
|
180
131
|
}
|
|
181
132
|
|
|
182
133
|
async function atomsTimestamp () {
|
|
134
|
+
log(`Adding timestamp to atoms build dir`);
|
|
183
135
|
const {stdout} = await exec('git', ['log', '-n', '1', '--decorate=full'], {cwd: SELENIUM_DIRECTORY});
|
|
184
136
|
await fs.promises.writeFile(LAST_UPDATE_FILE, Buffer.from(`${new Date()}\n\n${stdout}`));
|
|
185
137
|
}
|
|
186
138
|
|
|
187
|
-
module.exports.importAtoms = async function importAtoms() {
|
|
139
|
+
module.exports.importAtoms = async function importAtoms(shouldClean) {
|
|
188
140
|
await atomsCleanDir();
|
|
189
|
-
|
|
141
|
+
if (shouldClean) {
|
|
142
|
+
await atomsClean();
|
|
143
|
+
}
|
|
190
144
|
await atomsMkdir();
|
|
191
|
-
await
|
|
192
|
-
await
|
|
193
|
-
|
|
145
|
+
await atomsBuild();
|
|
146
|
+
const bazelOutDir = await getBazelOutDir();
|
|
147
|
+
const atomsDir = path.resolve(bazelOutDir, BAZEL_WD_ATOMS_DIR);
|
|
148
|
+
const atomsInjectDir = path.resolve(bazelOutDir, BAZEL_WD_ATOMS_INJECT_DIR);
|
|
149
|
+
const fragmentsDir = path.resolve(bazelOutDir, BAZEL_FRAGMENTS_DIR);
|
|
150
|
+
await atomsCopyAtoms(fragmentsDir);
|
|
151
|
+
// copy fragments first and atoms later so atoms overwrite fragments
|
|
152
|
+
await atomsCopyAtoms(atomsDir);
|
|
153
|
+
await atomsCopyAtoms(atomsInjectDir);
|
|
194
154
|
await atomsTimestamp();
|
|
195
155
|
};
|