appium-uiautomator2-driver 2.29.9 → 2.29.11
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 +14 -0
- package/build/index.js +2 -3
- package/build/lib/commands/actions.js +4 -7
- package/build/lib/commands/actions.js.map +1 -1
- package/build/lib/commands/alert.js +4 -7
- package/build/lib/commands/alert.js.map +1 -1
- package/build/lib/commands/app-strings.js +2 -3
- package/build/lib/commands/app-strings.js.map +1 -1
- package/build/lib/commands/battery.js +3 -5
- package/build/lib/commands/battery.js.map +1 -1
- package/build/lib/commands/element.js +4 -7
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/find.js +3 -5
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/commands/general.js +2 -3
- package/build/lib/commands/general.js.map +1 -1
- package/build/lib/commands/gestures.js +2 -3
- package/build/lib/commands/gestures.js.map +1 -1
- package/build/lib/commands/index.js +2 -3
- package/build/lib/commands/index.js.map +1 -1
- package/build/lib/commands/screenshot.js +2 -3
- package/build/lib/commands/screenshot.js.map +1 -1
- package/build/lib/commands/touch.js +2 -3
- package/build/lib/commands/touch.js.map +1 -1
- package/build/lib/commands/viewport.js +3 -5
- package/build/lib/commands/viewport.js.map +1 -1
- package/build/lib/css-converter.js +2 -3
- package/build/lib/css-converter.js.map +1 -1
- package/build/lib/desired-caps.js +2 -3
- package/build/lib/desired-caps.js.map +1 -1
- package/build/lib/driver.js +2 -3
- package/build/lib/driver.js.map +1 -1
- package/build/lib/extensions.js +3 -5
- package/build/lib/extensions.js.map +1 -1
- package/build/lib/helpers.js +2 -3
- package/build/lib/helpers.js.map +1 -1
- package/build/lib/logger.js +2 -3
- package/build/lib/logger.js.map +1 -1
- package/build/lib/method-map.js +2 -3
- package/build/lib/method-map.js.map +1 -1
- package/build/lib/uiautomator2.js +5 -9
- package/build/lib/uiautomator2.js.map +1 -1
- package/npm-shrinkwrap.json +4883 -0
- package/package.json +6 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot.js","names":["_lodash","_interopRequireDefault","require","_bluebird","commands","DISPLAY_PATTERN","getScreenshot","mjpegStream","data","lastChunkPNGBase64","log","warn","uiautomator2","jwproxy","command","mobileScreenshots","opts","displaysInfo","adb","shell","infos","match","exec","id","isDefault","name","_","isEmpty","debug","Error","info","JSON","stringify","toB64Screenshot","dispId","takeScreenshot","toString","displayId","displayIdStr","isNaN","payload","allInfos","values","screenshots","B","all","map","zip","_default","exports","default"],"sources":["../../../lib/commands/screenshot.js"],"sourcesContent":["import _ from 'lodash';\nimport B from 'bluebird';\n\nconst commands = {};\n\n// Display 4619827259835644672 (HWC display 0): port=0 pnpId=GGL displayName=\"EMU_display_0\"\nconst DISPLAY_PATTERN = /^Display\\s+(\\d+)\\s+\\(.+display\\s+(\\d+)\\).+displayName=\"([^\"]*)/gm;\n\ncommands.getScreenshot = async function () {\n if (this.mjpegStream) {\n const data = await this.mjpegStream.lastChunkPNGBase64();\n if (data) {\n return data;\n }\n this.log.warn('Tried to get screenshot from active MJPEG stream, but there ' +\n 'was no data yet. Falling back to regular screenshot methods.');\n }\n return await this.uiautomator2.jwproxy.command('/screenshot', 'GET');\n};\n\n/**\n * @typedef {Object} ScreenshotsInfo\n *\n * A dictionary where each key contains a unique display identifier\n * and values are dictionaries with following items:\n * - id: Display identifier\n * - name: Display name, could be empty\n * - isDefault: Whether this display is the default one\n * - payload: The actual PNG screenshot data encoded to base64 string\n */\n\n/**\n * @typedef {Object} ScreenshotsOpts\n * @property {number|string?} displayId Android display identifier to take a screenshot for.\n * If not provided then screenshots of all displays are going to be returned.\n * If no matches were found then an error is thrown.\n */\n\n/**\n * Retrieves screenshots of each display available to Android.\n * This functionality is only supported since Android 10.\n *\n * @param {ScreenshotsOpts} opts\n * @returns {Promise<ScreenshotsInfo>}\n */\ncommands.mobileScreenshots = async function mobileScreenshots (opts = {}) {\n const displaysInfo = await this.adb.shell(['dumpsys', 'SurfaceFlinger', '--display-id']);\n const infos = {};\n let match;\n while ((match = DISPLAY_PATTERN.exec(displaysInfo))) {\n infos[match[1]] = {\n id: match[1],\n isDefault: match[2] === '0',\n name: match[3],\n };\n }\n if (_.isEmpty(infos)) {\n this.log.debug(displaysInfo);\n throw new Error('Cannot determine the information about connected Android displays');\n }\n this.log.info(`Parsed Android display infos: ${JSON.stringify(infos)}`);\n\n const toB64Screenshot = async (dispId) => (await this.adb.takeScreenshot(dispId))\n .toString('base64');\n\n const {displayId} = opts;\n const displayIdStr = isNaN(displayId) ? null : `${displayId}`;\n if (displayIdStr) {\n if (!infos[displayIdStr]) {\n throw new Error(\n `The provided display identifier '${displayId}' is not known. ` +\n `Only the following displays have been detected: ${JSON.stringify(infos)}`\n );\n }\n return {\n [displayIdStr]: {\n ...infos[displayIdStr],\n payload: await toB64Screenshot(displayIdStr),\n }\n };\n }\n\n const allInfos = _.values(infos);\n const screenshots = await B.all(allInfos.map(({id}) => toB64Screenshot(id)));\n for (const [info, payload] of _.zip(allInfos, screenshots)) {\n info.payload = payload;\n }\n return infos;\n};\n\nexport default commands;\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"screenshot.js","names":["_lodash","_interopRequireDefault","require","_bluebird","commands","DISPLAY_PATTERN","getScreenshot","mjpegStream","data","lastChunkPNGBase64","log","warn","uiautomator2","jwproxy","command","mobileScreenshots","opts","displaysInfo","adb","shell","infos","match","exec","id","isDefault","name","_","isEmpty","debug","Error","info","JSON","stringify","toB64Screenshot","dispId","takeScreenshot","toString","displayId","displayIdStr","isNaN","payload","allInfos","values","screenshots","B","all","map","zip","_default","exports","default"],"sources":["../../../lib/commands/screenshot.js"],"sourcesContent":["import _ from 'lodash';\nimport B from 'bluebird';\n\nconst commands = {};\n\n// Display 4619827259835644672 (HWC display 0): port=0 pnpId=GGL displayName=\"EMU_display_0\"\nconst DISPLAY_PATTERN = /^Display\\s+(\\d+)\\s+\\(.+display\\s+(\\d+)\\).+displayName=\"([^\"]*)/gm;\n\ncommands.getScreenshot = async function () {\n if (this.mjpegStream) {\n const data = await this.mjpegStream.lastChunkPNGBase64();\n if (data) {\n return data;\n }\n this.log.warn('Tried to get screenshot from active MJPEG stream, but there ' +\n 'was no data yet. Falling back to regular screenshot methods.');\n }\n return await this.uiautomator2.jwproxy.command('/screenshot', 'GET');\n};\n\n/**\n * @typedef {Object} ScreenshotsInfo\n *\n * A dictionary where each key contains a unique display identifier\n * and values are dictionaries with following items:\n * - id: Display identifier\n * - name: Display name, could be empty\n * - isDefault: Whether this display is the default one\n * - payload: The actual PNG screenshot data encoded to base64 string\n */\n\n/**\n * @typedef {Object} ScreenshotsOpts\n * @property {number|string?} displayId Android display identifier to take a screenshot for.\n * If not provided then screenshots of all displays are going to be returned.\n * If no matches were found then an error is thrown.\n */\n\n/**\n * Retrieves screenshots of each display available to Android.\n * This functionality is only supported since Android 10.\n *\n * @param {ScreenshotsOpts} opts\n * @returns {Promise<ScreenshotsInfo>}\n */\ncommands.mobileScreenshots = async function mobileScreenshots (opts = {}) {\n const displaysInfo = await this.adb.shell(['dumpsys', 'SurfaceFlinger', '--display-id']);\n const infos = {};\n let match;\n while ((match = DISPLAY_PATTERN.exec(displaysInfo))) {\n infos[match[1]] = {\n id: match[1],\n isDefault: match[2] === '0',\n name: match[3],\n };\n }\n if (_.isEmpty(infos)) {\n this.log.debug(displaysInfo);\n throw new Error('Cannot determine the information about connected Android displays');\n }\n this.log.info(`Parsed Android display infos: ${JSON.stringify(infos)}`);\n\n const toB64Screenshot = async (dispId) => (await this.adb.takeScreenshot(dispId))\n .toString('base64');\n\n const {displayId} = opts;\n const displayIdStr = isNaN(displayId) ? null : `${displayId}`;\n if (displayIdStr) {\n if (!infos[displayIdStr]) {\n throw new Error(\n `The provided display identifier '${displayId}' is not known. ` +\n `Only the following displays have been detected: ${JSON.stringify(infos)}`\n );\n }\n return {\n [displayIdStr]: {\n ...infos[displayIdStr],\n payload: await toB64Screenshot(displayIdStr),\n }\n };\n }\n\n const allInfos = _.values(infos);\n const screenshots = await B.all(allInfos.map(({id}) => toB64Screenshot(id)));\n for (const [info, payload] of _.zip(allInfos, screenshots)) {\n info.payload = payload;\n }\n return infos;\n};\n\nexport default commands;\n"],"mappings":"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"}
|
|
@@ -36,6 +36,5 @@ commands.performActions = async function (actions) {
|
|
|
36
36
|
commands.releaseActions = async function releaseActions() {
|
|
37
37
|
this.log.info('On this platform, releaseActions is a no-op');
|
|
38
38
|
};
|
|
39
|
-
var _default = commands;
|
|
40
|
-
|
|
41
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImRvUGVyZm9ybU11bHRpQWN0aW9uIiwiZWxlbWVudElkIiwic3RhdGVzIiwib3B0cyIsImFjdGlvbnMiLCJ1aWF1dG9tYXRvcjIiLCJqd3Byb3h5IiwiY29tbWFuZCIsInBlcmZvcm1BY3Rpb25zIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwicHJlcHJvY2Vzc2VkQWN0aW9ucyIsIm1hcCIsImFjdGlvbiIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJwYXJhbWV0ZXJzIiwicG9pbnRlclR5cGUiLCJyZWxlYXNlQWN0aW9ucyIsImluZm8iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NvbW1hbmRzL3RvdWNoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbW1hbmRzID0ge307XG5cbmNvbW1hbmRzLmRvUGVyZm9ybU11bHRpQWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCwgc3RhdGVzKSB7XG4gIGxldCBvcHRzO1xuICBpZiAoZWxlbWVudElkKSB7XG4gICAgb3B0cyA9IHtcbiAgICAgIGVsZW1lbnRJZCxcbiAgICAgIGFjdGlvbnM6IHN0YXRlc1xuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvdG91Y2gvbXVsdGkvcGVyZm9ybScsICdQT1NUJywgb3B0cyk7XG4gIH0gZWxzZSB7XG4gICAgb3B0cyA9IHtcbiAgICAgIGFjdGlvbnM6IHN0YXRlc1xuICAgIH07XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL3RvdWNoL211bHRpL3BlcmZvcm0nLCAnUE9TVCcsIG9wdHMpO1xuICB9XG59O1xuXG5jb21tYW5kcy5wZXJmb3JtQWN0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uIChhY3Rpb25zKSB7XG4gIHRoaXMubG9nLmRlYnVnKGBSZWNlaXZlZCB0aGUgZm9sbG93aW5nIFczQyBhY3Rpb25zOiAke0pTT04uc3RyaW5naWZ5KGFjdGlvbnMsIG51bGwsICcgICcpfWApO1xuICAvLyBUaGlzIGlzIG1hbmRhdG9yeSwgc2luY2UgU2VsZW5pdW0gQVBJIHVzZXMgTU9VU0UgYXMgdGhlIGRlZmF1bHQgcG9pbnRlciB0eXBlXG4gIGNvbnN0IHByZXByb2Nlc3NlZEFjdGlvbnMgPSBhY3Rpb25zXG4gICAgLm1hcCgoYWN0aW9uKSA9PiBPYmplY3QuYXNzaWduKHt9LCBhY3Rpb24sIGFjdGlvbi50eXBlID09PSAncG9pbnRlcicgPyB7XG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIHBvaW50ZXJUeXBlOiAndG91Y2gnXG4gICAgICB9XG4gICAgfSA6IHt9KSk7XG4gIHRoaXMubG9nLmRlYnVnKGBQcmVwcm9jZXNzZWQgYWN0aW9uczogJHtKU09OLnN0cmluZ2lmeShwcmVwcm9jZXNzZWRBY3Rpb25zLCBudWxsLCAnICAnKX1gKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FjdGlvbnMnLCAnUE9TVCcsIHthY3Rpb25zOiBwcmVwcm9jZXNzZWRBY3Rpb25zfSk7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hd2FpdFxuY29tbWFuZHMucmVsZWFzZUFjdGlvbnMgPSBhc3luYyBmdW5jdGlvbiByZWxlYXNlQWN0aW9ucyAoKSB7XG4gIHRoaXMubG9nLmluZm8oJ09uIHRoaXMgcGxhdGZvcm0sIHJlbGVhc2VBY3Rpb25zIGlzIGEgbm8tb3AnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUVuQkEsUUFBUSxDQUFDQyxvQkFBb0IsR0FBRyxnQkFBZ0JDLFNBQVMsRUFBRUMsTUFBTSxFQUFFO0VBQ2pFLElBQUlDLElBQUk7RUFDUixJQUFJRixTQUFTLEVBQUU7SUFDYkUsSUFBSSxHQUFHO01BQ0xGLFNBQVM7TUFDVEcsT0FBTyxFQUFFRjtJQUNYLENBQUM7SUFFRCxPQUFPLE1BQU0sSUFBSSxDQUFDRyxZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLHNCQUFzQixFQUFFLE1BQU0sRUFBRUosSUFBSSxDQUFDO0VBQ3RGLENBQUMsTUFBTTtJQUNMQSxJQUFJLEdBQUc7TUFDTEMsT0FBTyxFQUFFRjtJQUNYLENBQUM7SUFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDRyxZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLHNCQUFzQixFQUFFLE1BQU0sRUFBRUosSUFBSSxDQUFDO0VBQ3RGO0FBQ0YsQ0FBQztBQUVESixRQUFRLENBQUNTLGNBQWMsR0FBRyxnQkFBZ0JKLE9BQU8sRUFBRTtFQUNqRCxJQUFJLENBQUNLLEdBQUcsQ0FBQ0MsS0FBSyxDQUFFLHVDQUFzQ0MsSUFBSSxDQUFDQyxTQUFTLENBQUNSLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFFLEVBQUMsQ0FBQztFQUU1RixNQUFNUyxtQkFBbUIsR0FBR1QsT0FBTyxDQUNoQ1UsR0FBRyxDQUFFQyxNQUFNLElBQUtDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFRixNQUFNLEVBQUVBLE1BQU0sQ0FBQ0csSUFBSSxLQUFLLFNBQVMsR0FBRztJQUNyRUMsVUFBVSxFQUFFO01BQ1ZDLFdBQVcsRUFBRTtJQUNmO0VBQ0YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDVixJQUFJLENBQUNYLEdBQUcsQ0FBQ0MsS0FBSyxDQUFFLHlCQUF3QkMsSUFBSSxDQUFDQyxTQUFTLENBQUNDLG1CQUFtQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUUsRUFBQyxDQUFDO0VBQzFGLE9BQU8sTUFBTSxJQUFJLENBQUNSLFlBQVksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRTtJQUFDSCxPQUFPLEVBQUVTO0VBQW1CLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBR0RkLFFBQVEsQ0FBQ3NCLGNBQWMsR0FBRyxlQUFlQSxjQUFjQSxDQUFBLEVBQUk7RUFDekQsSUFBSSxDQUFDWixHQUFHLENBQUNhLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQztBQUM5RCxDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUVheEIsUUFBUTtBQUFBeUIsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUEifQ==
|
|
39
|
+
var _default = exports.default = commands;
|
|
40
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImRvUGVyZm9ybU11bHRpQWN0aW9uIiwiZWxlbWVudElkIiwic3RhdGVzIiwib3B0cyIsImFjdGlvbnMiLCJ1aWF1dG9tYXRvcjIiLCJqd3Byb3h5IiwiY29tbWFuZCIsInBlcmZvcm1BY3Rpb25zIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwicHJlcHJvY2Vzc2VkQWN0aW9ucyIsIm1hcCIsImFjdGlvbiIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJwYXJhbWV0ZXJzIiwicG9pbnRlclR5cGUiLCJyZWxlYXNlQWN0aW9ucyIsImluZm8iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NvbW1hbmRzL3RvdWNoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbW1hbmRzID0ge307XG5cbmNvbW1hbmRzLmRvUGVyZm9ybU11bHRpQWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCwgc3RhdGVzKSB7XG4gIGxldCBvcHRzO1xuICBpZiAoZWxlbWVudElkKSB7XG4gICAgb3B0cyA9IHtcbiAgICAgIGVsZW1lbnRJZCxcbiAgICAgIGFjdGlvbnM6IHN0YXRlc1xuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvdG91Y2gvbXVsdGkvcGVyZm9ybScsICdQT1NUJywgb3B0cyk7XG4gIH0gZWxzZSB7XG4gICAgb3B0cyA9IHtcbiAgICAgIGFjdGlvbnM6IHN0YXRlc1xuICAgIH07XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL3RvdWNoL211bHRpL3BlcmZvcm0nLCAnUE9TVCcsIG9wdHMpO1xuICB9XG59O1xuXG5jb21tYW5kcy5wZXJmb3JtQWN0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uIChhY3Rpb25zKSB7XG4gIHRoaXMubG9nLmRlYnVnKGBSZWNlaXZlZCB0aGUgZm9sbG93aW5nIFczQyBhY3Rpb25zOiAke0pTT04uc3RyaW5naWZ5KGFjdGlvbnMsIG51bGwsICcgICcpfWApO1xuICAvLyBUaGlzIGlzIG1hbmRhdG9yeSwgc2luY2UgU2VsZW5pdW0gQVBJIHVzZXMgTU9VU0UgYXMgdGhlIGRlZmF1bHQgcG9pbnRlciB0eXBlXG4gIGNvbnN0IHByZXByb2Nlc3NlZEFjdGlvbnMgPSBhY3Rpb25zXG4gICAgLm1hcCgoYWN0aW9uKSA9PiBPYmplY3QuYXNzaWduKHt9LCBhY3Rpb24sIGFjdGlvbi50eXBlID09PSAncG9pbnRlcicgPyB7XG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIHBvaW50ZXJUeXBlOiAndG91Y2gnXG4gICAgICB9XG4gICAgfSA6IHt9KSk7XG4gIHRoaXMubG9nLmRlYnVnKGBQcmVwcm9jZXNzZWQgYWN0aW9uczogJHtKU09OLnN0cmluZ2lmeShwcmVwcm9jZXNzZWRBY3Rpb25zLCBudWxsLCAnICAnKX1gKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FjdGlvbnMnLCAnUE9TVCcsIHthY3Rpb25zOiBwcmVwcm9jZXNzZWRBY3Rpb25zfSk7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hd2FpdFxuY29tbWFuZHMucmVsZWFzZUFjdGlvbnMgPSBhc3luYyBmdW5jdGlvbiByZWxlYXNlQWN0aW9ucyAoKSB7XG4gIHRoaXMubG9nLmluZm8oJ09uIHRoaXMgcGxhdGZvcm0sIHJlbGVhc2VBY3Rpb25zIGlzIGEgbm8tb3AnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUVuQkEsUUFBUSxDQUFDQyxvQkFBb0IsR0FBRyxnQkFBZ0JDLFNBQVMsRUFBRUMsTUFBTSxFQUFFO0VBQ2pFLElBQUlDLElBQUk7RUFDUixJQUFJRixTQUFTLEVBQUU7SUFDYkUsSUFBSSxHQUFHO01BQ0xGLFNBQVM7TUFDVEcsT0FBTyxFQUFFRjtJQUNYLENBQUM7SUFFRCxPQUFPLE1BQU0sSUFBSSxDQUFDRyxZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLHNCQUFzQixFQUFFLE1BQU0sRUFBRUosSUFBSSxDQUFDO0VBQ3RGLENBQUMsTUFBTTtJQUNMQSxJQUFJLEdBQUc7TUFDTEMsT0FBTyxFQUFFRjtJQUNYLENBQUM7SUFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDRyxZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLHNCQUFzQixFQUFFLE1BQU0sRUFBRUosSUFBSSxDQUFDO0VBQ3RGO0FBQ0YsQ0FBQztBQUVESixRQUFRLENBQUNTLGNBQWMsR0FBRyxnQkFBZ0JKLE9BQU8sRUFBRTtFQUNqRCxJQUFJLENBQUNLLEdBQUcsQ0FBQ0MsS0FBSyxDQUFFLHVDQUFzQ0MsSUFBSSxDQUFDQyxTQUFTLENBQUNSLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFFLEVBQUMsQ0FBQztFQUU1RixNQUFNUyxtQkFBbUIsR0FBR1QsT0FBTyxDQUNoQ1UsR0FBRyxDQUFFQyxNQUFNLElBQUtDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFRixNQUFNLEVBQUVBLE1BQU0sQ0FBQ0csSUFBSSxLQUFLLFNBQVMsR0FBRztJQUNyRUMsVUFBVSxFQUFFO01BQ1ZDLFdBQVcsRUFBRTtJQUNmO0VBQ0YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDVixJQUFJLENBQUNYLEdBQUcsQ0FBQ0MsS0FBSyxDQUFFLHlCQUF3QkMsSUFBSSxDQUFDQyxTQUFTLENBQUNDLG1CQUFtQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUUsRUFBQyxDQUFDO0VBQzFGLE9BQU8sTUFBTSxJQUFJLENBQUNSLFlBQVksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRTtJQUFDSCxPQUFPLEVBQUVTO0VBQW1CLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBR0RkLFFBQVEsQ0FBQ3NCLGNBQWMsR0FBRyxlQUFlQSxjQUFjQSxDQUFBLEVBQUk7RUFDekQsSUFBSSxDQUFDWixHQUFHLENBQUNhLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQztBQUM5RCxDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FFYTFCLFFBQVEifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"touch.js","names":["commands","doPerformMultiAction","elementId","states","opts","actions","uiautomator2","jwproxy","command","performActions","log","debug","JSON","stringify","preprocessedActions","map","action","Object","assign","type","parameters","pointerType","releaseActions","info","_default","exports","default"],"sources":["../../../lib/commands/touch.js"],"sourcesContent":["const commands = {};\n\ncommands.doPerformMultiAction = async function (elementId, states) {\n let opts;\n if (elementId) {\n opts = {\n elementId,\n actions: states\n };\n\n return await this.uiautomator2.jwproxy.command('/touch/multi/perform', 'POST', opts);\n } else {\n opts = {\n actions: states\n };\n return await this.uiautomator2.jwproxy.command('/touch/multi/perform', 'POST', opts);\n }\n};\n\ncommands.performActions = async function (actions) {\n this.log.debug(`Received the following W3C actions: ${JSON.stringify(actions, null, ' ')}`);\n // This is mandatory, since Selenium API uses MOUSE as the default pointer type\n const preprocessedActions = actions\n .map((action) => Object.assign({}, action, action.type === 'pointer' ? {\n parameters: {\n pointerType: 'touch'\n }\n } : {}));\n this.log.debug(`Preprocessed actions: ${JSON.stringify(preprocessedActions, null, ' ')}`);\n return await this.uiautomator2.jwproxy.command('/actions', 'POST', {actions: preprocessedActions});\n};\n\n// eslint-disable-next-line require-await\ncommands.releaseActions = async function releaseActions () {\n this.log.info('On this platform, releaseActions is a no-op');\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAEnBA,QAAQ,CAACC,oBAAoB,GAAG,gBAAgBC,SAAS,EAAEC,MAAM,EAAE;EACjE,IAAIC,IAAI;EACR,IAAIF,SAAS,EAAE;IACbE,IAAI,GAAG;MACLF,SAAS;MACTG,OAAO,EAAEF;IACX,CAAC;IAED,OAAO,MAAM,IAAI,CAACG,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,sBAAsB,EAAE,MAAM,EAAEJ,IAAI,CAAC;EACtF,CAAC,MAAM;IACLA,IAAI,GAAG;MACLC,OAAO,EAAEF;IACX,CAAC;IACD,OAAO,MAAM,IAAI,CAACG,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,sBAAsB,EAAE,MAAM,EAAEJ,IAAI,CAAC;EACtF;AACF,CAAC;AAEDJ,QAAQ,CAACS,cAAc,GAAG,gBAAgBJ,OAAO,EAAE;EACjD,IAAI,CAACK,GAAG,CAACC,KAAK,CAAE,uCAAsCC,IAAI,CAACC,SAAS,CAACR,OAAO,EAAE,IAAI,EAAE,IAAI,CAAE,EAAC,CAAC;EAE5F,MAAMS,mBAAmB,GAAGT,OAAO,CAChCU,GAAG,CAAEC,MAAM,IAAKC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEF,MAAM,EAAEA,MAAM,CAACG,IAAI,KAAK,SAAS,GAAG;IACrEC,UAAU,EAAE;MACVC,WAAW,EAAE;IACf;EACF,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACV,IAAI,CAACX,GAAG,CAACC,KAAK,CAAE,yBAAwBC,IAAI,CAACC,SAAS,CAACC,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAE,EAAC,CAAC;EAC1F,OAAO,MAAM,IAAI,CAACR,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE;IAACH,OAAO,EAAES;EAAmB,CAAC,CAAC;AACpG,CAAC;AAGDd,QAAQ,CAACsB,cAAc,GAAG,eAAeA,cAAcA,CAAA,EAAI;EACzD,IAAI,CAACZ,GAAG,CAACa,IAAI,CAAC,6CAA6C,CAAC;AAC9D,CAAC;AAAC,IAAAC,QAAA,
|
|
1
|
+
{"version":3,"file":"touch.js","names":["commands","doPerformMultiAction","elementId","states","opts","actions","uiautomator2","jwproxy","command","performActions","log","debug","JSON","stringify","preprocessedActions","map","action","Object","assign","type","parameters","pointerType","releaseActions","info","_default","exports","default"],"sources":["../../../lib/commands/touch.js"],"sourcesContent":["const commands = {};\n\ncommands.doPerformMultiAction = async function (elementId, states) {\n let opts;\n if (elementId) {\n opts = {\n elementId,\n actions: states\n };\n\n return await this.uiautomator2.jwproxy.command('/touch/multi/perform', 'POST', opts);\n } else {\n opts = {\n actions: states\n };\n return await this.uiautomator2.jwproxy.command('/touch/multi/perform', 'POST', opts);\n }\n};\n\ncommands.performActions = async function (actions) {\n this.log.debug(`Received the following W3C actions: ${JSON.stringify(actions, null, ' ')}`);\n // This is mandatory, since Selenium API uses MOUSE as the default pointer type\n const preprocessedActions = actions\n .map((action) => Object.assign({}, action, action.type === 'pointer' ? {\n parameters: {\n pointerType: 'touch'\n }\n } : {}));\n this.log.debug(`Preprocessed actions: ${JSON.stringify(preprocessedActions, null, ' ')}`);\n return await this.uiautomator2.jwproxy.command('/actions', 'POST', {actions: preprocessedActions});\n};\n\n// eslint-disable-next-line require-await\ncommands.releaseActions = async function releaseActions () {\n this.log.info('On this platform, releaseActions is a no-op');\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;AAEnBA,QAAQ,CAACC,oBAAoB,GAAG,gBAAgBC,SAAS,EAAEC,MAAM,EAAE;EACjE,IAAIC,IAAI;EACR,IAAIF,SAAS,EAAE;IACbE,IAAI,GAAG;MACLF,SAAS;MACTG,OAAO,EAAEF;IACX,CAAC;IAED,OAAO,MAAM,IAAI,CAACG,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,sBAAsB,EAAE,MAAM,EAAEJ,IAAI,CAAC;EACtF,CAAC,MAAM;IACLA,IAAI,GAAG;MACLC,OAAO,EAAEF;IACX,CAAC;IACD,OAAO,MAAM,IAAI,CAACG,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,sBAAsB,EAAE,MAAM,EAAEJ,IAAI,CAAC;EACtF;AACF,CAAC;AAEDJ,QAAQ,CAACS,cAAc,GAAG,gBAAgBJ,OAAO,EAAE;EACjD,IAAI,CAACK,GAAG,CAACC,KAAK,CAAE,uCAAsCC,IAAI,CAACC,SAAS,CAACR,OAAO,EAAE,IAAI,EAAE,IAAI,CAAE,EAAC,CAAC;EAE5F,MAAMS,mBAAmB,GAAGT,OAAO,CAChCU,GAAG,CAAEC,MAAM,IAAKC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEF,MAAM,EAAEA,MAAM,CAACG,IAAI,KAAK,SAAS,GAAG;IACrEC,UAAU,EAAE;MACVC,WAAW,EAAE;IACf;EACF,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACV,IAAI,CAACX,GAAG,CAACC,KAAK,CAAE,yBAAwBC,IAAI,CAACC,SAAS,CAACC,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAE,EAAC,CAAC;EAC1F,OAAO,MAAM,IAAI,CAACR,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE;IAACH,OAAO,EAAES;EAAmB,CAAC,CAAC;AACpG,CAAC;AAGDd,QAAQ,CAACsB,cAAc,GAAG,eAAeA,cAAcA,CAAA,EAAI;EACzD,IAAI,CAACZ,GAAG,CAACa,IAAI,CAAC,6CAA6C,CAAC;AAC9D,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa1B,QAAQ"}
|
|
@@ -7,8 +7,7 @@ exports.default = exports.commands = void 0;
|
|
|
7
7
|
require("source-map-support/register");
|
|
8
8
|
var _support = require("appium/support");
|
|
9
9
|
let extensions = {},
|
|
10
|
-
commands = {};
|
|
11
|
-
exports.commands = commands;
|
|
10
|
+
commands = exports.commands = {};
|
|
12
11
|
commands.getStatusBarHeight = async function () {
|
|
13
12
|
const {
|
|
14
13
|
statusBar
|
|
@@ -34,6 +33,5 @@ commands.getViewPortRect = async function () {
|
|
|
34
33
|
};
|
|
35
34
|
};
|
|
36
35
|
Object.assign(extensions, commands);
|
|
37
|
-
var _default = extensions;
|
|
38
|
-
|
|
39
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VwcG9ydCIsInJlcXVpcmUiLCJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJleHBvcnRzIiwiZ2V0U3RhdHVzQmFySGVpZ2h0Iiwic3RhdHVzQmFyIiwidWlhdXRvbWF0b3IyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXREZXZpY2VQaXhlbFJhdGlvIiwiZ2V0Vmlld3BvcnRTY3JlZW5zaG90Iiwic2NyZWVuc2hvdCIsImdldFNjcmVlbnNob3QiLCJyZWN0IiwiZ2V0Vmlld1BvcnRSZWN0IiwiaW1hZ2VVdGlsIiwiY3JvcEJhc2U2NEltYWdlIiwid2luZG93U2l6ZSIsImdldFdpbmRvd1NpemUiLCJzdGF0dXNCYXJIZWlnaHQiLCJsZWZ0IiwidG9wIiwid2lkdGgiLCJoZWlnaHQiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvdmlld3BvcnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW1hZ2VVdGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmxldCBleHRlbnNpb25zID0ge30sIGNvbW1hbmRzID0ge307XG5cbi8vIG1lbW9pemVkIGluIGNvbnN0cnVjdG9yXG5jb21tYW5kcy5nZXRTdGF0dXNCYXJIZWlnaHQgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHtzdGF0dXNCYXJ9ID0gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvYXBwaXVtL2RldmljZS9zeXN0ZW1fYmFyc2AsICdHRVQnLCB7fSk7XG4gIHJldHVybiBzdGF0dXNCYXI7XG59O1xuXG4vLyBtZW1vaXplZCBpbiBjb25zdHJ1Y3RvclxuY29tbWFuZHMuZ2V0RGV2aWNlUGl4ZWxSYXRpbyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvcGl4ZWxfcmF0aW8nLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMuZ2V0Vmlld3BvcnRTY3JlZW5zaG90ID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCBzY3JlZW5zaG90ID0gYXdhaXQgdGhpcy5nZXRTY3JlZW5zaG90KCk7XG4gIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldFZpZXdQb3J0UmVjdCgpO1xuICByZXR1cm4gYXdhaXQgaW1hZ2VVdGlsLmNyb3BCYXNlNjRJbWFnZShzY3JlZW5zaG90LCByZWN0KTtcbn07XG5cbmNvbW1hbmRzLmdldFZpZXdQb3J0UmVjdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgd2luZG93U2l6ZSA9IGF3YWl0IHRoaXMuZ2V0V2luZG93U2l6ZSgpO1xuICBjb25zdCBzdGF0dXNCYXJIZWlnaHQgPSBhd2FpdCB0aGlzLmdldFN0YXR1c0JhckhlaWdodCgpO1xuICAvLyBhbmRyb2lkIHJldHVybnMgdGhlIHVwc2NhbGVkIHdpbmRvdyBzaXplLCBzbyB0byBnZXQgdGhlIHRydWUgc2l6ZSBvZiB0aGVcbiAgLy8gcmVjdCB3ZSBoYXZlIHRvIGRvd25zY2FsZVxuICByZXR1cm4ge1xuICAgIGxlZnQ6IDAsXG4gICAgdG9wOiBzdGF0dXNCYXJIZWlnaHQsXG4gICAgd2lkdGg6IHdpbmRvd1NpemUud2lkdGgsXG4gICAgaGVpZ2h0OiB3aW5kb3dTaXplLmhlaWdodCAtIHN0YXR1c0JhckhlaWdodFxuICB9O1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcyk7XG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUdBLElBQUlDLFVBQVUsR0FBRyxDQUFDLENBQUM7RUFBRUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUFDQyxPQUFBLENBQUFELFFBQUEsR0FBQUEsUUFBQTtBQUduQ0EsUUFBUSxDQUFDRSxrQkFBa0IsR0FBRyxrQkFBa0I7RUFDOUMsTUFBTTtJQUFDQztFQUFTLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQ0MsWUFBWSxDQUFDQyxPQUFPLENBQUNDLE9BQU8sQ0FBRSw0QkFBMkIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFDcEcsT0FBT0gsU0FBUztBQUNsQixDQUFDO0FBR0RILFFBQVEsQ0FBQ08sbUJBQW1CLEdBQUcsa0JBQWtCO0VBQy9DLE9BQU8sTUFBTSxJQUFJLENBQUNILFlBQVksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLENBQUM7QUFFRE4sUUFBUSxDQUFDUSxxQkFBcUIsR0FBRyxrQkFBa0I7RUFDakQsTUFBTUMsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDQyxhQUFhLENBQUMsQ0FBQztFQUM3QyxNQUFNQyxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUNDLGVBQWUsQ0FBQyxDQUFDO0VBQ3pDLE9BQU8sTUFBTUMsa0JBQVMsQ0FBQ0MsZUFBZSxDQUFDTCxVQUFVLEVBQUVFLElBQUksQ0FBQztBQUMxRCxDQUFDO0FBRURYLFFBQVEsQ0FBQ1ksZUFBZSxHQUFHLGtCQUFrQjtFQUMzQyxNQUFNRyxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUNDLGFBQWEsQ0FBQyxDQUFDO0VBQzdDLE1BQU1DLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQ2Ysa0JBQWtCLENBQUMsQ0FBQztFQUd2RCxPQUFPO0lBQ0xnQixJQUFJLEVBQUUsQ0FBQztJQUNQQyxHQUFHLEVBQUVGLGVBQWU7SUFDcEJHLEtBQUssRUFBRUwsVUFBVSxDQUFDSyxLQUFLO0lBQ3ZCQyxNQUFNLEVBQUVOLFVBQVUsQ0FBQ00sTUFBTSxHQUFHSjtFQUM5QixDQUFDO0FBQ0gsQ0FBQztBQUVESyxNQUFNLENBQUNDLE1BQU0sQ0FBQ3hCLFVBQVUsRUFBRUMsUUFBUSxDQUFDO0FBQUMsSUFBQXdCLFFBQUEsR0FFckJ6QixVQUFVO0FBQUFFLE9BQUEsQ0FBQXdCLE9BQUEsR0FBQUQsUUFBQSJ9
|
|
36
|
+
var _default = exports.default = extensions;
|
|
37
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VwcG9ydCIsInJlcXVpcmUiLCJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJleHBvcnRzIiwiZ2V0U3RhdHVzQmFySGVpZ2h0Iiwic3RhdHVzQmFyIiwidWlhdXRvbWF0b3IyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXREZXZpY2VQaXhlbFJhdGlvIiwiZ2V0Vmlld3BvcnRTY3JlZW5zaG90Iiwic2NyZWVuc2hvdCIsImdldFNjcmVlbnNob3QiLCJyZWN0IiwiZ2V0Vmlld1BvcnRSZWN0IiwiaW1hZ2VVdGlsIiwiY3JvcEJhc2U2NEltYWdlIiwid2luZG93U2l6ZSIsImdldFdpbmRvd1NpemUiLCJzdGF0dXNCYXJIZWlnaHQiLCJsZWZ0IiwidG9wIiwid2lkdGgiLCJoZWlnaHQiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvdmlld3BvcnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW1hZ2VVdGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmxldCBleHRlbnNpb25zID0ge30sIGNvbW1hbmRzID0ge307XG5cbi8vIG1lbW9pemVkIGluIGNvbnN0cnVjdG9yXG5jb21tYW5kcy5nZXRTdGF0dXNCYXJIZWlnaHQgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHtzdGF0dXNCYXJ9ID0gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvYXBwaXVtL2RldmljZS9zeXN0ZW1fYmFyc2AsICdHRVQnLCB7fSk7XG4gIHJldHVybiBzdGF0dXNCYXI7XG59O1xuXG4vLyBtZW1vaXplZCBpbiBjb25zdHJ1Y3RvclxuY29tbWFuZHMuZ2V0RGV2aWNlUGl4ZWxSYXRpbyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvcGl4ZWxfcmF0aW8nLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMuZ2V0Vmlld3BvcnRTY3JlZW5zaG90ID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCBzY3JlZW5zaG90ID0gYXdhaXQgdGhpcy5nZXRTY3JlZW5zaG90KCk7XG4gIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldFZpZXdQb3J0UmVjdCgpO1xuICByZXR1cm4gYXdhaXQgaW1hZ2VVdGlsLmNyb3BCYXNlNjRJbWFnZShzY3JlZW5zaG90LCByZWN0KTtcbn07XG5cbmNvbW1hbmRzLmdldFZpZXdQb3J0UmVjdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgd2luZG93U2l6ZSA9IGF3YWl0IHRoaXMuZ2V0V2luZG93U2l6ZSgpO1xuICBjb25zdCBzdGF0dXNCYXJIZWlnaHQgPSBhd2FpdCB0aGlzLmdldFN0YXR1c0JhckhlaWdodCgpO1xuICAvLyBhbmRyb2lkIHJldHVybnMgdGhlIHVwc2NhbGVkIHdpbmRvdyBzaXplLCBzbyB0byBnZXQgdGhlIHRydWUgc2l6ZSBvZiB0aGVcbiAgLy8gcmVjdCB3ZSBoYXZlIHRvIGRvd25zY2FsZVxuICByZXR1cm4ge1xuICAgIGxlZnQ6IDAsXG4gICAgdG9wOiBzdGF0dXNCYXJIZWlnaHQsXG4gICAgd2lkdGg6IHdpbmRvd1NpemUud2lkdGgsXG4gICAgaGVpZ2h0OiB3aW5kb3dTaXplLmhlaWdodCAtIHN0YXR1c0JhckhlaWdodFxuICB9O1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcyk7XG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUdBLElBQUlDLFVBQVUsR0FBRyxDQUFDLENBQUM7RUFBRUMsUUFBUSxHQUFBQyxPQUFBLENBQUFELFFBQUEsR0FBRyxDQUFDLENBQUM7QUFHbENBLFFBQVEsQ0FBQ0Usa0JBQWtCLEdBQUcsa0JBQWtCO0VBQzlDLE1BQU07SUFBQ0M7RUFBUyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUNDLFlBQVksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPLENBQUUsNEJBQTJCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ3BHLE9BQU9ILFNBQVM7QUFDbEIsQ0FBQztBQUdESCxRQUFRLENBQUNPLG1CQUFtQixHQUFHLGtCQUFrQjtFQUMvQyxPQUFPLE1BQU0sSUFBSSxDQUFDSCxZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLDRCQUE0QixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBRUROLFFBQVEsQ0FBQ1EscUJBQXFCLEdBQUcsa0JBQWtCO0VBQ2pELE1BQU1DLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQ0MsYUFBYSxDQUFDLENBQUM7RUFDN0MsTUFBTUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDQyxlQUFlLENBQUMsQ0FBQztFQUN6QyxPQUFPLE1BQU1DLGtCQUFTLENBQUNDLGVBQWUsQ0FBQ0wsVUFBVSxFQUFFRSxJQUFJLENBQUM7QUFDMUQsQ0FBQztBQUVEWCxRQUFRLENBQUNZLGVBQWUsR0FBRyxrQkFBa0I7RUFDM0MsTUFBTUcsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDQyxhQUFhLENBQUMsQ0FBQztFQUM3QyxNQUFNQyxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUNmLGtCQUFrQixDQUFDLENBQUM7RUFHdkQsT0FBTztJQUNMZ0IsSUFBSSxFQUFFLENBQUM7SUFDUEMsR0FBRyxFQUFFRixlQUFlO0lBQ3BCRyxLQUFLLEVBQUVMLFVBQVUsQ0FBQ0ssS0FBSztJQUN2QkMsTUFBTSxFQUFFTixVQUFVLENBQUNNLE1BQU0sR0FBR0o7RUFDOUIsQ0FBQztBQUNILENBQUM7QUFFREssTUFBTSxDQUFDQyxNQUFNLENBQUN4QixVQUFVLEVBQUVDLFFBQVEsQ0FBQztBQUFDLElBQUF3QixRQUFBLEdBQUF2QixPQUFBLENBQUF3QixPQUFBLEdBRXJCMUIsVUFBVSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.js","names":["_support","require","extensions","commands","exports","getStatusBarHeight","statusBar","uiautomator2","jwproxy","command","getDevicePixelRatio","getViewportScreenshot","screenshot","getScreenshot","rect","getViewPortRect","imageUtil","cropBase64Image","windowSize","getWindowSize","statusBarHeight","left","top","width","height","Object","assign","_default","default"],"sources":["../../../lib/commands/viewport.js"],"sourcesContent":["import { imageUtil } from 'appium/support';\n\n\nlet extensions = {}, commands = {};\n\n// memoized in constructor\ncommands.getStatusBarHeight = async function () {\n const {statusBar} = await this.uiautomator2.jwproxy.command(`/appium/device/system_bars`, 'GET', {});\n return statusBar;\n};\n\n// memoized in constructor\ncommands.getDevicePixelRatio = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/pixel_ratio', 'GET', {});\n};\n\ncommands.getViewportScreenshot = async function () {\n const screenshot = await this.getScreenshot();\n const rect = await this.getViewPortRect();\n return await imageUtil.cropBase64Image(screenshot, rect);\n};\n\ncommands.getViewPortRect = async function () {\n const windowSize = await this.getWindowSize();\n const statusBarHeight = await this.getStatusBarHeight();\n // android returns the upscaled window size, so to get the true size of the\n // rect we have to downscale\n return {\n left: 0,\n top: statusBarHeight,\n width: windowSize.width,\n height: windowSize.height - statusBarHeight\n };\n};\n\nObject.assign(extensions, commands);\nexport { commands };\nexport default extensions;\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAIC,UAAU,GAAG,CAAC,CAAC;EAAEC,QAAQ,
|
|
1
|
+
{"version":3,"file":"viewport.js","names":["_support","require","extensions","commands","exports","getStatusBarHeight","statusBar","uiautomator2","jwproxy","command","getDevicePixelRatio","getViewportScreenshot","screenshot","getScreenshot","rect","getViewPortRect","imageUtil","cropBase64Image","windowSize","getWindowSize","statusBarHeight","left","top","width","height","Object","assign","_default","default"],"sources":["../../../lib/commands/viewport.js"],"sourcesContent":["import { imageUtil } from 'appium/support';\n\n\nlet extensions = {}, commands = {};\n\n// memoized in constructor\ncommands.getStatusBarHeight = async function () {\n const {statusBar} = await this.uiautomator2.jwproxy.command(`/appium/device/system_bars`, 'GET', {});\n return statusBar;\n};\n\n// memoized in constructor\ncommands.getDevicePixelRatio = async function () {\n return await this.uiautomator2.jwproxy.command('/appium/device/pixel_ratio', 'GET', {});\n};\n\ncommands.getViewportScreenshot = async function () {\n const screenshot = await this.getScreenshot();\n const rect = await this.getViewPortRect();\n return await imageUtil.cropBase64Image(screenshot, rect);\n};\n\ncommands.getViewPortRect = async function () {\n const windowSize = await this.getWindowSize();\n const statusBarHeight = await this.getStatusBarHeight();\n // android returns the upscaled window size, so to get the true size of the\n // rect we have to downscale\n return {\n left: 0,\n top: statusBarHeight,\n width: windowSize.width,\n height: windowSize.height - statusBarHeight\n };\n};\n\nObject.assign(extensions, commands);\nexport { commands };\nexport default extensions;\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAIC,UAAU,GAAG,CAAC,CAAC;EAAEC,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAG,CAAC,CAAC;AAGlCA,QAAQ,CAACE,kBAAkB,GAAG,kBAAkB;EAC9C,MAAM;IAACC;EAAS,CAAC,GAAG,MAAM,IAAI,CAACC,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,4BAA2B,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACpG,OAAOH,SAAS;AAClB,CAAC;AAGDH,QAAQ,CAACO,mBAAmB,GAAG,kBAAkB;EAC/C,OAAO,MAAM,IAAI,CAACH,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,4BAA4B,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC;AAEDN,QAAQ,CAACQ,qBAAqB,GAAG,kBAAkB;EACjD,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACC,aAAa,CAAC,CAAC;EAC7C,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACC,eAAe,CAAC,CAAC;EACzC,OAAO,MAAMC,kBAAS,CAACC,eAAe,CAACL,UAAU,EAAEE,IAAI,CAAC;AAC1D,CAAC;AAEDX,QAAQ,CAACY,eAAe,GAAG,kBAAkB;EAC3C,MAAMG,UAAU,GAAG,MAAM,IAAI,CAACC,aAAa,CAAC,CAAC;EAC7C,MAAMC,eAAe,GAAG,MAAM,IAAI,CAACf,kBAAkB,CAAC,CAAC;EAGvD,OAAO;IACLgB,IAAI,EAAE,CAAC;IACPC,GAAG,EAAEF,eAAe;IACpBG,KAAK,EAAEL,UAAU,CAACK,KAAK;IACvBC,MAAM,EAAEN,UAAU,CAACM,MAAM,GAAGJ;EAC9B,CAAC;AACH,CAAC;AAEDK,MAAM,CAACC,MAAM,CAACxB,UAAU,EAAEC,QAAQ,CAAC;AAAC,IAAAwB,QAAA,GAAAvB,OAAA,CAAAwB,OAAA,GAErB1B,UAAU"}
|
|
@@ -195,6 +195,5 @@ class CssConverter {
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
|
-
var _default = CssConverter;
|
|
199
|
-
exports.default = _default;
|
|
200
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3NzU2VsZWN0b3JQYXJzZXIiLCJyZXF1aXJlIiwiX2xvZGFzaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZHJpdmVyIiwiX2xvZ2dlciIsInBhcnNlQ3NzU2VsZWN0b3IiLCJjcmVhdGVQYXJzZXIiLCJzeW50YXgiLCJwc2V1ZG9DbGFzc2VzIiwidW5rbm93biIsImRlZmluaXRpb25zIiwiU2VsZWN0b3IiLCJjb21iaW5hdG9ycyIsImF0dHJpYnV0ZXMiLCJvcGVyYXRvcnMiLCJpZHMiLCJjbGFzc05hbWVzIiwidGFnIiwid2lsZGNhcmQiLCJzdWJzdGl0dXRlcyIsIlJFU09VUkNFX0lEIiwiSURfTE9DQVRPUl9QQVRURVJOIiwiQk9PTEVBTl9BVFRSUyIsIk5VTUVSSUNfQVRUUlMiLCJTVFJfQVRUUlMiLCJBTExfQVRUUlMiLCJBVFRSSUJVVEVfQUxJQVNFUyIsInRvU25ha2VDYXNlIiwic3RyIiwidG9rZW5zIiwic3BsaXQiLCJtYXAiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwidG9Mb3dlckNhc2UiLCJvdXQiLCJqb2luIiwicmVxdWlyZUJvb2xlYW4iLCJjc3MiLCJfcmVmIiwidmFsIiwiXyIsInRvTG93ZXIiLCJ2YWx1ZSIsImFyZ3VtZW50IiwiaW5jbHVkZXMiLCJFcnJvciIsIm5hbWUiLCJyZXF1aXJlRW50aXR5TmFtZSIsImNzc0VudGl0eSIsImF0dHJOYW1lIiwib2ZmaWNpYWxBdHRyIiwiYWxpYXNBdHRycyIsImdldFdvcmRNYXRjaGVyUmVnZXgiLCJ3b3JkIiwiZXNjYXBlUmVnRXhwIiwiQ3NzQ29udmVydGVyIiwiY29uc3RydWN0b3IiLCJzZWxlY3RvciIsInBrZyIsImZvcm1hdElkTG9jYXRvciIsImxvY2F0b3IiLCJ0ZXN0IiwicGFyc2VBdHRyIiwiY3NzQXR0ciIsIl9jc3NBdHRyJHZhbHVlIiwiYXR0clZhbHVlIiwiaXNTdHJpbmciLCJpc0VtcHR5IiwibWV0aG9kTmFtZSIsIm9wZXJhdG9yIiwicGFyc2VQc2V1ZG8iLCJjc3NQc2V1ZG8iLCJfY3NzUHNldWRvJGFyZ3VtZW50IiwiYXJnVmFsdWUiLCJwc2V1ZG9OYW1lIiwicGFyc2VDc3NSdWxlIiwiY3NzUnVsZSIsIl9jc3NSdWxlJHRhZyIsImNvbWJpbmF0b3IiLCJ1aUF1dG9tYXRvclNlbGVjdG9yIiwidGFnTmFtZSIsImFuZHJvaWRDbGFzcyIsImNzc0NsYXNzTmFtZXMiLCJwdXNoIiwiYXR0ciIsInBzZXVkbyIsInNlbCIsIm5lc3RlZFJ1bGUiLCJwYXJzZUNzc09iamVjdCIsInJ1bGVzIiwidG9VaUF1dG9tYXRvclNlbGVjdG9yIiwiY3NzT2JqIiwiZSIsImxvZyIsImRlYnVnIiwic3RhY2siLCJlcnJvcnMiLCJJbnZhbGlkU2VsZWN0b3JFcnJvciIsIm1lc3NhZ2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2Nzcy1jb252ZXJ0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUGFyc2VyIH0gZnJvbSAnY3NzLXNlbGVjdG9yLXBhcnNlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcblxuY29uc3QgcGFyc2VDc3NTZWxlY3RvciA9IGNyZWF0ZVBhcnNlcih7XG4gIHN5bnRheDoge1xuICAgIHBzZXVkb0NsYXNzZXM6IHtcbiAgICAgIHVua25vd246ICdhY2NlcHQnLFxuICAgICAgZGVmaW5pdGlvbnM6IHtcbiAgICAgICAgU2VsZWN0b3I6IFsnaGFzJ10sXG4gICAgICB9XG4gICAgfSxcbiAgICBjb21iaW5hdG9yczogWyc+JywgJysnLCAnfiddLFxuICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgIG9wZXJhdG9yczogWydePScsICckPScsICcqPScsICd+PScsICc9J11cbiAgICB9LFxuICAgIGlkczogdHJ1ZSxcbiAgICBjbGFzc05hbWVzOiB0cnVlLFxuICAgIHRhZzoge1xuICAgICAgd2lsZGNhcmQ6IHRydWVcbiAgICB9LFxuICB9LFxuICBzdWJzdGl0dXRlczogdHJ1ZVxufSk7XG5cbmNvbnN0IFJFU09VUkNFX0lEID0gJ3Jlc291cmNlLWlkJztcbmNvbnN0IElEX0xPQ0FUT1JfUEFUVEVSTiA9IC9eW2EtekEtWl9dW2EtekEtWjAtOS5fXSo6aWRcXC9bXFxTXSskLztcblxuY29uc3QgQk9PTEVBTl9BVFRSUyA9IFtcbiAgJ2NoZWNrYWJsZScsICdjaGVja2VkJywgJ2NsaWNrYWJsZScsICdlbmFibGVkJywgJ2ZvY3VzYWJsZScsXG4gICdmb2N1c2VkJywgJ2xvbmctY2xpY2thYmxlJywgJ3Njcm9sbGFibGUnLCAnc2VsZWN0ZWQnLFxuXTtcblxuY29uc3QgTlVNRVJJQ19BVFRSUyA9IFtcbiAgJ2luZGV4JywgJ2luc3RhbmNlJyxcbl07XG5cbmNvbnN0IFNUUl9BVFRSUyA9IFtcbiAgJ2Rlc2NyaXB0aW9uJywgUkVTT1VSQ0VfSUQsICd0ZXh0JywgJ2NsYXNzLW5hbWUnLCAncGFja2FnZS1uYW1lJ1xuXTtcblxuY29uc3QgQUxMX0FUVFJTID0gW1xuICAuLi5CT09MRUFOX0FUVFJTLFxuICAuLi5OVU1FUklDX0FUVFJTLFxuICAuLi5TVFJfQVRUUlMsXG5dO1xuXG5jb25zdCBBVFRSSUJVVEVfQUxJQVNFUyA9IFtcbiAgW1JFU09VUkNFX0lELCBbJ2lkJ11dLFxuICBbJ2Rlc2NyaXB0aW9uJywgW1xuICAgICdjb250ZW50LWRlc2NyaXB0aW9uJywgJ2NvbnRlbnQtZGVzYycsXG4gICAgJ2Rlc2MnLCAnYWNjZXNzaWJpbGl0eS1pZCcsXG4gIF1dLFxuICBbJ2luZGV4JywgWydudGgtY2hpbGQnXV0sXG5dO1xuXG4vKipcbiAqIENvbnZlcnQgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRvIHNuYWtlIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZz99IHN0clxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGh5cGhlbiBzZXBhcmF0ZWQgd29yZCB0cmFuc2xhdGVkIHRvIHNuYWtlIGNhc2VcbiAqL1xuZnVuY3Rpb24gdG9TbmFrZUNhc2UgKHN0cikge1xuICBpZiAoIXN0cikge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBjb25zdCB0b2tlbnMgPSBzdHIuc3BsaXQoJy0nKS5tYXAoKHN0cikgPT4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCkpO1xuICBjb25zdCBvdXQgPSB0b2tlbnMuam9pbignJyk7XG4gIHJldHVybiBvdXQuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBvdXQuc2xpY2UoMSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBib29sZWFuIGZyb20gYSBDU1Mgb2JqZWN0LiBJZiBlbXB0eSwgcmV0dXJuIHRydWUuIElmIG5vdCB0cnVlL2ZhbHNlL2VtcHR5LCB0aHJvdyBleGNlcHRpb25cbiAqXG4gKiBAcGFyYW0ge2ltcG9ydCgnY3NzLXNlbGVjdG9yLXBhcnNlcicpLkFzdEF0dHJpYnV0ZXxpbXBvcnQoJ2Nzcy1zZWxlY3Rvci1wYXJzZXInKS5Bc3RQc2V1ZG9DbGFzc30gY3NzIEFcbiAqIENTUyBvYmplY3QgdGhhdCBoYXMgJ25hbWUnIGFuZCAndmFsdWUnXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBFaXRoZXIgJ3RydWUnIG9yICdmYWxzZScuIElmIHZhbHVlIGlzIGVtcHR5LCByZXR1cm4gJ3RydWUnXG4gKi9cbmZ1bmN0aW9uIHJlcXVpcmVCb29sZWFuIChjc3MpIHtcbiAgY29uc3QgdmFsID0gXy50b0xvd2VyKChjc3MudmFsdWUgPz8gY3NzLmFyZ3VtZW50KT8udmFsdWUpIHx8ICd0cnVlJzsgLy8gYW4gb21pdHRlZCBib29sZWFuIGF0dHJpYnV0ZSBtZWFucyAndHJ1ZScgKGUuZy46IGlucHV0W2NoZWNrZWRdIG1lYW5zIGNoZWNrZWQgaXMgdHJ1ZSlcbiAgaWYgKFsndHJ1ZScsICdmYWxzZSddLmluY2x1ZGVzKHZhbCkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzLm5hbWV9JyBtdXN0IGJlIHRydWUsIGZhbHNlIG9yIGVtcHR5LiBGb3VuZCAnJHtjc3MudmFsdWV9J2ApO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY2Fub25pY2FsIGZvcm0gb2YgYSBDU1MgYXR0cmlidXRlIG5hbWVcbiAqXG4gKiBDb252ZXJ0cyB0byBsb3dlcmNhc2UgYW5kIGlmIGFuIGF0dHJpYnV0ZSBuYW1lIGlzIGFuIGFsaWFzIGZvciBzb21ldGhpbmcgZWxzZSwgcmV0dXJuXG4gKiB3aGF0IGl0IGlzIGFuIGFsaWFzIGZvclxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCdjc3Mtc2VsZWN0b3ItcGFyc2VyJykuQXN0QXR0cmlidXRlfGltcG9ydCgnY3NzLXNlbGVjdG9yLXBhcnNlcicpLkFzdFBzZXVkb0NsYXNzfSBjc3NFbnRpdHkgQ1NTIG9iamVjdFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNhbm9uaWNhbCBhdHRyaWJ1dGUgbmFtZVxuICovXG5mdW5jdGlvbiByZXF1aXJlRW50aXR5TmFtZSAoY3NzRW50aXR5KSB7XG4gIGNvbnN0IGF0dHJOYW1lID0gY3NzRW50aXR5Lm5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAvLyBDaGVjayBpZiBpdCdzIHN1cHBvcnRlZCBhbmQgaWYgaXQgaXMsIHJldHVybiBpdFxuICBpZiAoQUxMX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgIHJldHVybiBhdHRyTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLy8gSWYgYXR0ck5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm4gdGhhdFxuICBmb3IgKGNvbnN0IFtvZmZpY2lhbEF0dHIsIGFsaWFzQXR0cnNdIG9mIEFUVFJJQlVURV9BTElBU0VTKSB7XG4gICAgaWYgKGFsaWFzQXR0cnMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gb2ZmaWNpYWxBdHRyO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IGEgdmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICBgU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlICcke0FMTF9BVFRSUy5qb2luKCcsICcpfSdgKTtcbn1cblxuLyoqXG4gKiBHZXQgYSByZWdleCB0aGF0IG1hdGNoZXMgYSB3aG9sZSB3b3JkLiBGb3IgdGhlIH49IENTUyBhdHRyaWJ1dGUgc2VsZWN0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHdvcmRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcmVnZXggXCJ3b3JkXCIgbWF0Y2hlclxuICovXG5mdW5jdGlvbiBnZXRXb3JkTWF0Y2hlclJlZ2V4ICh3b3JkKSB7XG4gIHJldHVybiBgXFxcXGIoXFxcXHcqJHtfLmVzY2FwZVJlZ0V4cCh3b3JkKX1cXFxcdyopXFxcXGJgO1xufVxuXG5cbmNsYXNzIENzc0NvbnZlcnRlciB7XG5cbiAgY29uc3RydWN0b3IgKHNlbGVjdG9yLCBwa2cpIHtcbiAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgdGhpcy5wa2cgPSBwa2c7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGA8cGtnTmFtZT46aWQvYCBwcmVmaXggdG8gYmVnaW5uaW5nIG9mIHN0cmluZyBpZiBpdCdzIG5vdCB0aGVyZSBhbHJlYWR5XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdG9yIFRoZSBpbml0aWFsIGxvY2F0b3JcbiAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIHdpdGggYDxwa2dOYW1lPjppZC9gIHByZXBlbmRlZCAoaWYgaXQgd2Fzbid0IGFscmVhZHkpXG4gICAqL1xuICBmb3JtYXRJZExvY2F0b3IgKGxvY2F0b3IpIHtcbiAgICByZXR1cm4gSURfTE9DQVRPUl9QQVRURVJOLnRlc3QobG9jYXRvcilcbiAgICAgID8gbG9jYXRvclxuICAgICAgOiBgJHt0aGlzLnBrZyB8fCAnYW5kcm9pZCd9OmlkLyR7bG9jYXRvcn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgYXR0cmlidXRlIGludG8gYSBVaVNlbGVjdG9yIG1ldGhvZCBjYWxsXG4gICAqXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdjc3Mtc2VsZWN0b3ItcGFyc2VyJykuQXN0QXR0cmlidXRlfSBjc3NBdHRyIENTUyBhdHRyaWJ1dGUgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IENTUyBhdHRyaWJ1dGUgcGFyc2VkIGFzIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlQXR0ciAoY3NzQXR0cikge1xuICAgIGNvbnN0IGF0dHJWYWx1ZSA9IGNzc0F0dHIudmFsdWU/LnZhbHVlO1xuICAgIGlmICghXy5pc1N0cmluZyhhdHRyVmFsdWUpICYmICFfLmlzRW1wdHkoYXR0clZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NBdHRyLm5hbWV9PSR7YXR0clZhbHVlfScgaXMgYW4gaW52YWxpZCBhdHRyaWJ1dGUuIGAgK1xuICAgICAgICBgT25seSAnc3RyaW5nJyBhbmQgZW1wdHkgYXR0cmlidXRlIHR5cGVzIGFyZSBzdXBwb3J0ZWQuIEZvdW5kICcke2F0dHJWYWx1ZX0nYCk7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJOYW1lID0gcmVxdWlyZUVudGl0eU5hbWUoY3NzQXR0cik7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHRvU25ha2VDYXNlKGF0dHJOYW1lKTtcblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgaXQncyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGVcbiAgICBpZiAoIVNUUl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkgJiYgIUJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IHN1cHBvcnRlZC4gU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlIGAgK1xuICAgICAgICBgJyR7Wy4uLlNUUl9BVFRSUywgLi4uQk9PTEVBTl9BVFRSU10uam9pbignLCAnKX0nYCk7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgYm9vbGVhbiwgaWYgaXQncyBhIGJvb2xlYW4gYXR0cmlidXRlXG4gICAgaWYgKEJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9KCR7cmVxdWlyZUJvb2xlYW4oY3NzQXR0cil9KWA7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlIHBhcnNlIGFzIHN0cmluZ1xuICAgIGxldCB2YWx1ZSA9IGF0dHJWYWx1ZSB8fCAnJztcbiAgICBpZiAoYXR0ck5hbWUgPT09IFJFU09VUkNFX0lEKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZm9ybWF0SWRMb2NhdG9yKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJcIilgO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY3NzQXR0ci5vcGVyYXRvcikge1xuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oXCIke3ZhbHVlfVwiKWA7XG4gICAgICBjYXNlICcqPSc6XG4gICAgICAgIGlmIChbJ2Rlc2NyaXB0aW9uJywgJ3RleHQnXS5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9Q29udGFpbnMoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke18uZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnXj0nOlxuICAgICAgICBpZiAoWydkZXNjcmlwdGlvbicsICd0ZXh0J10uaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfVN0YXJ0c1dpdGgoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJeJHtfLmVzY2FwZVJlZ0V4cCh2YWx1ZSl9XCIpYDtcbiAgICAgIGNhc2UgJyQ9JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke18uZXNjYXBlUmVnRXhwKHZhbHVlKX0kXCIpYDtcbiAgICAgIGNhc2UgJ349JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2dldFdvcmRNYXRjaGVyUmVnZXgodmFsdWUpfVwiKWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBVbnJlYWNoYWJsZSwgYnV0IGFkZGluZyBlcnJvciBpbiBjYXNlIGEgbmV3IENTUyBhdHRyaWJ1dGUgaXMgYWRkZWQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgQ1NTIGF0dHJpYnV0ZSBvcGVyYXRvciAnJHtjc3NBdHRyLm9wZXJhdG9yfScuIGAgK1xuICAgICAgICAgIGAgJz0nLCAnKj0nLCAnXj0nLCAnJD0nIGFuZCAnfj0nIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcHNldWRvIGNsYXNzIHRvIGEgVWlTZWxlY3RvclxuICAgKlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnY3NzLXNlbGVjdG9yLXBhcnNlcicpLkFzdFBzZXVkb0NsYXNzfSBjc3NQc2V1ZG8gQ1NTIFBzZXVkbyBjbGFzc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nP30gUHNldWRvIHNlbGVjdG9yIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZVBzZXVkbyAoY3NzUHNldWRvKSB7XG4gICAgY29uc3QgYXJnVmFsdWUgPSBjc3NQc2V1ZG8uYXJndW1lbnQ/LnZhbHVlO1xuICAgIGlmICghXy5pc1N0cmluZyhhcmdWYWx1ZSkgJiYgIV8uaXNFbXB0eShhcmdWYWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzUHNldWRvLm5hbWV9PSR7YXJnVmFsdWV9Jy4gYCArXG4gICAgICAgIGBVbnN1cHBvcnRlZCBjc3MgcHNldWRvIGNsYXNzIHZhbHVlOiAnJHthcmdWYWx1ZX0nLiBPbmx5ICdzdHJpbmcnIHR5cGUgb3IgZW1wdHkgaXMgc3VwcG9ydGVkLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHBzZXVkb05hbWUgPSByZXF1aXJlRW50aXR5TmFtZShjc3NQc2V1ZG8pO1xuXG4gICAgaWYgKEJPT0xFQU5fQVRUUlMuaW5jbHVkZXMocHNldWRvTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7dG9TbmFrZUNhc2UocHNldWRvTmFtZSl9KCR7cmVxdWlyZUJvb2xlYW4oY3NzUHNldWRvKX0pYDtcbiAgICB9XG5cbiAgICBpZiAoTlVNRVJJQ19BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHtwc2V1ZG9OYW1lfSgke2FyZ1ZhbHVlfSlgO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIHJ1bGUgdG8gYSBVaVNlbGVjdG9yXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdjc3Mtc2VsZWN0b3ItcGFyc2VyJykuQXN0UnVsZX0gY3NzUnVsZSBDU1MgcnVsZSBkZWZpbml0aW9uXG4gICAqL1xuICBwYXJzZUNzc1J1bGUgKGNzc1J1bGUpIHtcbiAgICBpZiAoY3NzUnVsZS5jb21iaW5hdG9yICYmICFbJyAnLCAnPiddLmluY2x1ZGVzKGNzc1J1bGUuY29tYmluYXRvcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzUnVsZS5jb21iaW5hdG9yfScgaXMgbm90IGEgc3VwcG9ydGVkIGNvbWJpbmF0b3IuIGAgK1xuICAgICAgICBgT25seSBjaGlsZCBjb21iaW5hdG9yICg+KSBhbmQgZGVzY2VuZGFudCBjb21iaW5hdG9yIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgbGV0IHVpQXV0b21hdG9yU2VsZWN0b3IgPSAnbmV3IFVpU2VsZWN0b3IoKSc7XG4gICAgY29uc3QgdGFnTmFtZSA9IGNzc1J1bGUudGFnPy5uYW1lO1xuICAgIGlmICh0YWdOYW1lICYmIHRhZ05hbWUgIT09ICcqJykge1xuICAgICAgbGV0IGFuZHJvaWRDbGFzcyA9IFt0YWdOYW1lXTtcbiAgICAgIGlmIChjc3NSdWxlLmNsYXNzTmFtZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBjc3NDbGFzc05hbWVzIG9mIGNzc1J1bGUuY2xhc3NOYW1lcykge1xuICAgICAgICAgIGFuZHJvaWRDbGFzcy5wdXNoKGNzc0NsYXNzTmFtZXMpO1xuICAgICAgICB9XG4gICAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jbGFzc05hbWUoXCIke2FuZHJvaWRDbGFzcy5qb2luKCcuJyl9XCIpYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jbGFzc05hbWVNYXRjaGVzKFwiJHt0YWdOYW1lfVwiKWA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghXy5pc0VtcHR5KGNzc1J1bGUuY2xhc3NOYW1lcykpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jbGFzc05hbWVNYXRjaGVzKFwiJHtjc3NSdWxlLmNsYXNzTmFtZXMuam9pbignXFxcXC4nKX1cIilgO1xuICAgIH1cbiAgICBpZiAoIV8uaXNFbXB0eShjc3NSdWxlLmlkcykpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5yZXNvdXJjZUlkKFwiJHt0aGlzLmZvcm1hdElkTG9jYXRvcihjc3NSdWxlLmlkc1swXSl9XCIpYDtcbiAgICB9XG4gICAgaWYgKGNzc1J1bGUuYXR0cmlidXRlcykge1xuICAgICAgZm9yIChjb25zdCBhdHRyIG9mIGNzc1J1bGUuYXR0cmlidXRlcykge1xuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IHRoaXMucGFyc2VBdHRyKGF0dHIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5wc2V1ZG9DbGFzc2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IHBzZXVkbyBvZiBjc3NSdWxlLnBzZXVkb0NsYXNzZXMpIHtcbiAgICAgICAgY29uc3Qgc2VsID0gdGhpcy5wYXJzZVBzZXVkbyhwc2V1ZG8pO1xuICAgICAgICBpZiAoc2VsKSB7XG4gICAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBzZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNzc1J1bGUubmVzdGVkUnVsZSkge1xuICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNoaWxkU2VsZWN0b3IoJHt0aGlzLnBhcnNlQ3NzUnVsZShjc3NSdWxlLm5lc3RlZFJ1bGUpfSlgO1xuICAgIH1cbiAgICByZXR1cm4gdWlBdXRvbWF0b3JTZWxlY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IENTUyBvYmplY3QgdG8gVWlBdXRvbWF0b3IyIHNlbGVjdG9yXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdjc3Mtc2VsZWN0b3ItcGFyc2VyJykuQXN0U2VsZWN0b3J9IGNzcyBDU1Mgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgb2JqZWN0IHBhcnNlZCBhcyBhIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlQ3NzT2JqZWN0IChjc3MpIHtcbiAgICBpZiAoIV8uaXNFbXB0eShjc3MucnVsZXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc1J1bGUoY3NzLnJ1bGVzWzBdKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJ1bGVzIGNvdWxkIGJlIHBhcnNlZCBvdXQgb2YgdGhlIGN1cnJlbnQgc2VsZWN0b3InKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIHNlbGVjdG9yIHRvIGEgVWlBdXRvbWF0b3IyIHNlbGVjdG9yXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgc2VsZWN0b3IgY29udmVydGVkIHRvIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgdG9VaUF1dG9tYXRvclNlbGVjdG9yICgpIHtcbiAgICBsZXQgY3NzT2JqO1xuICAgIHRyeSB7XG4gICAgICBjc3NPYmogPSBwYXJzZUNzc1NlbGVjdG9yKHRoaXMuc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZFNlbGVjdG9yRXJyb3IoYEludmFsaWQgQ1NTIHNlbGVjdG9yICcke3RoaXMuc2VsZWN0b3J9Jy4gUmVhc29uOiAnJHtlLm1lc3NhZ2V9J2ApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzT2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2cuZGVidWcoZS5zdGFjayk7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBVbnN1cHBvcnRlZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2UubWVzc2FnZX0nYCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENzc0NvbnZlcnRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxrQkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBRUEsTUFBTUssZ0JBQWdCLEdBQUcsSUFBQUMsK0JBQVksRUFBQztFQUNwQ0MsTUFBTSxFQUFFO0lBQ05DLGFBQWEsRUFBRTtNQUNiQyxPQUFPLEVBQUUsUUFBUTtNQUNqQkMsV0FBVyxFQUFFO1FBQ1hDLFFBQVEsRUFBRSxDQUFDLEtBQUs7TUFDbEI7SUFDRixDQUFDO0lBQ0RDLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzVCQyxVQUFVLEVBQUU7TUFDVkMsU0FB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
|
|
198
|
+
var _default = exports.default = CssConverter;
|
|
199
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3NzU2VsZWN0b3JQYXJzZXIiLCJyZXF1aXJlIiwiX2xvZGFzaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZHJpdmVyIiwiX2xvZ2dlciIsInBhcnNlQ3NzU2VsZWN0b3IiLCJjcmVhdGVQYXJzZXIiLCJzeW50YXgiLCJwc2V1ZG9DbGFzc2VzIiwidW5rbm93biIsImRlZmluaXRpb25zIiwiU2VsZWN0b3IiLCJjb21iaW5hdG9ycyIsImF0dHJpYnV0ZXMiLCJvcGVyYXRvcnMiLCJpZHMiLCJjbGFzc05hbWVzIiwidGFnIiwid2lsZGNhcmQiLCJzdWJzdGl0dXRlcyIsIlJFU09VUkNFX0lEIiwiSURfTE9DQVRPUl9QQVRURVJOIiwiQk9PTEVBTl9BVFRSUyIsIk5VTUVSSUNfQVRUUlMiLCJTVFJfQVRUUlMiLCJBTExfQVRUUlMiLCJBVFRSSUJVVEVfQUxJQVNFUyIsInRvU25ha2VDYXNlIiwic3RyIiwidG9rZW5zIiwic3BsaXQiLCJtYXAiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwidG9Mb3dlckNhc2UiLCJvdXQiLCJqb2luIiwicmVxdWlyZUJvb2xlYW4iLCJjc3MiLCJfcmVmIiwidmFsIiwiXyIsInRvTG93ZXIiLCJ2YWx1ZSIsImFyZ3VtZW50IiwiaW5jbHVkZXMiLCJFcnJvciIsIm5hbWUiLCJyZXF1aXJlRW50aXR5TmFtZSIsImNzc0VudGl0eSIsImF0dHJOYW1lIiwib2ZmaWNpYWxBdHRyIiwiYWxpYXNBdHRycyIsImdldFdvcmRNYXRjaGVyUmVnZXgiLCJ3b3JkIiwiZXNjYXBlUmVnRXhwIiwiQ3NzQ29udmVydGVyIiwiY29uc3RydWN0b3IiLCJzZWxlY3RvciIsInBrZyIsImZvcm1hdElkTG9jYXRvciIsImxvY2F0b3IiLCJ0ZXN0IiwicGFyc2VBdHRyIiwiY3NzQXR0ciIsIl9jc3NBdHRyJHZhbHVlIiwiYXR0clZhbHVlIiwiaXNTdHJpbmciLCJpc0VtcHR5IiwibWV0aG9kTmFtZSIsIm9wZXJhdG9yIiwicGFyc2VQc2V1ZG8iLCJjc3NQc2V1ZG8iLCJfY3NzUHNldWRvJGFyZ3VtZW50IiwiYXJnVmFsdWUiLCJwc2V1ZG9OYW1lIiwicGFyc2VDc3NSdWxlIiwiY3NzUnVsZSIsIl9jc3NSdWxlJHRhZyIsImNvbWJpbmF0b3IiLCJ1aUF1dG9tYXRvclNlbGVjdG9yIiwidGFnTmFtZSIsImFuZHJvaWRDbGFzcyIsImNzc0NsYXNzTmFtZXMiLCJwdXNoIiwiYXR0ciIsInBzZXVkbyIsInNlbCIsIm5lc3RlZFJ1bGUiLCJwYXJzZUNzc09iamVjdCIsInJ1bGVzIiwidG9VaUF1dG9tYXRvclNlbGVjdG9yIiwiY3NzT2JqIiwiZSIsImxvZyIsImRlYnVnIiwic3RhY2siLCJlcnJvcnMiLCJJbnZhbGlkU2VsZWN0b3JFcnJvciIsIm1lc3NhZ2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2Nzcy1jb252ZXJ0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUGFyc2VyIH0gZnJvbSAnY3NzLXNlbGVjdG9yLXBhcnNlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcblxuY29uc3QgcGFyc2VDc3NTZWxlY3RvciA9IGNyZWF0ZVBhcnNlcih7XG4gIHN5bnRheDoge1xuICAgIHBzZXVkb0NsYXNzZXM6IHtcbiAgICAgIHVua25vd246ICdhY2NlcHQnLFxuICAgICAgZGVmaW5pdGlvbnM6IHtcbiAgICAgICAgU2VsZWN0b3I6IFsnaGFzJ10sXG4gICAgICB9XG4gICAgfSxcbiAgICBjb21iaW5hdG9yczogWyc+JywgJysnLCAnfiddLFxuICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgIG9wZXJhdG9yczogWydePScsICckPScsICcqPScsICd+PScsICc9J11cbiAgICB9LFxuICAgIGlkczogdHJ1ZSxcbiAgICBjbGFzc05hbWVzOiB0cnVlLFxuICAgIHRhZzoge1xuICAgICAgd2lsZGNhcmQ6IHRydWVcbiAgICB9LFxuICB9LFxuICBzdWJzdGl0dXRlczogdHJ1ZVxufSk7XG5cbmNvbnN0IFJFU09VUkNFX0lEID0gJ3Jlc291cmNlLWlkJztcbmNvbnN0IElEX0xPQ0FUT1JfUEFUVEVSTiA9IC9eW2EtekEtWl9dW2EtekEtWjAtOS5fXSo6aWRcXC9bXFxTXSskLztcblxuY29uc3QgQk9PTEVBTl9BVFRSUyA9IFtcbiAgJ2NoZWNrYWJsZScsICdjaGVja2VkJywgJ2NsaWNrYWJsZScsICdlbmFibGVkJywgJ2ZvY3VzYWJsZScsXG4gICdmb2N1c2VkJywgJ2xvbmctY2xpY2thYmxlJywgJ3Njcm9sbGFibGUnLCAnc2VsZWN0ZWQnLFxuXTtcblxuY29uc3QgTlVNRVJJQ19BVFRSUyA9IFtcbiAgJ2luZGV4JywgJ2luc3RhbmNlJyxcbl07XG5cbmNvbnN0IFNUUl9BVFRSUyA9IFtcbiAgJ2Rlc2NyaXB0aW9uJywgUkVTT1VSQ0VfSUQsICd0ZXh0JywgJ2NsYXNzLW5hbWUnLCAncGFja2FnZS1uYW1lJ1xuXTtcblxuY29uc3QgQUxMX0FUVFJTID0gW1xuICAuLi5CT09MRUFOX0FUVFJTLFxuICAuLi5OVU1FUklDX0FUVFJTLFxuICAuLi5TVFJfQVRUUlMsXG5dO1xuXG5jb25zdCBBVFRSSUJVVEVfQUxJQVNFUyA9IFtcbiAgW1JFU09VUkNFX0lELCBbJ2lkJ11dLFxuICBbJ2Rlc2NyaXB0aW9uJywgW1xuICAgICdjb250ZW50LWRlc2NyaXB0aW9uJywgJ2NvbnRlbnQtZGVzYycsXG4gICAgJ2Rlc2MnLCAnYWNjZXNzaWJpbGl0eS1pZCcsXG4gIF1dLFxuICBbJ2luZGV4JywgWydudGgtY2hpbGQnXV0sXG5dO1xuXG4vKipcbiAqIENvbnZlcnQgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRvIHNuYWtlIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZz99IHN0clxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGh5cGhlbiBzZXBhcmF0ZWQgd29yZCB0cmFuc2xhdGVkIHRvIHNuYWtlIGNhc2VcbiAqL1xuZnVuY3Rpb24gdG9TbmFrZUNhc2UgKHN0cikge1xuICBpZiAoIXN0cikge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBjb25zdCB0b2tlbnMgPSBzdHIuc3BsaXQoJy0nKS5tYXAoKHN0cikgPT4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCkpO1xuICBjb25zdCBvdXQgPSB0b2tlbnMuam9pbignJyk7XG4gIHJldHVybiBvdXQuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBvdXQuc2xpY2UoMSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBib29sZWFuIGZyb20gYSBDU1Mgb2JqZWN0LiBJZiBlbXB0eSwgcmV0dXJuIHRydWUuIElmIG5vdCB0cnVlL2ZhbHNlL2VtcHR5LCB0aHJvdyBleGNlcHRpb25cbiAqXG4gKiBAcGFyYW0ge2ltcG9ydCgnY3NzLXNlbGVjdG9yLXBhcnNlcicpLkFzdEF0dHJpYnV0ZXxpbXBvcnQoJ2Nzcy1zZWxlY3Rvci1wYXJzZXInKS5Bc3RQc2V1ZG9DbGFzc30gY3NzIEFcbiAqIENTUyBvYmplY3QgdGhhdCBoYXMgJ25hbWUnIGFuZCAndmFsdWUnXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBFaXRoZXIgJ3RydWUnIG9yICdmYWxzZScuIElmIHZhbHVlIGlzIGVtcHR5LCByZXR1cm4gJ3RydWUnXG4gKi9cbmZ1bmN0aW9uIHJlcXVpcmVCb29sZWFuIChjc3MpIHtcbiAgY29uc3QgdmFsID0gXy50b0xvd2VyKChjc3MudmFsdWUgPz8gY3NzLmFyZ3VtZW50KT8udmFsdWUpIHx8ICd0cnVlJzsgLy8gYW4gb21pdHRlZCBib29sZWFuIGF0dHJpYnV0ZSBtZWFucyAndHJ1ZScgKGUuZy46IGlucHV0W2NoZWNrZWRdIG1lYW5zIGNoZWNrZWQgaXMgdHJ1ZSlcbiAgaWYgKFsndHJ1ZScsICdmYWxzZSddLmluY2x1ZGVzKHZhbCkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzLm5hbWV9JyBtdXN0IGJlIHRydWUsIGZhbHNlIG9yIGVtcHR5LiBGb3VuZCAnJHtjc3MudmFsdWV9J2ApO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY2Fub25pY2FsIGZvcm0gb2YgYSBDU1MgYXR0cmlidXRlIG5hbWVcbiAqXG4gKiBDb252ZXJ0cyB0byBsb3dlcmNhc2UgYW5kIGlmIGFuIGF0dHJpYnV0ZSBuYW1lIGlzIGFuIGFsaWFzIGZvciBzb21ldGhpbmcgZWxzZSwgcmV0dXJuXG4gKiB3aGF0IGl0IGlzIGFuIGFsaWFzIGZvclxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCdjc3Mtc2VsZWN0b3ItcGFyc2VyJykuQXN0QXR0cmlidXRlfGltcG9ydCgnY3NzLXNlbGVjdG9yLXBhcnNlcicpLkFzdFBzZXVkb0NsYXNzfSBjc3NFbnRpdHkgQ1NTIG9iamVjdFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNhbm9uaWNhbCBhdHRyaWJ1dGUgbmFtZVxuICovXG5mdW5jdGlvbiByZXF1aXJlRW50aXR5TmFtZSAoY3NzRW50aXR5KSB7XG4gIGNvbnN0IGF0dHJOYW1lID0gY3NzRW50aXR5Lm5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAvLyBDaGVjayBpZiBpdCdzIHN1cHBvcnRlZCBhbmQgaWYgaXQgaXMsIHJldHVybiBpdFxuICBpZiAoQUxMX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgIHJldHVybiBhdHRyTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLy8gSWYgYXR0ck5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm4gdGhhdFxuICBmb3IgKGNvbnN0IFtvZmZpY2lhbEF0dHIsIGFsaWFzQXR0cnNdIG9mIEFUVFJJQlVURV9BTElBU0VTKSB7XG4gICAgaWYgKGFsaWFzQXR0cnMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gb2ZmaWNpYWxBdHRyO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IGEgdmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICBgU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlICcke0FMTF9BVFRSUy5qb2luKCcsICcpfSdgKTtcbn1cblxuLyoqXG4gKiBHZXQgYSByZWdleCB0aGF0IG1hdGNoZXMgYSB3aG9sZSB3b3JkLiBGb3IgdGhlIH49IENTUyBhdHRyaWJ1dGUgc2VsZWN0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHdvcmRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcmVnZXggXCJ3b3JkXCIgbWF0Y2hlclxuICovXG5mdW5jdGlvbiBnZXRXb3JkTWF0Y2hlclJlZ2V4ICh3b3JkKSB7XG4gIHJldHVybiBgXFxcXGIoXFxcXHcqJHtfLmVzY2FwZVJlZ0V4cCh3b3JkKX1cXFxcdyopXFxcXGJgO1xufVxuXG5cbmNsYXNzIENzc0NvbnZlcnRlciB7XG5cbiAgY29uc3RydWN0b3IgKHNlbGVjdG9yLCBwa2cpIHtcbiAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgdGhpcy5wa2cgPSBwa2c7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGA8cGtnTmFtZT46aWQvYCBwcmVmaXggdG8gYmVnaW5uaW5nIG9mIHN0cmluZyBpZiBpdCdzIG5vdCB0aGVyZSBhbHJlYWR5XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdG9yIFRoZSBpbml0aWFsIGxvY2F0b3JcbiAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIHdpdGggYDxwa2dOYW1lPjppZC9gIHByZXBlbmRlZCAoaWYgaXQgd2Fzbid0IGFscmVhZHkpXG4gICAqL1xuICBmb3JtYXRJZExvY2F0b3IgKGxvY2F0b3IpIHtcbiAgICByZXR1cm4gSURfTE9DQVRPUl9QQVRURVJOLnRlc3QobG9jYXRvcilcbiAgICAgID8gbG9jYXRvclxuICAgICAgOiBgJHt0aGlzLnBrZyB8fCAnYW5kcm9pZCd9OmlkLyR7bG9jYXRvcn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgYXR0cmlidXRlIGludG8gYSBVaVNlbGVjdG9yIG1ldGhvZCBjYWxsXG4gICAqXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdjc3Mtc2VsZWN0b3ItcGFyc2VyJykuQXN0QXR0cmlidXRlfSBjc3NBdHRyIENTUyBhdHRyaWJ1dGUgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IENTUyBhdHRyaWJ1dGUgcGFyc2VkIGFzIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlQXR0ciAoY3NzQXR0cikge1xuICAgIGNvbnN0IGF0dHJWYWx1ZSA9IGNzc0F0dHIudmFsdWU/LnZhbHVlO1xuICAgIGlmICghXy5pc1N0cmluZyhhdHRyVmFsdWUpICYmICFfLmlzRW1wdHkoYXR0clZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NBdHRyLm5hbWV9PSR7YXR0clZhbHVlfScgaXMgYW4gaW52YWxpZCBhdHRyaWJ1dGUuIGAgK1xuICAgICAgICBgT25seSAnc3RyaW5nJyBhbmQgZW1wdHkgYXR0cmlidXRlIHR5cGVzIGFyZSBzdXBwb3J0ZWQuIEZvdW5kICcke2F0dHJWYWx1ZX0nYCk7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJOYW1lID0gcmVxdWlyZUVudGl0eU5hbWUoY3NzQXR0cik7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHRvU25ha2VDYXNlKGF0dHJOYW1lKTtcblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgaXQncyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGVcbiAgICBpZiAoIVNUUl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkgJiYgIUJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IHN1cHBvcnRlZC4gU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlIGAgK1xuICAgICAgICBgJyR7Wy4uLlNUUl9BVFRSUywgLi4uQk9PTEVBTl9BVFRSU10uam9pbignLCAnKX0nYCk7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgYm9vbGVhbiwgaWYgaXQncyBhIGJvb2xlYW4gYXR0cmlidXRlXG4gICAgaWYgKEJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9KCR7cmVxdWlyZUJvb2xlYW4oY3NzQXR0cil9KWA7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlIHBhcnNlIGFzIHN0cmluZ1xuICAgIGxldCB2YWx1ZSA9IGF0dHJWYWx1ZSB8fCAnJztcbiAgICBpZiAoYXR0ck5hbWUgPT09IFJFU09VUkNFX0lEKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZm9ybWF0SWRMb2NhdG9yKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJcIilgO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY3NzQXR0ci5vcGVyYXRvcikge1xuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oXCIke3ZhbHVlfVwiKWA7XG4gICAgICBjYXNlICcqPSc6XG4gICAgICAgIGlmIChbJ2Rlc2NyaXB0aW9uJywgJ3RleHQnXS5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9Q29udGFpbnMoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke18uZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnXj0nOlxuICAgICAgICBpZiAoWydkZXNjcmlwdGlvbicsICd0ZXh0J10uaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfVN0YXJ0c1dpdGgoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJeJHtfLmVzY2FwZVJlZ0V4cCh2YWx1ZSl9XCIpYDtcbiAgICAgIGNhc2UgJyQ9JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke18uZXNjYXBlUmVnRXhwKHZhbHVlKX0kXCIpYDtcbiAgICAgIGNhc2UgJ349JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2dldFdvcmRNYXRjaGVyUmVnZXgodmFsdWUpfVwiKWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBVbnJlYWNoYWJsZSwgYnV0IGFkZGluZyBlcnJvciBpbiBjYXNlIGEgbmV3IENTUyBhdHRyaWJ1dGUgaXMgYWRkZWQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgQ1NTIGF0dHJpYnV0ZSBvcGVyYXRvciAnJHtjc3NBdHRyLm9wZXJhdG9yfScuIGAgK1xuICAgICAgICAgIGAgJz0nLCAnKj0nLCAnXj0nLCAnJD0nIGFuZCAnfj0nIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcHNldWRvIGNsYXNzIHRvIGEgVWlTZWxlY3RvclxuICAgKlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnY3NzLXNlbGVjdG9yLXBhcnNlcicpLkFzdFBzZXVkb0NsYXNzfSBjc3NQc2V1ZG8gQ1NTIFBzZXVkbyBjbGFzc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nP30gUHNldWRvIHNlbGVjdG9yIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZVBzZXVkbyAoY3NzUHNldWRvKSB7XG4gICAgY29uc3QgYXJnVmFsdWUgPSBjc3NQc2V1ZG8uYXJndW1lbnQ/LnZhbHVlO1xuICAgIGlmICghXy5pc1N0cmluZyhhcmdWYWx1ZSkgJiYgIV8uaXNFbXB0eShhcmdWYWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzUHNldWRvLm5hbWV9PSR7YXJnVmFsdWV9Jy4gYCArXG4gICAgICAgIGBVbnN1cHBvcnRlZCBjc3MgcHNldWRvIGNsYXNzIHZhbHVlOiAnJHthcmdWYWx1ZX0nLiBPbmx5ICdzdHJpbmcnIHR5cGUgb3IgZW1wdHkgaXMgc3VwcG9ydGVkLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHBzZXVkb05hbWUgPSByZXF1aXJlRW50aXR5TmFtZShjc3NQc2V1ZG8pO1xuXG4gICAgaWYgKEJPT0xFQU5fQVRUUlMuaW5jbHVkZXMocHNldWRvTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7dG9TbmFrZUNhc2UocHNldWRvTmFtZSl9KCR7cmVxdWlyZUJvb2xlYW4oY3NzUHNldWRvKX0pYDtcbiAgICB9XG5cbiAgICBpZiAoTlVNRVJJQ19BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHtwc2V1ZG9OYW1lfSgke2FyZ1ZhbHVlfSlgO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIHJ1bGUgdG8gYSBVaVNlbGVjdG9yXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdjc3Mtc2VsZWN0b3ItcGFyc2VyJykuQXN0UnVsZX0gY3NzUnVsZSBDU1MgcnVsZSBkZWZpbml0aW9uXG4gICAqL1xuICBwYXJzZUNzc1J1bGUgKGNzc1J1bGUpIHtcbiAgICBpZiAoY3NzUnVsZS5jb21iaW5hdG9yICYmICFbJyAnLCAnPiddLmluY2x1ZGVzKGNzc1J1bGUuY29tYmluYXRvcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzUnVsZS5jb21iaW5hdG9yfScgaXMgbm90IGEgc3VwcG9ydGVkIGNvbWJpbmF0b3IuIGAgK1xuICAgICAgICBgT25seSBjaGlsZCBjb21iaW5hdG9yICg+KSBhbmQgZGVzY2VuZGFudCBjb21iaW5hdG9yIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgbGV0IHVpQXV0b21hdG9yU2VsZWN0b3IgPSAnbmV3IFVpU2VsZWN0b3IoKSc7XG4gICAgY29uc3QgdGFnTmFtZSA9IGNzc1J1bGUudGFnPy5uYW1lO1xuICAgIGlmICh0YWdOYW1lICYmIHRhZ05hbWUgIT09ICcqJykge1xuICAgICAgbGV0IGFuZHJvaWRDbGFzcyA9IFt0YWdOYW1lXTtcbiAgICAgIGlmIChjc3NSdWxlLmNsYXNzTmFtZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBjc3NDbGFzc05hbWVzIG9mIGNzc1J1bGUuY2xhc3NOYW1lcykge1xuICAgICAgICAgIGFuZHJvaWRDbGFzcy5wdXNoKGNzc0NsYXNzTmFtZXMpO1xuICAgICAgICB9XG4gICAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jbGFzc05hbWUoXCIke2FuZHJvaWRDbGFzcy5qb2luKCcuJyl9XCIpYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jbGFzc05hbWVNYXRjaGVzKFwiJHt0YWdOYW1lfVwiKWA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghXy5pc0VtcHR5KGNzc1J1bGUuY2xhc3NOYW1lcykpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jbGFzc05hbWVNYXRjaGVzKFwiJHtjc3NSdWxlLmNsYXNzTmFtZXMuam9pbignXFxcXC4nKX1cIilgO1xuICAgIH1cbiAgICBpZiAoIV8uaXNFbXB0eShjc3NSdWxlLmlkcykpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5yZXNvdXJjZUlkKFwiJHt0aGlzLmZvcm1hdElkTG9jYXRvcihjc3NSdWxlLmlkc1swXSl9XCIpYDtcbiAgICB9XG4gICAgaWYgKGNzc1J1bGUuYXR0cmlidXRlcykge1xuICAgICAgZm9yIChjb25zdCBhdHRyIG9mIGNzc1J1bGUuYXR0cmlidXRlcykge1xuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IHRoaXMucGFyc2VBdHRyKGF0dHIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5wc2V1ZG9DbGFzc2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IHBzZXVkbyBvZiBjc3NSdWxlLnBzZXVkb0NsYXNzZXMpIHtcbiAgICAgICAgY29uc3Qgc2VsID0gdGhpcy5wYXJzZVBzZXVkbyhwc2V1ZG8pO1xuICAgICAgICBpZiAoc2VsKSB7XG4gICAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBzZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNzc1J1bGUubmVzdGVkUnVsZSkge1xuICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNoaWxkU2VsZWN0b3IoJHt0aGlzLnBhcnNlQ3NzUnVsZShjc3NSdWxlLm5lc3RlZFJ1bGUpfSlgO1xuICAgIH1cbiAgICByZXR1cm4gdWlBdXRvbWF0b3JTZWxlY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IENTUyBvYmplY3QgdG8gVWlBdXRvbWF0b3IyIHNlbGVjdG9yXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdjc3Mtc2VsZWN0b3ItcGFyc2VyJykuQXN0U2VsZWN0b3J9IGNzcyBDU1Mgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgb2JqZWN0IHBhcnNlZCBhcyBhIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlQ3NzT2JqZWN0IChjc3MpIHtcbiAgICBpZiAoIV8uaXNFbXB0eShjc3MucnVsZXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc1J1bGUoY3NzLnJ1bGVzWzBdKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJ1bGVzIGNvdWxkIGJlIHBhcnNlZCBvdXQgb2YgdGhlIGN1cnJlbnQgc2VsZWN0b3InKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIHNlbGVjdG9yIHRvIGEgVWlBdXRvbWF0b3IyIHNlbGVjdG9yXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgc2VsZWN0b3IgY29udmVydGVkIHRvIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgdG9VaUF1dG9tYXRvclNlbGVjdG9yICgpIHtcbiAgICBsZXQgY3NzT2JqO1xuICAgIHRyeSB7XG4gICAgICBjc3NPYmogPSBwYXJzZUNzc1NlbGVjdG9yKHRoaXMuc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZFNlbGVjdG9yRXJyb3IoYEludmFsaWQgQ1NTIHNlbGVjdG9yICcke3RoaXMuc2VsZWN0b3J9Jy4gUmVhc29uOiAnJHtlLm1lc3NhZ2V9J2ApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzT2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2cuZGVidWcoZS5zdGFjayk7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBVbnN1cHBvcnRlZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2UubWVzc2FnZX0nYCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENzc0NvbnZlcnRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxrQkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBRUEsTUFBTUssZ0JBQWdCLEdBQUcsSUFBQUMsK0JBQVksRUFBQztFQUNwQ0MsTUFBTSxFQUFFO0lBQ05DLGFBQWEsRUFBRTtNQUNiQyxPQUFPLEVBQUUsUUFBUTtNQUNqQkMsV0FBVyxFQUFFO1FBQ1hDLFFBQVEsRUFBRSxDQUFDLEtBQUs7TUFDbEI7SUFDRixDQUFDO0lBQ0RDLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzVCQyxVQUFVLEVBQUU7TUFDVkMsU0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-converter.js","names":["_cssSelectorParser","require","_lodash","_interopRequireDefault","_driver","_logger","parseCssSelector","createParser","syntax","pseudoClasses","unknown","definitions","Selector","combinators","attributes","operators","ids","classNames","tag","wildcard","substitutes","RESOURCE_ID","ID_LOCATOR_PATTERN","BOOLEAN_ATTRS","NUMERIC_ATTRS","STR_ATTRS","ALL_ATTRS","ATTRIBUTE_ALIASES","toSnakeCase","str","tokens","split","map","charAt","toUpperCase","slice","toLowerCase","out","join","requireBoolean","css","_ref","val","_","toLower","value","argument","includes","Error","name","requireEntityName","cssEntity","attrName","officialAttr","aliasAttrs","getWordMatcherRegex","word","escapeRegExp","CssConverter","constructor","selector","pkg","formatIdLocator","locator","test","parseAttr","cssAttr","_cssAttr$value","attrValue","isString","isEmpty","methodName","operator","parsePseudo","cssPseudo","_cssPseudo$argument","argValue","pseudoName","parseCssRule","cssRule","_cssRule$tag","combinator","uiAutomatorSelector","tagName","androidClass","cssClassNames","push","attr","pseudo","sel","nestedRule","parseCssObject","rules","toUiAutomatorSelector","cssObj","e","log","debug","stack","errors","InvalidSelectorError","message","_default","exports","default"],"sources":["../../lib/css-converter.js"],"sourcesContent":["import { createParser } from 'css-selector-parser';\nimport _ from 'lodash';\nimport { errors } from 'appium/driver';\nimport log from './logger';\n\nconst parseCssSelector = createParser({\n syntax: {\n pseudoClasses: {\n unknown: 'accept',\n definitions: {\n Selector: ['has'],\n }\n },\n combinators: ['>', '+', '~'],\n attributes: {\n operators: ['^=', '$=', '*=', '~=', '=']\n },\n ids: true,\n classNames: true,\n tag: {\n wildcard: true\n },\n },\n substitutes: true\n});\n\nconst RESOURCE_ID = 'resource-id';\nconst ID_LOCATOR_PATTERN = /^[a-zA-Z_][a-zA-Z0-9._]*:id\\/[\\S]+$/;\n\nconst BOOLEAN_ATTRS = [\n 'checkable', 'checked', 'clickable', 'enabled', 'focusable',\n 'focused', 'long-clickable', 'scrollable', 'selected',\n];\n\nconst NUMERIC_ATTRS = [\n 'index', 'instance',\n];\n\nconst STR_ATTRS = [\n 'description', RESOURCE_ID, 'text', 'class-name', 'package-name'\n];\n\nconst ALL_ATTRS = [\n ...BOOLEAN_ATTRS,\n ...NUMERIC_ATTRS,\n ...STR_ATTRS,\n];\n\nconst ATTRIBUTE_ALIASES = [\n [RESOURCE_ID, ['id']],\n ['description', [\n 'content-description', 'content-desc',\n 'desc', 'accessibility-id',\n ]],\n ['index', ['nth-child']],\n];\n\n/**\n * Convert hyphen separated word to snake case\n *\n * @param {string?} str\n * @returns {string} The hyphen separated word translated to snake case\n */\nfunction toSnakeCase (str) {\n if (!str) {\n return '';\n }\n const tokens = str.split('-').map((str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase());\n const out = tokens.join('');\n return out.charAt(0).toLowerCase() + out.slice(1);\n}\n\n/**\n * Get the boolean from a CSS object. If empty, return true. If not true/false/empty, throw exception\n *\n * @param {import('css-selector-parser').AstAttribute|import('css-selector-parser').AstPseudoClass} css A\n * CSS object that has 'name' and 'value'\n * @returns {string} Either 'true' or 'false'. If value is empty, return 'true'\n */\nfunction requireBoolean (css) {\n const val = _.toLower((css.value ?? css.argument)?.value) || 'true'; // an omitted boolean attribute means 'true' (e.g.: input[checked] means checked is true)\n if (['true', 'false'].includes(val)) {\n return val;\n }\n throw new Error(`'${css.name}' must be true, false or empty. Found '${css.value}'`);\n}\n\n/**\n * Get the canonical form of a CSS attribute name\n *\n * Converts to lowercase and if an attribute name is an alias for something else, return\n * what it is an alias for\n *\n * @param {import('css-selector-parser').AstAttribute|import('css-selector-parser').AstPseudoClass} cssEntity CSS object\n * @returns {string} The canonical attribute name\n */\nfunction requireEntityName (cssEntity) {\n const attrName = cssEntity.name.toLowerCase();\n\n // Check if it's supported and if it is, return it\n if (ALL_ATTRS.includes(attrName)) {\n return attrName.toLowerCase();\n }\n\n // If attrName is an alias for something else, return that\n for (const [officialAttr, aliasAttrs] of ATTRIBUTE_ALIASES) {\n if (aliasAttrs.includes(attrName)) {\n return officialAttr;\n }\n }\n throw new Error(`'${attrName}' is not a valid attribute. ` +\n `Supported attributes are '${ALL_ATTRS.join(', ')}'`);\n}\n\n/**\n * Get a regex that matches a whole word. For the ~= CSS attribute selector.\n *\n * @param {string} word\n * @returns {string} A regex \"word\" matcher\n */\nfunction getWordMatcherRegex (word) {\n return `\\\\b(\\\\w*${_.escapeRegExp(word)}\\\\w*)\\\\b`;\n}\n\n\nclass CssConverter {\n\n constructor (selector, pkg) {\n this.selector = selector;\n this.pkg = pkg;\n }\n\n /**\n * Add `<pkgName>:id/` prefix to beginning of string if it's not there already\n *\n * @param {string} locator The initial locator\n * @returns {string} String with `<pkgName>:id/` prepended (if it wasn't already)\n */\n formatIdLocator (locator) {\n return ID_LOCATOR_PATTERN.test(locator)\n ? locator\n : `${this.pkg || 'android'}:id/${locator}`;\n }\n\n /**\n * Convert a CSS attribute into a UiSelector method call\n *\n * @param {import('css-selector-parser').AstAttribute} cssAttr CSS attribute object\n * @returns {string} CSS attribute parsed as UiSelector\n */\n parseAttr (cssAttr) {\n const attrValue = cssAttr.value?.value;\n if (!_.isString(attrValue) && !_.isEmpty(attrValue)) {\n throw new Error(`'${cssAttr.name}=${attrValue}' is an invalid attribute. ` +\n `Only 'string' and empty attribute types are supported. Found '${attrValue}'`);\n }\n const attrName = requireEntityName(cssAttr);\n const methodName = toSnakeCase(attrName);\n\n // Validate that it's a supported attribute\n if (!STR_ATTRS.includes(attrName) && !BOOLEAN_ATTRS.includes(attrName)) {\n throw new Error(`'${attrName}' is not supported. Supported attributes are ` +\n `'${[...STR_ATTRS, ...BOOLEAN_ATTRS].join(', ')}'`);\n }\n\n // Parse boolean, if it's a boolean attribute\n if (BOOLEAN_ATTRS.includes(attrName)) {\n return `.${methodName}(${requireBoolean(cssAttr)})`;\n }\n\n // Otherwise parse as string\n let value = attrValue || '';\n if (attrName === RESOURCE_ID) {\n value = this.formatIdLocator(value);\n }\n if (value === '') {\n return `.${methodName}Matches(\"\")`;\n }\n\n switch (cssAttr.operator) {\n case '=':\n return `.${methodName}(\"${value}\")`;\n case '*=':\n if (['description', 'text'].includes(attrName)) {\n return `.${methodName}Contains(\"${value}\")`;\n }\n return `.${methodName}Matches(\"${_.escapeRegExp(value)}\")`;\n case '^=':\n if (['description', 'text'].includes(attrName)) {\n return `.${methodName}StartsWith(\"${value}\")`;\n }\n return `.${methodName}Matches(\"^${_.escapeRegExp(value)}\")`;\n case '$=':\n return `.${methodName}Matches(\"${_.escapeRegExp(value)}$\")`;\n case '~=':\n return `.${methodName}Matches(\"${getWordMatcherRegex(value)}\")`;\n default:\n // Unreachable, but adding error in case a new CSS attribute is added.\n throw new Error(`Unsupported CSS attribute operator '${cssAttr.operator}'. ` +\n ` '=', '*=', '^=', '$=' and '~=' are supported.`);\n }\n }\n\n /**\n * Convert a CSS pseudo class to a UiSelector\n *\n * @param {import('css-selector-parser').AstPseudoClass} cssPseudo CSS Pseudo class\n * @returns {string?} Pseudo selector parsed as UiSelector\n */\n parsePseudo (cssPseudo) {\n const argValue = cssPseudo.argument?.value;\n if (!_.isString(argValue) && !_.isEmpty(argValue)) {\n throw new Error(`'${cssPseudo.name}=${argValue}'. ` +\n `Unsupported css pseudo class value: '${argValue}'. Only 'string' type or empty is supported.`);\n }\n\n const pseudoName = requireEntityName(cssPseudo);\n\n if (BOOLEAN_ATTRS.includes(pseudoName)) {\n return `.${toSnakeCase(pseudoName)}(${requireBoolean(cssPseudo)})`;\n }\n\n if (NUMERIC_ATTRS.includes(pseudoName)) {\n return `.${pseudoName}(${argValue})`;\n }\n }\n\n /**\n * Convert a CSS rule to a UiSelector\n * @param {import('css-selector-parser').AstRule} cssRule CSS rule definition\n */\n parseCssRule (cssRule) {\n if (cssRule.combinator && ![' ', '>'].includes(cssRule.combinator)) {\n throw new Error(`'${cssRule.combinator}' is not a supported combinator. ` +\n `Only child combinator (>) and descendant combinator are supported.`);\n }\n\n let uiAutomatorSelector = 'new UiSelector()';\n const tagName = cssRule.tag?.name;\n if (tagName && tagName !== '*') {\n let androidClass = [tagName];\n if (cssRule.classNames) {\n for (const cssClassNames of cssRule.classNames) {\n androidClass.push(cssClassNames);\n }\n uiAutomatorSelector += `.className(\"${androidClass.join('.')}\")`;\n } else {\n uiAutomatorSelector += `.classNameMatches(\"${tagName}\")`;\n }\n } else if (!_.isEmpty(cssRule.classNames)) {\n uiAutomatorSelector += `.classNameMatches(\"${cssRule.classNames.join('\\\\.')}\")`;\n }\n if (!_.isEmpty(cssRule.ids)) {\n uiAutomatorSelector += `.resourceId(\"${this.formatIdLocator(cssRule.ids[0])}\")`;\n }\n if (cssRule.attributes) {\n for (const attr of cssRule.attributes) {\n uiAutomatorSelector += this.parseAttr(attr);\n }\n }\n if (cssRule.pseudoClasses) {\n for (const pseudo of cssRule.pseudoClasses) {\n const sel = this.parsePseudo(pseudo);\n if (sel) {\n uiAutomatorSelector += sel;\n }\n }\n }\n if (cssRule.nestedRule) {\n uiAutomatorSelector += `.childSelector(${this.parseCssRule(cssRule.nestedRule)})`;\n }\n return uiAutomatorSelector;\n }\n\n /**\n * Convert CSS object to UiAutomator2 selector\n * @param {import('css-selector-parser').AstSelector} css CSS object\n * @returns {string} The CSS object parsed as a UiSelector\n */\n parseCssObject (css) {\n if (!_.isEmpty(css.rules)) {\n return this.parseCssRule(css.rules[0]);\n }\n\n throw new Error('No rules could be parsed out of the current selector');\n }\n\n /**\n * Convert a CSS selector to a UiAutomator2 selector\n *\n * @returns {string} The CSS selector converted to a UiSelector\n */\n toUiAutomatorSelector () {\n let cssObj;\n try {\n cssObj = parseCssSelector(this.selector);\n } catch (e) {\n log.debug(e.stack);\n throw new errors.InvalidSelectorError(`Invalid CSS selector '${this.selector}'. Reason: '${e.message}'`);\n }\n try {\n return this.parseCssObject(cssObj);\n } catch (e) {\n log.debug(e.stack);\n throw new errors.InvalidSelectorError(`Unsupported CSS selector '${this.selector}'. Reason: '${e.message}'`);\n }\n }\n}\n\nexport default CssConverter;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"css-converter.js","names":["_cssSelectorParser","require","_lodash","_interopRequireDefault","_driver","_logger","parseCssSelector","createParser","syntax","pseudoClasses","unknown","definitions","Selector","combinators","attributes","operators","ids","classNames","tag","wildcard","substitutes","RESOURCE_ID","ID_LOCATOR_PATTERN","BOOLEAN_ATTRS","NUMERIC_ATTRS","STR_ATTRS","ALL_ATTRS","ATTRIBUTE_ALIASES","toSnakeCase","str","tokens","split","map","charAt","toUpperCase","slice","toLowerCase","out","join","requireBoolean","css","_ref","val","_","toLower","value","argument","includes","Error","name","requireEntityName","cssEntity","attrName","officialAttr","aliasAttrs","getWordMatcherRegex","word","escapeRegExp","CssConverter","constructor","selector","pkg","formatIdLocator","locator","test","parseAttr","cssAttr","_cssAttr$value","attrValue","isString","isEmpty","methodName","operator","parsePseudo","cssPseudo","_cssPseudo$argument","argValue","pseudoName","parseCssRule","cssRule","_cssRule$tag","combinator","uiAutomatorSelector","tagName","androidClass","cssClassNames","push","attr","pseudo","sel","nestedRule","parseCssObject","rules","toUiAutomatorSelector","cssObj","e","log","debug","stack","errors","InvalidSelectorError","message","_default","exports","default"],"sources":["../../lib/css-converter.js"],"sourcesContent":["import { createParser } from 'css-selector-parser';\nimport _ from 'lodash';\nimport { errors } from 'appium/driver';\nimport log from './logger';\n\nconst parseCssSelector = createParser({\n syntax: {\n pseudoClasses: {\n unknown: 'accept',\n definitions: {\n Selector: ['has'],\n }\n },\n combinators: ['>', '+', '~'],\n attributes: {\n operators: ['^=', '$=', '*=', '~=', '=']\n },\n ids: true,\n classNames: true,\n tag: {\n wildcard: true\n },\n },\n substitutes: true\n});\n\nconst RESOURCE_ID = 'resource-id';\nconst ID_LOCATOR_PATTERN = /^[a-zA-Z_][a-zA-Z0-9._]*:id\\/[\\S]+$/;\n\nconst BOOLEAN_ATTRS = [\n 'checkable', 'checked', 'clickable', 'enabled', 'focusable',\n 'focused', 'long-clickable', 'scrollable', 'selected',\n];\n\nconst NUMERIC_ATTRS = [\n 'index', 'instance',\n];\n\nconst STR_ATTRS = [\n 'description', RESOURCE_ID, 'text', 'class-name', 'package-name'\n];\n\nconst ALL_ATTRS = [\n ...BOOLEAN_ATTRS,\n ...NUMERIC_ATTRS,\n ...STR_ATTRS,\n];\n\nconst ATTRIBUTE_ALIASES = [\n [RESOURCE_ID, ['id']],\n ['description', [\n 'content-description', 'content-desc',\n 'desc', 'accessibility-id',\n ]],\n ['index', ['nth-child']],\n];\n\n/**\n * Convert hyphen separated word to snake case\n *\n * @param {string?} str\n * @returns {string} The hyphen separated word translated to snake case\n */\nfunction toSnakeCase (str) {\n if (!str) {\n return '';\n }\n const tokens = str.split('-').map((str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase());\n const out = tokens.join('');\n return out.charAt(0).toLowerCase() + out.slice(1);\n}\n\n/**\n * Get the boolean from a CSS object. If empty, return true. If not true/false/empty, throw exception\n *\n * @param {import('css-selector-parser').AstAttribute|import('css-selector-parser').AstPseudoClass} css A\n * CSS object that has 'name' and 'value'\n * @returns {string} Either 'true' or 'false'. If value is empty, return 'true'\n */\nfunction requireBoolean (css) {\n const val = _.toLower((css.value ?? css.argument)?.value) || 'true'; // an omitted boolean attribute means 'true' (e.g.: input[checked] means checked is true)\n if (['true', 'false'].includes(val)) {\n return val;\n }\n throw new Error(`'${css.name}' must be true, false or empty. Found '${css.value}'`);\n}\n\n/**\n * Get the canonical form of a CSS attribute name\n *\n * Converts to lowercase and if an attribute name is an alias for something else, return\n * what it is an alias for\n *\n * @param {import('css-selector-parser').AstAttribute|import('css-selector-parser').AstPseudoClass} cssEntity CSS object\n * @returns {string} The canonical attribute name\n */\nfunction requireEntityName (cssEntity) {\n const attrName = cssEntity.name.toLowerCase();\n\n // Check if it's supported and if it is, return it\n if (ALL_ATTRS.includes(attrName)) {\n return attrName.toLowerCase();\n }\n\n // If attrName is an alias for something else, return that\n for (const [officialAttr, aliasAttrs] of ATTRIBUTE_ALIASES) {\n if (aliasAttrs.includes(attrName)) {\n return officialAttr;\n }\n }\n throw new Error(`'${attrName}' is not a valid attribute. ` +\n `Supported attributes are '${ALL_ATTRS.join(', ')}'`);\n}\n\n/**\n * Get a regex that matches a whole word. For the ~= CSS attribute selector.\n *\n * @param {string} word\n * @returns {string} A regex \"word\" matcher\n */\nfunction getWordMatcherRegex (word) {\n return `\\\\b(\\\\w*${_.escapeRegExp(word)}\\\\w*)\\\\b`;\n}\n\n\nclass CssConverter {\n\n constructor (selector, pkg) {\n this.selector = selector;\n this.pkg = pkg;\n }\n\n /**\n * Add `<pkgName>:id/` prefix to beginning of string if it's not there already\n *\n * @param {string} locator The initial locator\n * @returns {string} String with `<pkgName>:id/` prepended (if it wasn't already)\n */\n formatIdLocator (locator) {\n return ID_LOCATOR_PATTERN.test(locator)\n ? locator\n : `${this.pkg || 'android'}:id/${locator}`;\n }\n\n /**\n * Convert a CSS attribute into a UiSelector method call\n *\n * @param {import('css-selector-parser').AstAttribute} cssAttr CSS attribute object\n * @returns {string} CSS attribute parsed as UiSelector\n */\n parseAttr (cssAttr) {\n const attrValue = cssAttr.value?.value;\n if (!_.isString(attrValue) && !_.isEmpty(attrValue)) {\n throw new Error(`'${cssAttr.name}=${attrValue}' is an invalid attribute. ` +\n `Only 'string' and empty attribute types are supported. Found '${attrValue}'`);\n }\n const attrName = requireEntityName(cssAttr);\n const methodName = toSnakeCase(attrName);\n\n // Validate that it's a supported attribute\n if (!STR_ATTRS.includes(attrName) && !BOOLEAN_ATTRS.includes(attrName)) {\n throw new Error(`'${attrName}' is not supported. Supported attributes are ` +\n `'${[...STR_ATTRS, ...BOOLEAN_ATTRS].join(', ')}'`);\n }\n\n // Parse boolean, if it's a boolean attribute\n if (BOOLEAN_ATTRS.includes(attrName)) {\n return `.${methodName}(${requireBoolean(cssAttr)})`;\n }\n\n // Otherwise parse as string\n let value = attrValue || '';\n if (attrName === RESOURCE_ID) {\n value = this.formatIdLocator(value);\n }\n if (value === '') {\n return `.${methodName}Matches(\"\")`;\n }\n\n switch (cssAttr.operator) {\n case '=':\n return `.${methodName}(\"${value}\")`;\n case '*=':\n if (['description', 'text'].includes(attrName)) {\n return `.${methodName}Contains(\"${value}\")`;\n }\n return `.${methodName}Matches(\"${_.escapeRegExp(value)}\")`;\n case '^=':\n if (['description', 'text'].includes(attrName)) {\n return `.${methodName}StartsWith(\"${value}\")`;\n }\n return `.${methodName}Matches(\"^${_.escapeRegExp(value)}\")`;\n case '$=':\n return `.${methodName}Matches(\"${_.escapeRegExp(value)}$\")`;\n case '~=':\n return `.${methodName}Matches(\"${getWordMatcherRegex(value)}\")`;\n default:\n // Unreachable, but adding error in case a new CSS attribute is added.\n throw new Error(`Unsupported CSS attribute operator '${cssAttr.operator}'. ` +\n ` '=', '*=', '^=', '$=' and '~=' are supported.`);\n }\n }\n\n /**\n * Convert a CSS pseudo class to a UiSelector\n *\n * @param {import('css-selector-parser').AstPseudoClass} cssPseudo CSS Pseudo class\n * @returns {string?} Pseudo selector parsed as UiSelector\n */\n parsePseudo (cssPseudo) {\n const argValue = cssPseudo.argument?.value;\n if (!_.isString(argValue) && !_.isEmpty(argValue)) {\n throw new Error(`'${cssPseudo.name}=${argValue}'. ` +\n `Unsupported css pseudo class value: '${argValue}'. Only 'string' type or empty is supported.`);\n }\n\n const pseudoName = requireEntityName(cssPseudo);\n\n if (BOOLEAN_ATTRS.includes(pseudoName)) {\n return `.${toSnakeCase(pseudoName)}(${requireBoolean(cssPseudo)})`;\n }\n\n if (NUMERIC_ATTRS.includes(pseudoName)) {\n return `.${pseudoName}(${argValue})`;\n }\n }\n\n /**\n * Convert a CSS rule to a UiSelector\n * @param {import('css-selector-parser').AstRule} cssRule CSS rule definition\n */\n parseCssRule (cssRule) {\n if (cssRule.combinator && ![' ', '>'].includes(cssRule.combinator)) {\n throw new Error(`'${cssRule.combinator}' is not a supported combinator. ` +\n `Only child combinator (>) and descendant combinator are supported.`);\n }\n\n let uiAutomatorSelector = 'new UiSelector()';\n const tagName = cssRule.tag?.name;\n if (tagName && tagName !== '*') {\n let androidClass = [tagName];\n if (cssRule.classNames) {\n for (const cssClassNames of cssRule.classNames) {\n androidClass.push(cssClassNames);\n }\n uiAutomatorSelector += `.className(\"${androidClass.join('.')}\")`;\n } else {\n uiAutomatorSelector += `.classNameMatches(\"${tagName}\")`;\n }\n } else if (!_.isEmpty(cssRule.classNames)) {\n uiAutomatorSelector += `.classNameMatches(\"${cssRule.classNames.join('\\\\.')}\")`;\n }\n if (!_.isEmpty(cssRule.ids)) {\n uiAutomatorSelector += `.resourceId(\"${this.formatIdLocator(cssRule.ids[0])}\")`;\n }\n if (cssRule.attributes) {\n for (const attr of cssRule.attributes) {\n uiAutomatorSelector += this.parseAttr(attr);\n }\n }\n if (cssRule.pseudoClasses) {\n for (const pseudo of cssRule.pseudoClasses) {\n const sel = this.parsePseudo(pseudo);\n if (sel) {\n uiAutomatorSelector += sel;\n }\n }\n }\n if (cssRule.nestedRule) {\n uiAutomatorSelector += `.childSelector(${this.parseCssRule(cssRule.nestedRule)})`;\n }\n return uiAutomatorSelector;\n }\n\n /**\n * Convert CSS object to UiAutomator2 selector\n * @param {import('css-selector-parser').AstSelector} css CSS object\n * @returns {string} The CSS object parsed as a UiSelector\n */\n parseCssObject (css) {\n if (!_.isEmpty(css.rules)) {\n return this.parseCssRule(css.rules[0]);\n }\n\n throw new Error('No rules could be parsed out of the current selector');\n }\n\n /**\n * Convert a CSS selector to a UiAutomator2 selector\n *\n * @returns {string} The CSS selector converted to a UiSelector\n */\n toUiAutomatorSelector () {\n let cssObj;\n try {\n cssObj = parseCssSelector(this.selector);\n } catch (e) {\n log.debug(e.stack);\n throw new errors.InvalidSelectorError(`Invalid CSS selector '${this.selector}'. Reason: '${e.message}'`);\n }\n try {\n return this.parseCssObject(cssObj);\n } catch (e) {\n log.debug(e.stack);\n throw new errors.InvalidSelectorError(`Unsupported CSS selector '${this.selector}'. Reason: '${e.message}'`);\n }\n }\n}\n\nexport default CssConverter;\n"],"mappings":";;;;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAF,sBAAA,CAAAF,OAAA;AAEA,MAAMK,gBAAgB,GAAG,IAAAC,+BAAY,EAAC;EACpCC,MAAM,EAAE;IACNC,aAAa,EAAE;MACbC,OAAO,EAAE,QAAQ;MACjBC,WAAW,EAAE;QACXC,QAAQ,EAAE,CAAC,KAAK;MAClB;IACF,CAAC;IACDC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC5BC,UAAU,EAAE;MACVC,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG;IACzC,CAAC;IACDC,GAAG,EAAE,IAAI;IACTC,UAAU,EAAE,IAAI;IAChBC,GAAG,EAAE;MACHC,QAAQ,EAAE;IACZ;EACF,CAAC;EACDC,WAAW,EAAE;AACf,CAAC,CAAC;AAEF,MAAMC,WAAW,GAAG,aAAa;AACjC,MAAMC,kBAAkB,GAAG,qCAAqC;AAEhE,MAAMC,aAAa,GAAG,CACpB,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAC3D,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,CACtD;AAED,MAAMC,aAAa,GAAG,CACpB,OAAO,EAAE,UAAU,CACpB;AAED,MAAMC,SAAS,GAAG,CAChB,aAAa,EAAEJ,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,CACjE;AAED,MAAMK,SAAS,GAAG,CAChB,GAAGH,aAAa,EAChB,GAAGC,aAAa,EAChB,GAAGC,SAAS,CACb;AAED,MAAME,iBAAiB,GAAG,CACxB,CAACN,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,EACrB,CAAC,aAAa,EAAE,CACd,qBAAqB,EAAE,cAAc,EACrC,MAAM,EAAE,kBAAkB,CAC3B,CAAC,EACF,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CACzB;AAQD,SAASO,WAAWA,CAAEC,GAAG,EAAE;EACzB,IAAI,CAACA,GAAG,EAAE;IACR,OAAO,EAAE;EACX;EACA,MAAMC,MAAM,GAAGD,GAAG,CAACE,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAEH,GAAG,IAAKA,GAAG,CAACI,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,GAAGL,GAAG,CAACM,KAAK,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,CAAC;EACpG,MAAMC,GAAG,GAAGP,MAAM,CAACQ,IAAI,CAAC,EAAE,CAAC;EAC3B,OAAOD,GAAG,CAACJ,MAAM,CAAC,CAAC,CAAC,CAACG,WAAW,CAAC,CAAC,GAAGC,GAAG,CAACF,KAAK,CAAC,CAAC,CAAC;AACnD;AASA,SAASI,cAAcA,CAAEC,GAAG,EAAE;EAAA,IAAAC,IAAA;EAC5B,MAAMC,GAAG,GAAGC,eAAC,CAACC,OAAO,EAAAH,IAAA,GAAED,GAAG,CAACK,KAAK,IAAIL,GAAG,CAACM,QAAQ,cAAAL,IAAA,uBAA1BA,IAAA,CAA6BI,KAAK,CAAC,IAAI,MAAM;EACnE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAACE,QAAQ,CAACL,GAAG,CAAC,EAAE;IACnC,OAAOA,GAAG;EACZ;EACA,MAAM,IAAIM,KAAK,CAAE,IAAGR,GAAG,CAACS,IAAK,0CAAyCT,GAAG,CAACK,KAAM,GAAE,CAAC;AACrF;AAWA,SAASK,iBAAiBA,CAAEC,SAAS,EAAE;EACrC,MAAMC,QAAQ,GAAGD,SAAS,CAACF,IAAI,CAACb,WAAW,CAAC,CAAC;EAG7C,IAAIV,SAAS,CAACqB,QAAQ,CAACK,QAAQ,CAAC,EAAE;IAChC,OAAOA,QAAQ,CAAChB,WAAW,CAAC,CAAC;EAC/B;EAGA,KAAK,MAAM,CAACiB,YAAY,EAAEC,UAAU,CAAC,IAAI3B,iBAAiB,EAAE;IAC1D,IAAI2B,UAAU,CAACP,QAAQ,CAACK,QAAQ,CAAC,EAAE;MACjC,OAAOC,YAAY;IACrB;EACF;EACA,MAAM,IAAIL,KAAK,CAAE,IAAGI,QAAS,8BAA6B,GACvD,6BAA4B1B,SAAS,CAACY,IAAI,CAAC,IAAI,CAAE,GAAE,CAAC;AACzD;AAQA,SAASiB,mBAAmBA,CAAEC,IAAI,EAAE;EAClC,OAAQ,WAAUb,eAAC,CAACc,YAAY,CAACD,IAAI,CAAE,UAAS;AAClD;AAGA,MAAME,YAAY,CAAC;EAEjBC,WAAWA,CAAEC,QAAQ,EAAEC,GAAG,EAAE;IAC1B,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,GAAG,GAAGA,GAAG;EAChB;EAQAC,eAAeA,CAAEC,OAAO,EAAE;IACxB,OAAOzC,kBAAkB,CAAC0C,IAAI,CAACD,OAAO,CAAC,GACnCA,OAAO,GACN,GAAE,IAAI,CAACF,GAAG,IAAI,SAAU,OAAME,OAAQ,EAAC;EAC9C;EAQAE,SAASA,CAAEC,OAAO,EAAE;IAAA,IAAAC,cAAA;IAClB,MAAMC,SAAS,IAAAD,cAAA,GAAGD,OAAO,CAACrB,KAAK,cAAAsB,cAAA,uBAAbA,cAAA,CAAetB,KAAK;IACtC,IAAI,CAACF,eAAC,CAAC0B,QAAQ,CAACD,SAAS,CAAC,IAAI,CAACzB,eAAC,CAAC2B,OAAO,CAACF,SAAS,CAAC,EAAE;MACnD,MAAM,IAAIpB,KAAK,CAAE,IAAGkB,OAAO,CAACjB,IAAK,IAAGmB,SAAU,6BAA4B,GACvE,iEAAgEA,SAAU,GAAE,CAAC;IAClF;IACA,MAAMhB,QAAQ,GAAGF,iBAAiB,CAACgB,OAAO,CAAC;IAC3C,MAAMK,UAAU,GAAG3C,WAAW,CAACwB,QAAQ,CAAC;IAGxC,IAAI,CAAC3B,SAAS,CAACsB,QAAQ,CAACK,QAAQ,CAAC,IAAI,CAAC7B,aAAa,CAACwB,QAAQ,CAACK,QAAQ,CAAC,EAAE;MACtE,MAAM,IAAIJ,KAAK,CAAE,IAAGI,QAAS,+CAA8C,GACxE,IAAG,CAAC,GAAG3B,SAAS,EAAE,GAAGF,aAAa,CAAC,CAACe,IAAI,CAAC,IAAI,CAAE,GAAE,CAAC;IACvD;IAGA,IAAIf,aAAa,CAACwB,QAAQ,CAACK,QAAQ,CAAC,EAAE;MACpC,OAAQ,IAAGmB,UAAW,IAAGhC,cAAc,CAAC2B,OAAO,CAAE,GAAE;IACrD;IAGA,IAAIrB,KAAK,GAAGuB,SAAS,IAAI,EAAE;IAC3B,IAAIhB,QAAQ,KAAK/B,WAAW,EAAE;MAC5BwB,KAAK,GAAG,IAAI,CAACiB,eAAe,CAACjB,KAAK,CAAC;IACrC;IACA,IAAIA,KAAK,KAAK,EAAE,EAAE;MAChB,OAAQ,IAAG0B,UAAW,aAAY;IACpC;IAEA,QAAQL,OAAO,CAACM,QAAQ;MACtB,KAAK,GAAG;QACN,OAAQ,IAAGD,UAAW,KAAI1B,KAAM,IAAG;MACrC,KAAK,IAAI;QACP,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAACE,QAAQ,CAACK,QAAQ,CAAC,EAAE;UAC9C,OAAQ,IAAGmB,UAAW,aAAY1B,KAAM,IAAG;QAC7C;QACA,OAAQ,IAAG0B,UAAW,YAAW5B,eAAC,CAACc,YAAY,CAACZ,KAAK,CAAE,IAAG;MAC5D,KAAK,IAAI;QACP,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAACE,QAAQ,CAACK,QAAQ,CAAC,EAAE;UAC9C,OAAQ,IAAGmB,UAAW,eAAc1B,KAAM,IAAG;QAC/C;QACA,OAAQ,IAAG0B,UAAW,aAAY5B,eAAC,CAACc,YAAY,CAACZ,KAAK,CAAE,IAAG;MAC7D,KAAK,IAAI;QACP,OAAQ,IAAG0B,UAAW,YAAW5B,eAAC,CAACc,YAAY,CAACZ,KAAK,CAAE,KAAI;MAC7D,KAAK,IAAI;QACP,OAAQ,IAAG0B,UAAW,YAAWhB,mBAAmB,CAACV,KAAK,CAAE,IAAG;MACjE;QAEE,MAAM,IAAIG,KAAK,CAAE,uCAAsCkB,OAAO,CAACM,QAAS,KAAI,GACzE,gDAA+C,CAAC;IACvD;EACF;EAQAC,WAAWA,CAAEC,SAAS,EAAE;IAAA,IAAAC,mBAAA;IACtB,MAAMC,QAAQ,IAAAD,mBAAA,GAAGD,SAAS,CAAC5B,QAAQ,cAAA6B,mBAAA,uBAAlBA,mBAAA,CAAoB9B,KAAK;IAC1C,IAAI,CAACF,eAAC,CAAC0B,QAAQ,CAACO,QAAQ,CAAC,IAAI,CAACjC,eAAC,CAAC2B,OAAO,CAACM,QAAQ,CAAC,EAAE;MACjD,MAAM,IAAI5B,KAAK,CAAE,IAAG0B,SAAS,CAACzB,IAAK,IAAG2B,QAAS,KAAI,GAChD,wCAAuCA,QAAS,8CAA6C,CAAC;IACnG;IAEA,MAAMC,UAAU,GAAG3B,iBAAiB,CAACwB,SAAS,CAAC;IAE/C,IAAInD,aAAa,CAACwB,QAAQ,CAAC8B,UAAU,CAAC,EAAE;MACtC,OAAQ,IAAGjD,WAAW,CAACiD,UAAU,CAAE,IAAGtC,cAAc,CAACmC,SAAS,CAAE,GAAE;IACpE;IAEA,IAAIlD,aAAa,CAACuB,QAAQ,CAAC8B,UAAU,CAAC,EAAE;MACtC,OAAQ,IAAGA,UAAW,IAAGD,QAAS,GAAE;IACtC;EACF;EAMAE,YAAYA,CAAEC,OAAO,EAAE;IAAA,IAAAC,YAAA;IACrB,IAAID,OAAO,CAACE,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAClC,QAAQ,CAACgC,OAAO,CAACE,UAAU,CAAC,EAAE;MAClE,MAAM,IAAIjC,KAAK,CAAE,IAAG+B,OAAO,CAACE,UAAW,mCAAkC,GACtE,oEAAmE,CAAC;IACzE;IAEA,IAAIC,mBAAmB,GAAG,kBAAkB;IAC5C,MAAMC,OAAO,IAAAH,YAAA,GAAGD,OAAO,CAAC7D,GAAG,cAAA8D,YAAA,uBAAXA,YAAA,CAAa/B,IAAI;IACjC,IAAIkC,OAAO,IAAIA,OAAO,KAAK,GAAG,EAAE;MAC9B,IAAIC,YAAY,GAAG,CAACD,OAAO,CAAC;MAC5B,IAAIJ,OAAO,CAAC9D,UAAU,EAAE;QACtB,KAAK,MAAMoE,aAAa,IAAIN,OAAO,CAAC9D,UAAU,EAAE;UAC9CmE,YAAY,CAACE,IAAI,CAACD,aAAa,CAAC;QAClC;QACAH,mBAAmB,IAAK,eAAcE,YAAY,CAAC9C,IAAI,CAAC,GAAG,CAAE,IAAG;MAClE,CAAC,MAAM;QACL4C,mBAAmB,IAAK,sBAAqBC,OAAQ,IAAG;MAC1D;IACF,CAAC,MAAM,IAAI,CAACxC,eAAC,CAAC2B,OAAO,CAACS,OAAO,CAAC9D,UAAU,CAAC,EAAE;MACzCiE,mBAAmB,IAAK,sBAAqBH,OAAO,CAAC9D,UAAU,CAACqB,IAAI,CAAC,KAAK,CAAE,IAAG;IACjF;IACA,IAAI,CAACK,eAAC,CAAC2B,OAAO,CAACS,OAAO,CAAC/D,GAAG,CAAC,EAAE;MAC3BkE,mBAAmB,IAAK,gBAAe,IAAI,CAACpB,eAAe,CAACiB,OAAO,CAAC/D,GAAG,CAAC,CAAC,CAAC,CAAE,IAAG;IACjF;IACA,IAAI+D,OAAO,CAACjE,UAAU,EAAE;MACtB,KAAK,MAAMyE,IAAI,IAAIR,OAAO,CAACjE,UAAU,EAAE;QACrCoE,mBAAmB,IAAI,IAAI,CAACjB,SAAS,CAACsB,IAAI,CAAC;MAC7C;IACF;IACA,IAAIR,OAAO,CAACtE,aAAa,EAAE;MACzB,KAAK,MAAM+E,MAAM,IAAIT,OAAO,CAACtE,aAAa,EAAE;QAC1C,MAAMgF,GAAG,GAAG,IAAI,CAAChB,WAAW,CAACe,MAAM,CAAC;QACpC,IAAIC,GAAG,EAAE;UACPP,mBAAmB,IAAIO,GAAG;QAC5B;MACF;IACF;IACA,IAAIV,OAAO,CAACW,UAAU,EAAE;MACtBR,mBAAmB,IAAK,kBAAiB,IAAI,CAACJ,YAAY,CAACC,OAAO,CAACW,UAAU,CAAE,GAAE;IACnF;IACA,OAAOR,mBAAmB;EAC5B;EAOAS,cAAcA,CAAEnD,GAAG,EAAE;IACnB,IAAI,CAACG,eAAC,CAAC2B,OAAO,CAAC9B,GAAG,CAACoD,KAAK,CAAC,EAAE;MACzB,OAAO,IAAI,CAACd,YAAY,CAACtC,GAAG,CAACoD,KAAK,CAAC,CAAC,CAAC,CAAC;IACxC;IAEA,MAAM,IAAI5C,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAOA6C,qBAAqBA,CAAA,EAAI;IACvB,IAAIC,MAAM;IACV,IAAI;MACFA,MAAM,GAAGxF,gBAAgB,CAAC,IAAI,CAACsD,QAAQ,CAAC;IAC1C,CAAC,CAAC,OAAOmC,CAAC,EAAE;MACVC,eAAG,CAACC,KAAK,CAACF,CAAC,CAACG,KAAK,CAAC;MAClB,MAAM,IAAIC,cAAM,CAACC,oBAAoB,CAAE,yBAAwB,IAAI,CAACxC,QAAS,eAAcmC,CAAC,CAACM,OAAQ,GAAE,CAAC;IAC1G;IACA,IAAI;MACF,OAAO,IAAI,CAACV,cAAc,CAACG,MAAM,CAAC;IACpC,CAAC,CAAC,OAAOC,CAAC,EAAE;MACVC,eAAG,CAACC,KAAK,CAACF,CAAC,CAACG,KAAK,CAAC;MAClB,MAAM,IAAIC,cAAM,CAACC,oBAAoB,CAAE,6BAA4B,IAAI,CAACxC,QAAS,eAAcmC,CAAC,CAACM,OAAQ,GAAE,CAAC;IAC9G;EACF;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc9C,YAAY"}
|
|
@@ -67,6 +67,5 @@ let uiautomatorCapConstraints = {
|
|
|
67
67
|
};
|
|
68
68
|
let desiredCapConstraints = {};
|
|
69
69
|
Object.assign(desiredCapConstraints, uiautomatorCapConstraints, _appiumAndroidDriver.commonCapConstraints);
|
|
70
|
-
var _default = desiredCapConstraints;
|
|
71
|
-
|
|
72
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXBwaXVtQW5kcm9pZERyaXZlciIsInJlcXVpcmUiLCJ1aWF1dG9tYXRvckNhcENvbnN0cmFpbnRzIiwiYXBwIiwiaXNTdHJpbmciLCJhdXRvbWF0aW9uTmFtZSIsImJyb3dzZXJOYW1lIiwibGF1bmNoVGltZW91dCIsImlzTnVtYmVyIiwic2tpcFVubG9jayIsImlzQm9vbGVhbiIsInVpYXV0b21hdG9yMlNlcnZlckxhdW5jaFRpbWVvdXQiLCJ1aWF1dG9tYXRvcjJTZXJ2ZXJJbnN0YWxsVGltZW91dCIsInVpYXV0b21hdG9yMlNlcnZlclJlYWRUaW1lb3V0IiwiZGlzYWJsZVdpbmRvd0FuaW1hdGlvbiIsInN5c3RlbVBvcnQiLCJtanBlZ1NlcnZlclBvcnQiLCJtanBlZ1NjcmVlbnNob3RVcmwiLCJza2lwU2VydmVySW5zdGFsbGF0aW9uIiwiYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50IiwidXNlclByb2ZpbGUiLCJhcHBXYWl0Rm9yTGF1bmNoIiwiZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UiLCJmb3JjZUFwcExhdW5jaCIsInNob3VsZFRlcm1pbmF0ZUFwcCIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsIk9iamVjdCIsImFzc2lnbiIsImNvbW1vbkNhcENvbnN0cmFpbnRzIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9kZXNpcmVkLWNhcHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tbW9uQ2FwQ29uc3RyYWludHMgfSBmcm9tICdhcHBpdW0tYW5kcm9pZC1kcml2ZXInO1xuXG5sZXQgdWlhdXRvbWF0b3JDYXBDb25zdHJhaW50cyA9IHtcbiAgYXBwOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXV0b21hdGlvbk5hbWU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBicm93c2VyTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGxhdW5jaFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBza2lwVW5sb2NrOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVpYXV0b21hdG9yMlNlcnZlckxhdW5jaFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICB1aWF1dG9tYXRvcjJTZXJ2ZXJJbnN0YWxsVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHVpYXV0b21hdG9yMlNlcnZlclJlYWRUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgZGlzYWJsZVdpbmRvd0FuaW1hdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzeXN0ZW1Qb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgbWpwZWdTZXJ2ZXJQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgbWpwZWdTY3JlZW5zaG90VXJsOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2tpcFNlcnZlckluc3RhbGxhdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB1c2VyUHJvZmlsZToge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGFwcFdhaXRGb3JMYXVuY2g6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2U6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZm9yY2VBcHBMYXVuY2g6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2hvdWxkVGVybWluYXRlQXBwOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH1cbn07XG5cbmxldCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7fTtcbk9iamVjdC5hc3NpZ24oXG4gIGRlc2lyZWRDYXBDb25zdHJhaW50cyxcbiAgdWlhdXRvbWF0b3JDYXBDb25zdHJhaW50cyxcbiAgY29tbW9uQ2FwQ29uc3RyYWludHNcbik7XG5cbmV4cG9ydCBkZWZhdWx0IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLG9CQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFJQyx5QkFBeUIsR0FBRztFQUM5QkMsR0FBRyxFQUFFO0lBQ0hDLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREMsY0FBYyxFQUFFO0lBQ2RELFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREUsV0FBVyxFQUFFO0lBQ1hGLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREcsYUFBYSxFQUFFO0lBQ2JDLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREMsVUFBVSxFQUFFO0lBQ1ZDLFNBQVMsRUFBRTtFQUNiLENBQUM7RUFDREMsK0JBQStCLEVBQUU7SUFDL0JILFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREksZ0NBQWdDLEVBQUU7SUFDaENKLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREssNkJBQTZCLEVBQUU7SUFDN0JMLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRE0sc0JBQXNCLEVBQUU7SUFDdEJKLFNBQVMsRUFBRTtFQUNiLENBQUM7RUFDREssVUFBVSxFQUFFO0lBQ1ZQLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRFEsZUFBZSxFQUFFO0lBQ2ZSLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRFMsa0JBQWtCLEVBQUU7SUFDbEJiLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRGMsc0JBQXNCLEVBQUU7SUFDdEJSLFNBQVMsRUFBRTtFQUNiLENBQUM7RUFDRFMsd0JBQXdCLEVBQUU7SUFDeEJmLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRGdCLFdBQVcsRUFBRTtJQUNYWixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RhLGdCQUFnQixFQUFFO0lBQ2hCWCxTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RZLG1DQUFtQyxFQUFFO0lBQ25DWixTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RhLGNBQWMsRUFBRTtJQUNkYixTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RjLGtCQUFrQixFQUFFO0lBQ2xCZCxTQUFTLEVBQUU7RUFDYjtBQUNGLENBQUM7QUFFRCxJQUFJZSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7QUFDOUJDLE1BQU0sQ0FBQ0MsTUFBTSxDQUNYRixxQkFBcUIsRUFDckJ2Qix5QkFBeUIsRUFDekIwQix5Q0FDRixDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUVhSixxQkFBcUI7QUFBQUssT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUEifQ==
|
|
70
|
+
var _default = exports.default = desiredCapConstraints;
|
|
71
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXBwaXVtQW5kcm9pZERyaXZlciIsInJlcXVpcmUiLCJ1aWF1dG9tYXRvckNhcENvbnN0cmFpbnRzIiwiYXBwIiwiaXNTdHJpbmciLCJhdXRvbWF0aW9uTmFtZSIsImJyb3dzZXJOYW1lIiwibGF1bmNoVGltZW91dCIsImlzTnVtYmVyIiwic2tpcFVubG9jayIsImlzQm9vbGVhbiIsInVpYXV0b21hdG9yMlNlcnZlckxhdW5jaFRpbWVvdXQiLCJ1aWF1dG9tYXRvcjJTZXJ2ZXJJbnN0YWxsVGltZW91dCIsInVpYXV0b21hdG9yMlNlcnZlclJlYWRUaW1lb3V0IiwiZGlzYWJsZVdpbmRvd0FuaW1hdGlvbiIsInN5c3RlbVBvcnQiLCJtanBlZ1NlcnZlclBvcnQiLCJtanBlZ1NjcmVlbnNob3RVcmwiLCJza2lwU2VydmVySW5zdGFsbGF0aW9uIiwiYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50IiwidXNlclByb2ZpbGUiLCJhcHBXYWl0Rm9yTGF1bmNoIiwiZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UiLCJmb3JjZUFwcExhdW5jaCIsInNob3VsZFRlcm1pbmF0ZUFwcCIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsIk9iamVjdCIsImFzc2lnbiIsImNvbW1vbkNhcENvbnN0cmFpbnRzIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9kZXNpcmVkLWNhcHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tbW9uQ2FwQ29uc3RyYWludHMgfSBmcm9tICdhcHBpdW0tYW5kcm9pZC1kcml2ZXInO1xuXG5sZXQgdWlhdXRvbWF0b3JDYXBDb25zdHJhaW50cyA9IHtcbiAgYXBwOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXV0b21hdGlvbk5hbWU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBicm93c2VyTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGxhdW5jaFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBza2lwVW5sb2NrOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVpYXV0b21hdG9yMlNlcnZlckxhdW5jaFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICB1aWF1dG9tYXRvcjJTZXJ2ZXJJbnN0YWxsVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHVpYXV0b21hdG9yMlNlcnZlclJlYWRUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgZGlzYWJsZVdpbmRvd0FuaW1hdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzeXN0ZW1Qb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgbWpwZWdTZXJ2ZXJQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgbWpwZWdTY3JlZW5zaG90VXJsOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2tpcFNlcnZlckluc3RhbGxhdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB1c2VyUHJvZmlsZToge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGFwcFdhaXRGb3JMYXVuY2g6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2U6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZm9yY2VBcHBMYXVuY2g6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2hvdWxkVGVybWluYXRlQXBwOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH1cbn07XG5cbmxldCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7fTtcbk9iamVjdC5hc3NpZ24oXG4gIGRlc2lyZWRDYXBDb25zdHJhaW50cyxcbiAgdWlhdXRvbWF0b3JDYXBDb25zdHJhaW50cyxcbiAgY29tbW9uQ2FwQ29uc3RyYWludHNcbik7XG5cbmV4cG9ydCBkZWZhdWx0IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLG9CQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFJQyx5QkFBeUIsR0FBRztFQUM5QkMsR0FBRyxFQUFFO0lBQ0hDLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREMsY0FBYyxFQUFFO0lBQ2RELFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREUsV0FBVyxFQUFFO0lBQ1hGLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREcsYUFBYSxFQUFFO0lBQ2JDLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREMsVUFBVSxFQUFFO0lBQ1ZDLFNBQVMsRUFBRTtFQUNiLENBQUM7RUFDREMsK0JBQStCLEVBQUU7SUFDL0JILFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREksZ0NBQWdDLEVBQUU7SUFDaENKLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREssNkJBQTZCLEVBQUU7SUFDN0JMLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRE0sc0JBQXNCLEVBQUU7SUFDdEJKLFNBQVMsRUFBRTtFQUNiLENBQUM7RUFDREssVUFBVSxFQUFFO0lBQ1ZQLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRFEsZUFBZSxFQUFFO0lBQ2ZSLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRFMsa0JBQWtCLEVBQUU7SUFDbEJiLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRGMsc0JBQXNCLEVBQUU7SUFDdEJSLFNBQVMsRUFBRTtFQUNiLENBQUM7RUFDRFMsd0JBQXdCLEVBQUU7SUFDeEJmLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRGdCLFdBQVcsRUFBRTtJQUNYWixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RhLGdCQUFnQixFQUFFO0lBQ2hCWCxTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RZLG1DQUFtQyxFQUFFO0lBQ25DWixTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RhLGNBQWMsRUFBRTtJQUNkYixTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RjLGtCQUFrQixFQUFFO0lBQ2xCZCxTQUFTLEVBQUU7RUFDYjtBQUNGLENBQUM7QUFFRCxJQUFJZSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7QUFDOUJDLE1BQU0sQ0FBQ0MsTUFBTSxDQUNYRixxQkFBcUIsRUFDckJ2Qix5QkFBeUIsRUFDekIwQix5Q0FDRixDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FFYU4scUJBQXFCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"desired-caps.js","names":["_appiumAndroidDriver","require","uiautomatorCapConstraints","app","isString","automationName","browserName","launchTimeout","isNumber","skipUnlock","isBoolean","uiautomator2ServerLaunchTimeout","uiautomator2ServerInstallTimeout","uiautomator2ServerReadTimeout","disableWindowAnimation","systemPort","mjpegServerPort","mjpegScreenshotUrl","skipServerInstallation","androidCoverageEndIntent","userProfile","appWaitForLaunch","disableSuppressAccessibilityService","forceAppLaunch","shouldTerminateApp","desiredCapConstraints","Object","assign","commonCapConstraints","_default","exports","default"],"sources":["../../lib/desired-caps.js"],"sourcesContent":["import { commonCapConstraints } from 'appium-android-driver';\n\nlet uiautomatorCapConstraints = {\n app: {\n isString: true\n },\n automationName: {\n isString: true\n },\n browserName: {\n isString: true\n },\n launchTimeout: {\n isNumber: true\n },\n skipUnlock: {\n isBoolean: true\n },\n uiautomator2ServerLaunchTimeout: {\n isNumber: true\n },\n uiautomator2ServerInstallTimeout: {\n isNumber: true\n },\n uiautomator2ServerReadTimeout: {\n isNumber: true\n },\n disableWindowAnimation: {\n isBoolean: true\n },\n systemPort: {\n isNumber: true\n },\n mjpegServerPort: {\n isNumber: true\n },\n mjpegScreenshotUrl: {\n isString: true\n },\n skipServerInstallation: {\n isBoolean: true\n },\n androidCoverageEndIntent: {\n isString: true\n },\n userProfile: {\n isNumber: true\n },\n appWaitForLaunch: {\n isBoolean: true\n },\n disableSuppressAccessibilityService: {\n isBoolean: true\n },\n forceAppLaunch: {\n isBoolean: true\n },\n shouldTerminateApp: {\n isBoolean: true\n }\n};\n\nlet desiredCapConstraints = {};\nObject.assign(\n desiredCapConstraints,\n uiautomatorCapConstraints,\n commonCapConstraints\n);\n\nexport default desiredCapConstraints;\n"],"mappings":";;;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AAEA,IAAIC,yBAAyB,GAAG;EAC9BC,GAAG,EAAE;IACHC,QAAQ,EAAE;EACZ,CAAC;EACDC,cAAc,EAAE;IACdD,QAAQ,EAAE;EACZ,CAAC;EACDE,WAAW,EAAE;IACXF,QAAQ,EAAE;EACZ,CAAC;EACDG,aAAa,EAAE;IACbC,QAAQ,EAAE;EACZ,CAAC;EACDC,UAAU,EAAE;IACVC,SAAS,EAAE;EACb,CAAC;EACDC,+BAA+B,EAAE;IAC/BH,QAAQ,EAAE;EACZ,CAAC;EACDI,gCAAgC,EAAE;IAChCJ,QAAQ,EAAE;EACZ,CAAC;EACDK,6BAA6B,EAAE;IAC7BL,QAAQ,EAAE;EACZ,CAAC;EACDM,sBAAsB,EAAE;IACtBJ,SAAS,EAAE;EACb,CAAC;EACDK,UAAU,EAAE;IACVP,QAAQ,EAAE;EACZ,CAAC;EACDQ,eAAe,EAAE;IACfR,QAAQ,EAAE;EACZ,CAAC;EACDS,kBAAkB,EAAE;IAClBb,QAAQ,EAAE;EACZ,CAAC;EACDc,sBAAsB,EAAE;IACtBR,SAAS,EAAE;EACb,CAAC;EACDS,wBAAwB,EAAE;IACxBf,QAAQ,EAAE;EACZ,CAAC;EACDgB,WAAW,EAAE;IACXZ,QAAQ,EAAE;EACZ,CAAC;EACDa,gBAAgB,EAAE;IAChBX,SAAS,EAAE;EACb,CAAC;EACDY,mCAAmC,EAAE;IACnCZ,SAAS,EAAE;EACb,CAAC;EACDa,cAAc,EAAE;IACdb,SAAS,EAAE;EACb,CAAC;EACDc,kBAAkB,EAAE;IAClBd,SAAS,EAAE;EACb;AACF,CAAC;AAED,IAAIe,qBAAqB,GAAG,CAAC,CAAC;AAC9BC,MAAM,CAACC,MAAM,CACXF,qBAAqB,EACrBvB,yBAAyB,EACzB0B,yCACF,CAAC;AAAC,IAAAC,QAAA,
|
|
1
|
+
{"version":3,"file":"desired-caps.js","names":["_appiumAndroidDriver","require","uiautomatorCapConstraints","app","isString","automationName","browserName","launchTimeout","isNumber","skipUnlock","isBoolean","uiautomator2ServerLaunchTimeout","uiautomator2ServerInstallTimeout","uiautomator2ServerReadTimeout","disableWindowAnimation","systemPort","mjpegServerPort","mjpegScreenshotUrl","skipServerInstallation","androidCoverageEndIntent","userProfile","appWaitForLaunch","disableSuppressAccessibilityService","forceAppLaunch","shouldTerminateApp","desiredCapConstraints","Object","assign","commonCapConstraints","_default","exports","default"],"sources":["../../lib/desired-caps.js"],"sourcesContent":["import { commonCapConstraints } from 'appium-android-driver';\n\nlet uiautomatorCapConstraints = {\n app: {\n isString: true\n },\n automationName: {\n isString: true\n },\n browserName: {\n isString: true\n },\n launchTimeout: {\n isNumber: true\n },\n skipUnlock: {\n isBoolean: true\n },\n uiautomator2ServerLaunchTimeout: {\n isNumber: true\n },\n uiautomator2ServerInstallTimeout: {\n isNumber: true\n },\n uiautomator2ServerReadTimeout: {\n isNumber: true\n },\n disableWindowAnimation: {\n isBoolean: true\n },\n systemPort: {\n isNumber: true\n },\n mjpegServerPort: {\n isNumber: true\n },\n mjpegScreenshotUrl: {\n isString: true\n },\n skipServerInstallation: {\n isBoolean: true\n },\n androidCoverageEndIntent: {\n isString: true\n },\n userProfile: {\n isNumber: true\n },\n appWaitForLaunch: {\n isBoolean: true\n },\n disableSuppressAccessibilityService: {\n isBoolean: true\n },\n forceAppLaunch: {\n isBoolean: true\n },\n shouldTerminateApp: {\n isBoolean: true\n }\n};\n\nlet desiredCapConstraints = {};\nObject.assign(\n desiredCapConstraints,\n uiautomatorCapConstraints,\n commonCapConstraints\n);\n\nexport default desiredCapConstraints;\n"],"mappings":";;;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AAEA,IAAIC,yBAAyB,GAAG;EAC9BC,GAAG,EAAE;IACHC,QAAQ,EAAE;EACZ,CAAC;EACDC,cAAc,EAAE;IACdD,QAAQ,EAAE;EACZ,CAAC;EACDE,WAAW,EAAE;IACXF,QAAQ,EAAE;EACZ,CAAC;EACDG,aAAa,EAAE;IACbC,QAAQ,EAAE;EACZ,CAAC;EACDC,UAAU,EAAE;IACVC,SAAS,EAAE;EACb,CAAC;EACDC,+BAA+B,EAAE;IAC/BH,QAAQ,EAAE;EACZ,CAAC;EACDI,gCAAgC,EAAE;IAChCJ,QAAQ,EAAE;EACZ,CAAC;EACDK,6BAA6B,EAAE;IAC7BL,QAAQ,EAAE;EACZ,CAAC;EACDM,sBAAsB,EAAE;IACtBJ,SAAS,EAAE;EACb,CAAC;EACDK,UAAU,EAAE;IACVP,QAAQ,EAAE;EACZ,CAAC;EACDQ,eAAe,EAAE;IACfR,QAAQ,EAAE;EACZ,CAAC;EACDS,kBAAkB,EAAE;IAClBb,QAAQ,EAAE;EACZ,CAAC;EACDc,sBAAsB,EAAE;IACtBR,SAAS,EAAE;EACb,CAAC;EACDS,wBAAwB,EAAE;IACxBf,QAAQ,EAAE;EACZ,CAAC;EACDgB,WAAW,EAAE;IACXZ,QAAQ,EAAE;EACZ,CAAC;EACDa,gBAAgB,EAAE;IAChBX,SAAS,EAAE;EACb,CAAC;EACDY,mCAAmC,EAAE;IACnCZ,SAAS,EAAE;EACb,CAAC;EACDa,cAAc,EAAE;IACdb,SAAS,EAAE;EACb,CAAC;EACDc,kBAAkB,EAAE;IAClBd,SAAS,EAAE;EACb;AACF,CAAC;AAED,IAAIe,qBAAqB,GAAG,CAAC,CAAC;AAC9BC,MAAM,CAACC,MAAM,CACXF,qBAAqB,EACrBvB,yBAAyB,EACzB0B,yCACF,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaN,qBAAqB"}
|