appium-chromedriver 5.2.5 → 5.2.7
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 +3 -0
- package/build/lib/chromedriver.js +9 -9
- package/build/lib/chromedriver.js.map +1 -1
- package/build/lib/install.js +2 -2
- package/build/lib/install.js.map +1 -1
- package/build/lib/protocol-helpers.js +3 -3
- package/build/lib/protocol-helpers.js.map +1 -1
- package/build/lib/storage-client.js +2 -2
- package/build/lib/storage-client.js.map +1 -1
- package/build/lib/utils.js +4 -23
- package/build/lib/utils.js.map +1 -1
- package/lib/chromedriver.js +2 -2
- package/lib/install.js +1 -1
- package/lib/protocol-helpers.js +1 -1
- package/lib/storage-client.js +1 -1
- package/lib/utils.js +2 -22
- package/package.json +6 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-client.js","names":["TIMEOUT_MS","MAX_PARALLEL_DOWNLOADS","log","logger","getLogger","isCrcOk","src","checksum","md5","fs","hash","_","toLower","findChildNode","parent","childName","text","hasChildNodes","childNodeIdx","childNodes","length","childNode","localName","childText","extractNodeText","node","firstChild","util","hasValue","nodeValue","ChromedriverStorageClient","constructor","args","chromedriverDir","getChromedriverDir","timeout","mapping","parseNotes","content","result","versionMatch","exec","version","minBrowserVersionMatch","minBrowserVersion","retrieveAdditionalDriverInfo","driverKey","notesUrl","infoDict","notes","retrieveData","accept","debug","parseStorageXml","doc","shouldParseNotes","driverNodes","xpath","select","isEmpty","promises","driverNode","key","includes","etag","cdInfo","url","CD_CDN","trim","first","split","notesPath","isNotesPresent","reduce","acc","info","push","B","all","size","retrieveMapping","xml","DOMParser","parseFromString","cloneDeep","unzipDriver","dst","tmpRoot","tempDir","openDir","zip","extractAllTo","chromedriverPath","walkDir","itemPath","isDirectory","path","parse","name","Error","basename","mv","mkdirp","rimraf","selectMatchingDrivers","osInfo","opts","versions","driversToSync","keys","filter","cdName","pluralize","isNaN","minBrowserVersionInt","parseInt","closestMatchedVersionNumber","currentMinBrowserVersion","uniq","map","arch","hardwareName","X64","some","X86","OS","mac","M1_ARCH_SUFFIX","platformRe","RegExp","test","retrieveDriver","index","archivesRoot","isStrict","archivePath","resolve","net","downloadFile","isMetered","e","msg","message","error","fileName","system","isWindows","targetPath","chmod","syncDrivers","getOsInfo","JSON","stringify","synchronizedDrivers","idx","entries"],"sources":["../../lib/storage-client.js"],"sourcesContent":["import {\n getChromedriverDir, CD_CDN, retrieveData, getOsInfo,\n OS, X64, X86, M1_ARCH_SUFFIX,\n} from './utils';\nimport _ from 'lodash';\nimport xpath from 'xpath';\nimport { DOMParser } from '@xmldom/xmldom';\nimport B from 'bluebird';\nimport path from 'path';\nimport { system, fs, logger, tempDir, zip, util, net } from 'appium/support';\n\n\nconst TIMEOUT_MS = 15000;\nconst MAX_PARALLEL_DOWNLOADS = 5;\n\nconst log = logger.getLogger('ChromedriverStorageClient');\n\n\nasync function isCrcOk (src, checksum) {\n const md5 = await fs.hash(src, 'md5');\n return _.toLower(md5) === _.toLower(checksum);\n}\n\nfunction findChildNode (parent, childName = null, text = null) {\n if (!childName && !text) {\n return null;\n }\n if (!parent.hasChildNodes()) {\n return null;\n }\n\n for (let childNodeIdx = 0; childNodeIdx < parent.childNodes.length; childNodeIdx++) {\n const childNode = parent.childNodes[childNodeIdx];\n if (childName && !text && childName === childNode.localName) {\n return childNode;\n }\n if (text) {\n const childText = extractNodeText(childNode);\n if (!childText) {\n continue;\n }\n if (childName && childName === childNode.localName && text === childText) {\n return childNode;\n }\n if (!childName && text === childText) {\n return childNode;\n }\n }\n }\n return null;\n}\n\nfunction extractNodeText (node) {\n return (!node || !node.firstChild || !util.hasValue(node.firstChild.nodeValue))\n ? null\n : node.firstChild.nodeValue;\n}\n\n\nclass ChromedriverStorageClient {\n constructor (args = {}) {\n const {\n chromedriverDir = getChromedriverDir(),\n timeout = TIMEOUT_MS,\n } = args;\n this.chromedriverDir = chromedriverDir;\n this.timeout = timeout;\n this.mapping = {};\n }\n\n /**\n * @typedef {Object} AdditionalDriverDetails\n * @property {?string} version - Chromedriver version\n * or `null` if it cannot be found\n * @property {?string} minBrowserVersion - The minimum browser version\n * supported by chromedriver or `null` if it cannot be found\n */\n\n /**\n * Gets additional chromedriver details from chromedriver\n * release notes\n *\n * @param {string} content - Release notes of the corresponding chromedriver\n * @returns {AdditionalDriverDetails}\n */\n parseNotes (content) {\n const result = {};\n const versionMatch = /^\\s*[-]+ChromeDriver[\\D]+([\\d.]+)/im.exec(content);\n if (versionMatch) {\n result.version = versionMatch[1];\n }\n const minBrowserVersionMatch = /^\\s*Supports Chrome[\\D]+(\\d+)/im.exec(content);\n if (minBrowserVersionMatch) {\n result.minBrowserVersion = minBrowserVersionMatch[1];\n }\n return result;\n }\n\n /**\n * Downloads chromedriver release notes and puts them\n * into the dictionary argument\n *\n * @param {string} driverKey - Driver version plus archive name\n * @param {string} notesUrl - The URL of chromedriver notes\n * @param {Object} infoDict - The dictionary containing driver info.\n * The method call mutates by merging `AdditionalDriverDetails`\n * @throws {Error} if the release notes cannot be downloaded\n */\n async retrieveAdditionalDriverInfo (driverKey, notesUrl, infoDict) {\n const notes = await retrieveData(notesUrl, {\n 'user-agent': 'appium',\n accept: '*/*',\n }, { timeout: this.timeout });\n const { minBrowserVersion } = this.parseNotes(notes);\n if (!minBrowserVersion) {\n log.debug(`The driver '${driverKey}' does not contain valid release notes at ${notesUrl}. ` +\n `Skipping it`);\n return;\n }\n infoDict.minBrowserVersion = minBrowserVersion;\n }\n\n /**\n * Parses chromedriver storage XML and stores\n * the parsed results into `this.mapping`\n *\n * @param {DOMDocument} doc - The DOM representation\n * of the chromedriver storage XML\n * @param {boolean} shouldParseNotes [true] - If set to `true`\n * then additional drivers information is going to be parsed\n * and assigned to `this.mapping`\n */\n async parseStorageXml (doc, shouldParseNotes = true) {\n const driverNodes = xpath.select(`//*[local-name(.)='Contents']`, doc);\n log.debug(`Parsed ${driverNodes.length} entries from storage XML`);\n if (_.isEmpty(driverNodes)) {\n return;\n }\n\n const promises = [];\n for (const driverNode of driverNodes) {\n const key = extractNodeText(findChildNode(driverNode, 'Key'));\n if (!_.includes(key, '/chromedriver_')) {\n continue;\n }\n\n const etag = extractNodeText(findChildNode(driverNode, 'ETag'));\n if (!etag) {\n log.debug(`The entry '${key}' does not contain the checksum. Skipping it`);\n continue;\n }\n\n const cdInfo = {\n url: `${CD_CDN}/${key}`,\n etag: _.trim(etag, '\"'),\n version: _.first(key.split('/')),\n };\n this.mapping[key] = cdInfo;\n\n const notesPath = `${cdInfo.version}/notes.txt`;\n const isNotesPresent = !!driverNodes\n .reduce((acc, node) => acc || findChildNode(node, 'Key', notesPath), false);\n if (!isNotesPresent) {\n cdInfo.minBrowserVersion = null;\n if (shouldParseNotes) {\n log.info(`The entry '${key}' does not contain any notes. Skipping it`);\n }\n continue;\n } else if (!shouldParseNotes) {\n continue;\n }\n\n promises.push(this.retrieveAdditionalDriverInfo(key, `${CD_CDN}/${notesPath}`, cdInfo));\n if (promises.length % MAX_PARALLEL_DOWNLOADS === 0) {\n await B.all(promises);\n }\n }\n await B.all(promises);\n log.info(`The total count of entries in the mapping: ${_.size(this.mapping)}`);\n }\n\n /**\n * @typedef {Object} DriverDetails\n * @property {string} url - The full url to the corresponding driver in\n * the remote storage\n * @property {string} etag - The CRC of the driver archive\n * @property {string} version - Chromedriver version\n */\n\n /**\n * @typedef {Object} ChromedriversMapping\n * @property {DriverDetails} - The keys are unique driver identifiers\n * (version/archive name). The corresponding values have `DriverDetails`\n * containing chromedriver details\n */\n\n /**\n * Retrieves chromedriver mapping from the storage\n *\n * @param {boolean} shouldParseNotes [true] - if set to `true`\n * then additional chromedrivers info is going to be retrieved and\n * parsed from release notes\n * @returns {ChromedriversMapping}\n */\n async retrieveMapping (shouldParseNotes = true) {\n const xml = await retrieveData(CD_CDN, {\n 'user-agent': 'appium',\n accept: 'application/xml, */*',\n }, { timeout: this.timeout });\n const doc = new DOMParser().parseFromString(xml);\n await this.parseStorageXml(doc, shouldParseNotes);\n return _.cloneDeep(this.mapping);\n }\n\n /**\n * Extracts downloaded chromedriver archive\n * into the given destination\n *\n * @param {string} src - The source archive path\n * @param {string} dst - The destination chromedriver path\n */\n async unzipDriver (src, dst) {\n const tmpRoot = await tempDir.openDir();\n try {\n await zip.extractAllTo(src, tmpRoot);\n const chromedriverPath = await fs.walkDir(tmpRoot, true, (itemPath, isDirectory) =>\n !isDirectory && _.toLower(path.parse(itemPath).name) === 'chromedriver');\n if (!chromedriverPath) {\n throw new Error('The archive was unzipped properly, but we could not find any chromedriver executable');\n }\n log.debug(`Moving the extracted '${path.basename(chromedriverPath)}' to '${dst}'`);\n await fs.mv(chromedriverPath, dst, {\n mkdirp: true\n });\n } finally {\n await fs.rimraf(tmpRoot);\n }\n }\n\n /**\n * @typedef {Object} OSInfo\n * @property {string} name - The name of the host OS\n * Can be either `mac`, `windows` or `linux`\n * @property {string} arch - The architecture of the host OD.\n * Can be either `32` or `64`\n * @property {?string} hardwareName - The output of `uname -m` command\n * on linux and mac systems. `null` on Windows\n */\n\n /**\n * Filters `this.mapping` to only select matching\n * chromedriver entries by operating system information\n * and/or additional synchronization options (if provided)\n *\n * @param {?OSInfo} osInfo\n * @param {?SyncOptions} opts\n * @returns {Array<String>} The list of filtered chromedriver\n * entry names (version/archive name)\n */\n selectMatchingDrivers (osInfo, opts = {}) {\n const {\n minBrowserVersion,\n versions = [],\n } = opts;\n let driversToSync = _.keys(this.mapping);\n\n if (!_.isEmpty(versions)) {\n // Handle only selected versions if requested\n log.debug(`Selecting chromedrivers whose versions match to ${versions}`);\n driversToSync = driversToSync\n .filter((cdName) => versions.includes(`${this.mapping[cdName].version}`));\n\n log.debug(`Got ${util.pluralize('item', driversToSync.length, true)}`);\n if (_.isEmpty(driversToSync)) {\n return [];\n }\n }\n\n if (!isNaN(minBrowserVersion)) {\n // Only select drivers that support the current browser whose major version number equals to `minBrowserVersion`\n const minBrowserVersionInt = parseInt(minBrowserVersion, 10);\n log.debug(`Selecting chromedrivers whose minimum supported browser version matches to ${minBrowserVersionInt}`);\n let closestMatchedVersionNumber = 0;\n // Select the newest available and compatible chromedriver\n for (const cdName of driversToSync) {\n const currentMinBrowserVersion = parseInt(this.mapping[cdName].minBrowserVersion, 10);\n if (!isNaN(currentMinBrowserVersion)\n && currentMinBrowserVersion <= minBrowserVersionInt\n && closestMatchedVersionNumber < currentMinBrowserVersion) {\n closestMatchedVersionNumber = currentMinBrowserVersion;\n }\n }\n driversToSync = driversToSync.filter((cdName) => `${this.mapping[cdName].minBrowserVersion}` ===\n `${closestMatchedVersionNumber > 0 ? closestMatchedVersionNumber : minBrowserVersionInt}`);\n\n log.debug(`Got ${util.pluralize('item', driversToSync.length, true)}`);\n if (_.isEmpty(driversToSync)) {\n return [];\n }\n log.debug(`Will select candidate ${util.pluralize('driver', driversToSync.length)} ` +\n `versioned as '${_.uniq(driversToSync.map((cdName) => this.mapping[cdName].version))}'`);\n }\n\n if (!_.isEmpty(osInfo)) {\n // Filter out drivers for unsupported system architectures\n let {name, arch, hardwareName} = osInfo;\n if (arch === X64 && !driversToSync.some((cdName) => cdName.includes(`_${name}${X64}`))) {\n // Fall back to x86 build if x64 one is not available for the given OS\n arch = X86;\n }\n if (name === OS.mac && _.includes(hardwareName, 'arm')\n && driversToSync.some((cdName) => cdName.includes(M1_ARCH_SUFFIX))) {\n // prefer executable for M1 arch if present\n arch += M1_ARCH_SUFFIX;\n }\n log.debug(`Selecting chromedrivers whose platform matches to ${name}${arch}`);\n const platformRe = new RegExp(`(\\\\b|_)${name}${arch}\\\\b`);\n driversToSync = driversToSync.filter((cdName) => platformRe.test(cdName));\n log.debug(`Got ${util.pluralize('item', driversToSync.length, true)}`);\n }\n\n return driversToSync;\n }\n\n /**\n * Retrieves the given chromedriver from the storage\n * and unpacks it into `this.chromedriverDir` folder\n *\n * @param {number} index - The unique driver index\n * @param {string} driverKey - The driver key in `this.mapping`\n * @param {string} archivesRoot - The temporary folder path to extract\n * downloaded archives to\n * @param {boolean} isStrict [true] - Whether to throw an error (`true`)\n * or return a boolean result if the driver retrieval process fails\n * @throws {Error} if there was a failure while retrieving the driver\n * and `isStrict` is set to `true`\n * @returns {boolean} if `true` then the chromedriver is successfully\n * downloaded and extracted.\n */\n async retrieveDriver (index, driverKey, archivesRoot, isStrict = false) {\n const { url, etag, version } = this.mapping[driverKey];\n const archivePath = path.resolve(archivesRoot, `${index}.zip`);\n log.debug(`Retrieving '${url}' to '${archivePath}'`);\n try {\n await net.downloadFile(url, archivePath, {\n isMetered: false,\n timeout: TIMEOUT_MS\n });\n } catch (e) {\n const msg = `Cannot download chromedriver archive. Original error: ${e.message}`;\n if (isStrict) {\n throw new Error(msg);\n }\n log.error(msg);\n return false;\n }\n if (!await isCrcOk(archivePath, etag)) {\n const msg = `The checksum for the downloaded chromedriver '${driverKey}' did not match`;\n if (isStrict) {\n throw new Error(msg);\n }\n log.error(msg);\n return false;\n }\n const fileName = `${path.parse(url).name}_v${version}` +\n (system.isWindows() ? '.exe' : '');\n const targetPath = path.resolve(this.chromedriverDir, fileName);\n try {\n await this.unzipDriver(archivePath, targetPath);\n await fs.chmod(targetPath, 0o755);\n log.debug(`Permissions of the file '${targetPath}' have been changed to 755`);\n } catch (e) {\n if (isStrict) {\n throw e;\n }\n log.error(e.message);\n return false;\n }\n return true;\n }\n\n /**\n * @typedef {Object} SyncOptions\n * @property {Array<String>} versions - The list of chromedriver\n * versions to sync. If empty (the default value) then all available\n * chromedrivers are going to be downloaded and extracted\n * @property {string|number} minBrowserVersion - The minumum supported\n * Chrome version that downloaded chromedrivers should support. Can match\n * multiple drivers.\n * @property {?OSInfo} osInfo - System information used to filter out\n * the list of the retrieved drivers. If not provided then the script\n * will try to retrieve it.\n */\n\n /**\n * Retrieves chromedrivers from the remote storage\n * to the local file system\n *\n * @param {?SyncOptions} opts\n * @throws {Error} if there was a problem while retrieving\n * the drivers\n * @returns {Array<String} The list of successfully synchronized driver keys\n */\n async syncDrivers (opts = {}) {\n if (_.isEmpty(this.mapping)) {\n await this.retrieveMapping(!!opts.minBrowserVersion);\n }\n if (_.isEmpty(this.mapping)) {\n throw new Error('Cannot retrieve chromedrivers mapping from Google storage');\n }\n\n const driversToSync = this.selectMatchingDrivers(opts.osInfo ?? await getOsInfo(), opts);\n if (_.isEmpty(driversToSync)) {\n log.debug(`There are no drivers to sync. Exiting`);\n return [];\n }\n log.debug(`Got ${util.pluralize('driver', driversToSync.length, true)} to sync: ` +\n JSON.stringify(driversToSync, null, 2));\n\n const synchronizedDrivers = [];\n const promises = [];\n const archivesRoot = await tempDir.openDir();\n try {\n for (const [idx, driverKey] of driversToSync.entries()) {\n promises.push((async () => {\n if (await this.retrieveDriver(idx, driverKey, archivesRoot, !_.isEmpty(opts))) {\n synchronizedDrivers.push(driverKey);\n }\n })());\n\n if (promises.length % MAX_PARALLEL_DOWNLOADS === 0) {\n await B.all(promises);\n }\n }\n await B.all(promises);\n } finally {\n await fs.rimraf(archivesRoot);\n }\n if (!_.isEmpty(synchronizedDrivers)) {\n log.info(`Successfully synchronized ` +\n `${util.pluralize('chromedriver', synchronizedDrivers.length, true)}`);\n } else {\n log.info(`No chromedrivers were synchronized`);\n }\n return synchronizedDrivers;\n }\n}\n\n\nexport default ChromedriverStorageClient;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"storage-client.js","names":["TIMEOUT_MS","MAX_PARALLEL_DOWNLOADS","log","logger","getLogger","isCrcOk","src","checksum","md5","fs","hash","_","toLower","findChildNode","parent","childName","text","hasChildNodes","childNodeIdx","childNodes","length","childNode","localName","childText","extractNodeText","node","firstChild","util","hasValue","nodeValue","ChromedriverStorageClient","constructor","args","chromedriverDir","getChromedriverDir","timeout","mapping","parseNotes","content","result","versionMatch","exec","version","minBrowserVersionMatch","minBrowserVersion","retrieveAdditionalDriverInfo","driverKey","notesUrl","infoDict","notes","retrieveData","accept","debug","parseStorageXml","doc","shouldParseNotes","driverNodes","xpath","select","isEmpty","promises","driverNode","key","includes","etag","cdInfo","url","CD_CDN","trim","first","split","notesPath","isNotesPresent","reduce","acc","info","push","B","all","size","retrieveMapping","xml","DOMParser","parseFromString","cloneDeep","unzipDriver","dst","tmpRoot","tempDir","openDir","zip","extractAllTo","chromedriverPath","walkDir","itemPath","isDirectory","path","parse","name","Error","basename","mv","mkdirp","rimraf","selectMatchingDrivers","osInfo","opts","versions","driversToSync","keys","filter","cdName","pluralize","isNaN","minBrowserVersionInt","parseInt","closestMatchedVersionNumber","currentMinBrowserVersion","uniq","map","arch","hardwareName","X64","some","X86","OS","mac","M1_ARCH_SUFFIX","platformRe","RegExp","test","retrieveDriver","index","archivesRoot","isStrict","archivePath","resolve","net","downloadFile","isMetered","e","msg","message","error","fileName","system","isWindows","targetPath","chmod","syncDrivers","getOsInfo","JSON","stringify","synchronizedDrivers","idx","entries"],"sources":["../../lib/storage-client.js"],"sourcesContent":["import {\n getChromedriverDir, CD_CDN, retrieveData, getOsInfo,\n OS, X64, X86, M1_ARCH_SUFFIX,\n} from './utils';\nimport _ from 'lodash';\nimport xpath from 'xpath';\nimport { DOMParser } from '@xmldom/xmldom';\nimport B from 'bluebird';\nimport path from 'path';\nimport { system, fs, logger, tempDir, zip, util, net } from '@appium/support';\n\n\nconst TIMEOUT_MS = 15000;\nconst MAX_PARALLEL_DOWNLOADS = 5;\n\nconst log = logger.getLogger('ChromedriverStorageClient');\n\n\nasync function isCrcOk (src, checksum) {\n const md5 = await fs.hash(src, 'md5');\n return _.toLower(md5) === _.toLower(checksum);\n}\n\nfunction findChildNode (parent, childName = null, text = null) {\n if (!childName && !text) {\n return null;\n }\n if (!parent.hasChildNodes()) {\n return null;\n }\n\n for (let childNodeIdx = 0; childNodeIdx < parent.childNodes.length; childNodeIdx++) {\n const childNode = parent.childNodes[childNodeIdx];\n if (childName && !text && childName === childNode.localName) {\n return childNode;\n }\n if (text) {\n const childText = extractNodeText(childNode);\n if (!childText) {\n continue;\n }\n if (childName && childName === childNode.localName && text === childText) {\n return childNode;\n }\n if (!childName && text === childText) {\n return childNode;\n }\n }\n }\n return null;\n}\n\nfunction extractNodeText (node) {\n return (!node || !node.firstChild || !util.hasValue(node.firstChild.nodeValue))\n ? null\n : node.firstChild.nodeValue;\n}\n\n\nclass ChromedriverStorageClient {\n constructor (args = {}) {\n const {\n chromedriverDir = getChromedriverDir(),\n timeout = TIMEOUT_MS,\n } = args;\n this.chromedriverDir = chromedriverDir;\n this.timeout = timeout;\n this.mapping = {};\n }\n\n /**\n * @typedef {Object} AdditionalDriverDetails\n * @property {?string} version - Chromedriver version\n * or `null` if it cannot be found\n * @property {?string} minBrowserVersion - The minimum browser version\n * supported by chromedriver or `null` if it cannot be found\n */\n\n /**\n * Gets additional chromedriver details from chromedriver\n * release notes\n *\n * @param {string} content - Release notes of the corresponding chromedriver\n * @returns {AdditionalDriverDetails}\n */\n parseNotes (content) {\n const result = {};\n const versionMatch = /^\\s*[-]+ChromeDriver[\\D]+([\\d.]+)/im.exec(content);\n if (versionMatch) {\n result.version = versionMatch[1];\n }\n const minBrowserVersionMatch = /^\\s*Supports Chrome[\\D]+(\\d+)/im.exec(content);\n if (minBrowserVersionMatch) {\n result.minBrowserVersion = minBrowserVersionMatch[1];\n }\n return result;\n }\n\n /**\n * Downloads chromedriver release notes and puts them\n * into the dictionary argument\n *\n * @param {string} driverKey - Driver version plus archive name\n * @param {string} notesUrl - The URL of chromedriver notes\n * @param {Object} infoDict - The dictionary containing driver info.\n * The method call mutates by merging `AdditionalDriverDetails`\n * @throws {Error} if the release notes cannot be downloaded\n */\n async retrieveAdditionalDriverInfo (driverKey, notesUrl, infoDict) {\n const notes = await retrieveData(notesUrl, {\n 'user-agent': 'appium',\n accept: '*/*',\n }, { timeout: this.timeout });\n const { minBrowserVersion } = this.parseNotes(notes);\n if (!minBrowserVersion) {\n log.debug(`The driver '${driverKey}' does not contain valid release notes at ${notesUrl}. ` +\n `Skipping it`);\n return;\n }\n infoDict.minBrowserVersion = minBrowserVersion;\n }\n\n /**\n * Parses chromedriver storage XML and stores\n * the parsed results into `this.mapping`\n *\n * @param {DOMDocument} doc - The DOM representation\n * of the chromedriver storage XML\n * @param {boolean} shouldParseNotes [true] - If set to `true`\n * then additional drivers information is going to be parsed\n * and assigned to `this.mapping`\n */\n async parseStorageXml (doc, shouldParseNotes = true) {\n const driverNodes = xpath.select(`//*[local-name(.)='Contents']`, doc);\n log.debug(`Parsed ${driverNodes.length} entries from storage XML`);\n if (_.isEmpty(driverNodes)) {\n return;\n }\n\n const promises = [];\n for (const driverNode of driverNodes) {\n const key = extractNodeText(findChildNode(driverNode, 'Key'));\n if (!_.includes(key, '/chromedriver_')) {\n continue;\n }\n\n const etag = extractNodeText(findChildNode(driverNode, 'ETag'));\n if (!etag) {\n log.debug(`The entry '${key}' does not contain the checksum. Skipping it`);\n continue;\n }\n\n const cdInfo = {\n url: `${CD_CDN}/${key}`,\n etag: _.trim(etag, '\"'),\n version: _.first(key.split('/')),\n };\n this.mapping[key] = cdInfo;\n\n const notesPath = `${cdInfo.version}/notes.txt`;\n const isNotesPresent = !!driverNodes\n .reduce((acc, node) => acc || findChildNode(node, 'Key', notesPath), false);\n if (!isNotesPresent) {\n cdInfo.minBrowserVersion = null;\n if (shouldParseNotes) {\n log.info(`The entry '${key}' does not contain any notes. Skipping it`);\n }\n continue;\n } else if (!shouldParseNotes) {\n continue;\n }\n\n promises.push(this.retrieveAdditionalDriverInfo(key, `${CD_CDN}/${notesPath}`, cdInfo));\n if (promises.length % MAX_PARALLEL_DOWNLOADS === 0) {\n await B.all(promises);\n }\n }\n await B.all(promises);\n log.info(`The total count of entries in the mapping: ${_.size(this.mapping)}`);\n }\n\n /**\n * @typedef {Object} DriverDetails\n * @property {string} url - The full url to the corresponding driver in\n * the remote storage\n * @property {string} etag - The CRC of the driver archive\n * @property {string} version - Chromedriver version\n */\n\n /**\n * @typedef {Object} ChromedriversMapping\n * @property {DriverDetails} - The keys are unique driver identifiers\n * (version/archive name). The corresponding values have `DriverDetails`\n * containing chromedriver details\n */\n\n /**\n * Retrieves chromedriver mapping from the storage\n *\n * @param {boolean} shouldParseNotes [true] - if set to `true`\n * then additional chromedrivers info is going to be retrieved and\n * parsed from release notes\n * @returns {ChromedriversMapping}\n */\n async retrieveMapping (shouldParseNotes = true) {\n const xml = await retrieveData(CD_CDN, {\n 'user-agent': 'appium',\n accept: 'application/xml, */*',\n }, { timeout: this.timeout });\n const doc = new DOMParser().parseFromString(xml);\n await this.parseStorageXml(doc, shouldParseNotes);\n return _.cloneDeep(this.mapping);\n }\n\n /**\n * Extracts downloaded chromedriver archive\n * into the given destination\n *\n * @param {string} src - The source archive path\n * @param {string} dst - The destination chromedriver path\n */\n async unzipDriver (src, dst) {\n const tmpRoot = await tempDir.openDir();\n try {\n await zip.extractAllTo(src, tmpRoot);\n const chromedriverPath = await fs.walkDir(tmpRoot, true, (itemPath, isDirectory) =>\n !isDirectory && _.toLower(path.parse(itemPath).name) === 'chromedriver');\n if (!chromedriverPath) {\n throw new Error('The archive was unzipped properly, but we could not find any chromedriver executable');\n }\n log.debug(`Moving the extracted '${path.basename(chromedriverPath)}' to '${dst}'`);\n await fs.mv(chromedriverPath, dst, {\n mkdirp: true\n });\n } finally {\n await fs.rimraf(tmpRoot);\n }\n }\n\n /**\n * @typedef {Object} OSInfo\n * @property {string} name - The name of the host OS\n * Can be either `mac`, `windows` or `linux`\n * @property {string} arch - The architecture of the host OD.\n * Can be either `32` or `64`\n * @property {?string} hardwareName - The output of `uname -m` command\n * on linux and mac systems. `null` on Windows\n */\n\n /**\n * Filters `this.mapping` to only select matching\n * chromedriver entries by operating system information\n * and/or additional synchronization options (if provided)\n *\n * @param {?OSInfo} osInfo\n * @param {?SyncOptions} opts\n * @returns {Array<String>} The list of filtered chromedriver\n * entry names (version/archive name)\n */\n selectMatchingDrivers (osInfo, opts = {}) {\n const {\n minBrowserVersion,\n versions = [],\n } = opts;\n let driversToSync = _.keys(this.mapping);\n\n if (!_.isEmpty(versions)) {\n // Handle only selected versions if requested\n log.debug(`Selecting chromedrivers whose versions match to ${versions}`);\n driversToSync = driversToSync\n .filter((cdName) => versions.includes(`${this.mapping[cdName].version}`));\n\n log.debug(`Got ${util.pluralize('item', driversToSync.length, true)}`);\n if (_.isEmpty(driversToSync)) {\n return [];\n }\n }\n\n if (!isNaN(minBrowserVersion)) {\n // Only select drivers that support the current browser whose major version number equals to `minBrowserVersion`\n const minBrowserVersionInt = parseInt(minBrowserVersion, 10);\n log.debug(`Selecting chromedrivers whose minimum supported browser version matches to ${minBrowserVersionInt}`);\n let closestMatchedVersionNumber = 0;\n // Select the newest available and compatible chromedriver\n for (const cdName of driversToSync) {\n const currentMinBrowserVersion = parseInt(this.mapping[cdName].minBrowserVersion, 10);\n if (!isNaN(currentMinBrowserVersion)\n && currentMinBrowserVersion <= minBrowserVersionInt\n && closestMatchedVersionNumber < currentMinBrowserVersion) {\n closestMatchedVersionNumber = currentMinBrowserVersion;\n }\n }\n driversToSync = driversToSync.filter((cdName) => `${this.mapping[cdName].minBrowserVersion}` ===\n `${closestMatchedVersionNumber > 0 ? closestMatchedVersionNumber : minBrowserVersionInt}`);\n\n log.debug(`Got ${util.pluralize('item', driversToSync.length, true)}`);\n if (_.isEmpty(driversToSync)) {\n return [];\n }\n log.debug(`Will select candidate ${util.pluralize('driver', driversToSync.length)} ` +\n `versioned as '${_.uniq(driversToSync.map((cdName) => this.mapping[cdName].version))}'`);\n }\n\n if (!_.isEmpty(osInfo)) {\n // Filter out drivers for unsupported system architectures\n let {name, arch, hardwareName} = osInfo;\n if (arch === X64 && !driversToSync.some((cdName) => cdName.includes(`_${name}${X64}`))) {\n // Fall back to x86 build if x64 one is not available for the given OS\n arch = X86;\n }\n if (name === OS.mac && _.includes(hardwareName, 'arm')\n && driversToSync.some((cdName) => cdName.includes(M1_ARCH_SUFFIX))) {\n // prefer executable for M1 arch if present\n arch += M1_ARCH_SUFFIX;\n }\n log.debug(`Selecting chromedrivers whose platform matches to ${name}${arch}`);\n const platformRe = new RegExp(`(\\\\b|_)${name}${arch}\\\\b`);\n driversToSync = driversToSync.filter((cdName) => platformRe.test(cdName));\n log.debug(`Got ${util.pluralize('item', driversToSync.length, true)}`);\n }\n\n return driversToSync;\n }\n\n /**\n * Retrieves the given chromedriver from the storage\n * and unpacks it into `this.chromedriverDir` folder\n *\n * @param {number} index - The unique driver index\n * @param {string} driverKey - The driver key in `this.mapping`\n * @param {string} archivesRoot - The temporary folder path to extract\n * downloaded archives to\n * @param {boolean} isStrict [true] - Whether to throw an error (`true`)\n * or return a boolean result if the driver retrieval process fails\n * @throws {Error} if there was a failure while retrieving the driver\n * and `isStrict` is set to `true`\n * @returns {boolean} if `true` then the chromedriver is successfully\n * downloaded and extracted.\n */\n async retrieveDriver (index, driverKey, archivesRoot, isStrict = false) {\n const { url, etag, version } = this.mapping[driverKey];\n const archivePath = path.resolve(archivesRoot, `${index}.zip`);\n log.debug(`Retrieving '${url}' to '${archivePath}'`);\n try {\n await net.downloadFile(url, archivePath, {\n isMetered: false,\n timeout: TIMEOUT_MS\n });\n } catch (e) {\n const msg = `Cannot download chromedriver archive. Original error: ${e.message}`;\n if (isStrict) {\n throw new Error(msg);\n }\n log.error(msg);\n return false;\n }\n if (!await isCrcOk(archivePath, etag)) {\n const msg = `The checksum for the downloaded chromedriver '${driverKey}' did not match`;\n if (isStrict) {\n throw new Error(msg);\n }\n log.error(msg);\n return false;\n }\n const fileName = `${path.parse(url).name}_v${version}` +\n (system.isWindows() ? '.exe' : '');\n const targetPath = path.resolve(this.chromedriverDir, fileName);\n try {\n await this.unzipDriver(archivePath, targetPath);\n await fs.chmod(targetPath, 0o755);\n log.debug(`Permissions of the file '${targetPath}' have been changed to 755`);\n } catch (e) {\n if (isStrict) {\n throw e;\n }\n log.error(e.message);\n return false;\n }\n return true;\n }\n\n /**\n * @typedef {Object} SyncOptions\n * @property {Array<String>} versions - The list of chromedriver\n * versions to sync. If empty (the default value) then all available\n * chromedrivers are going to be downloaded and extracted\n * @property {string|number} minBrowserVersion - The minumum supported\n * Chrome version that downloaded chromedrivers should support. Can match\n * multiple drivers.\n * @property {?OSInfo} osInfo - System information used to filter out\n * the list of the retrieved drivers. If not provided then the script\n * will try to retrieve it.\n */\n\n /**\n * Retrieves chromedrivers from the remote storage\n * to the local file system\n *\n * @param {?SyncOptions} opts\n * @throws {Error} if there was a problem while retrieving\n * the drivers\n * @returns {Array<String} The list of successfully synchronized driver keys\n */\n async syncDrivers (opts = {}) {\n if (_.isEmpty(this.mapping)) {\n await this.retrieveMapping(!!opts.minBrowserVersion);\n }\n if (_.isEmpty(this.mapping)) {\n throw new Error('Cannot retrieve chromedrivers mapping from Google storage');\n }\n\n const driversToSync = this.selectMatchingDrivers(opts.osInfo ?? await getOsInfo(), opts);\n if (_.isEmpty(driversToSync)) {\n log.debug(`There are no drivers to sync. Exiting`);\n return [];\n }\n log.debug(`Got ${util.pluralize('driver', driversToSync.length, true)} to sync: ` +\n JSON.stringify(driversToSync, null, 2));\n\n const synchronizedDrivers = [];\n const promises = [];\n const archivesRoot = await tempDir.openDir();\n try {\n for (const [idx, driverKey] of driversToSync.entries()) {\n promises.push((async () => {\n if (await this.retrieveDriver(idx, driverKey, archivesRoot, !_.isEmpty(opts))) {\n synchronizedDrivers.push(driverKey);\n }\n })());\n\n if (promises.length % MAX_PARALLEL_DOWNLOADS === 0) {\n await B.all(promises);\n }\n }\n await B.all(promises);\n } finally {\n await fs.rimraf(archivesRoot);\n }\n if (!_.isEmpty(synchronizedDrivers)) {\n log.info(`Successfully synchronized ` +\n `${util.pluralize('chromedriver', synchronizedDrivers.length, true)}`);\n } else {\n log.info(`No chromedrivers were synchronized`);\n }\n return synchronizedDrivers;\n }\n}\n\n\nexport default ChromedriverStorageClient;\n"],"mappings":"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"}
|
package/build/lib/utils.js
CHANGED
|
@@ -14,8 +14,8 @@ exports.getOsName = exports.getOsInfo = void 0;
|
|
|
14
14
|
exports.retrieveData = retrieveData;
|
|
15
15
|
require("source-map-support/register");
|
|
16
16
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
17
|
-
var _support = require("appium/support");
|
|
18
|
-
var
|
|
17
|
+
var _support = require("@appium/support");
|
|
18
|
+
var _baseDriver = require("@appium/base-driver");
|
|
19
19
|
var _path = _interopRequireDefault(require("path"));
|
|
20
20
|
var _compareVersions = require("compare-versions");
|
|
21
21
|
var _axios = _interopRequireDefault(require("axios"));
|
|
@@ -38,25 +38,6 @@ const CD_EXECUTABLE_PREFIX = 'chromedriver';
|
|
|
38
38
|
const MODULE_NAME = 'appium-chromedriver';
|
|
39
39
|
|
|
40
40
|
const getModuleRoot = _lodash.default.memoize(function getModuleRoot() {
|
|
41
|
-
if (!_lodash.default.isFunction(_support.node.getModuleRootSync)) {
|
|
42
|
-
const {
|
|
43
|
-
existsSync,
|
|
44
|
-
readFileSync
|
|
45
|
-
} = require('fs');
|
|
46
|
-
let currentDir = _path.default.dirname(_path.default.resolve(__filename));
|
|
47
|
-
let isAtFsRoot = false;
|
|
48
|
-
while (!isAtFsRoot) {
|
|
49
|
-
const manifestPath = _path.default.join(currentDir, 'package.json');
|
|
50
|
-
try {
|
|
51
|
-
if (existsSync(manifestPath) && JSON.parse(readFileSync(manifestPath, 'utf8')).name === MODULE_NAME) {
|
|
52
|
-
return currentDir;
|
|
53
|
-
}
|
|
54
|
-
} catch (ign) {}
|
|
55
|
-
currentDir = _path.default.dirname(currentDir);
|
|
56
|
-
isAtFsRoot = currentDir.length <= _path.default.dirname(currentDir).length;
|
|
57
|
-
}
|
|
58
|
-
throw new Error(`Cannot find the root folder of the ${MODULE_NAME} Node.js module`);
|
|
59
|
-
}
|
|
60
41
|
const root = _support.node.getModuleRootSync(MODULE_NAME, __filename);
|
|
61
42
|
if (!root) {
|
|
62
43
|
throw new Error(`Cannot find the root folder of the ${MODULE_NAME} Node.js module`);
|
|
@@ -127,9 +108,9 @@ const getOsInfo = _lodash.default.memoize(async function getOsInfo() {
|
|
|
127
108
|
};
|
|
128
109
|
});
|
|
129
110
|
exports.getOsInfo = getOsInfo;
|
|
130
|
-
const getBaseDriverInstance = _lodash.default.memoize(() => new
|
|
111
|
+
const getBaseDriverInstance = _lodash.default.memoize(() => new _baseDriver.BaseDriver({}, false));
|
|
131
112
|
|
|
132
113
|
function generateLogPrefix(obj, sessionId = null) {
|
|
133
114
|
return getBaseDriverInstance().helpers.generateDriverLogPrefix(obj, sessionId);
|
|
134
115
|
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDRF9DRE4iLCJwcm9jZXNzIiwiZW52IiwibnBtX2NvbmZpZ19jaHJvbWVkcml2ZXJfY2RudXJsIiwiQ0hST01FRFJJVkVSX0NETlVSTCIsIk9TIiwibGludXgiLCJ3aW5kb3dzIiwibWFjIiwiWDY0IiwiWDg2IiwiTTFfQVJDSF9TVUZGSVgiLCJDRF9FWEVDVVRBQkxFX1BSRUZJWCIsIk1PRFVMRV9OQU1FIiwiZ2V0TW9kdWxlUm9vdCIsIl8iLCJtZW1vaXplIiwiaXNGdW5jdGlvbiIsIm5vZGUiLCJnZXRNb2R1bGVSb290U3luYyIsImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJyZXF1aXJlIiwiY3VycmVudERpciIsInBhdGgiLCJkaXJuYW1lIiwicmVzb2x2ZSIsIl9fZmlsZW5hbWUiLCJpc0F0RnNSb290IiwibWFuaWZlc3RQYXRoIiwiam9pbiIsIkpTT04iLCJwYXJzZSIsIm5hbWUiLCJpZ24iLCJsZW5ndGgiLCJFcnJvciIsInJvb3QiLCJDSFJPTUVEUklWRVJfQ0hST01FX01BUFBJTkciLCJDRF9CQVNFX0RJUiIsImdldE1vc3RSZWNlbnRDaHJvbWVkcml2ZXIiLCJtYXBwaW5nIiwiaXNFbXB0eSIsImxhc3QiLCJrZXlzIiwic29ydCIsImNvbXBhcmVWZXJzaW9ucyIsIkNEX1ZFUiIsIm5wbV9jb25maWdfY2hyb21lZHJpdmVyX3ZlcnNpb24iLCJDSFJPTUVEUklWRVJfVkVSU0lPTiIsImdldENocm9tZVZlcnNpb24iLCJhZGIiLCJidW5kbGVJZCIsInZlcnNpb25OYW1lIiwiZ2V0UGFja2FnZUluZm8iLCJnZXRDaHJvbWVkcml2ZXJEaXIiLCJvc05hbWUiLCJnZXRPc05hbWUiLCJnZXRDaHJvbWVkcml2ZXJCaW5hcnlQYXRoIiwicm9vdERpciIsInBhdGhTdWZmaXgiLCJwYXRocyIsImZzIiwiZ2xvYiIsImN3ZCIsImFic29sdXRlIiwibm9jYXNlIiwibm9kaXIiLCJzdHJpY3QiLCJmaXJzdCIsInJldHJpZXZlRGF0YSIsInVybCIsImhlYWRlcnMiLCJvcHRzIiwidGltZW91dCIsInJlc3BvbnNlVHlwZSIsImF4aW9zIiwiZGF0YSIsInN5c3RlbSIsImlzV2luZG93cyIsImlzTWFjIiwiZ2V0T3NJbmZvIiwiYXJjaCIsImhhcmR3YXJlTmFtZSIsInRyaW0iLCJleGVjIiwiZ2V0QmFzZURyaXZlckluc3RhbmNlIiwiQmFzZURyaXZlciIsImdlbmVyYXRlTG9nUHJlZml4Iiwib2JqIiwic2Vzc2lvbklkIiwiaGVscGVycyIsImdlbmVyYXRlRHJpdmVyTG9nUHJlZml4Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBzeXN0ZW0sIGZzLCBub2RlIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgQmFzZURyaXZlciB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcblxuY29uc3QgQ0RfQ0ROID0gcHJvY2Vzcy5lbnYubnBtX2NvbmZpZ19jaHJvbWVkcml2ZXJfY2RudXJsXG4gIHx8IHByb2Nlc3MuZW52LkNIUk9NRURSSVZFUl9DRE5VUkxcbiAgfHwgJ2h0dHBzOi8vY2hyb21lZHJpdmVyLnN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20nO1xuY29uc3QgT1MgPSB7XG4gIGxpbnV4OiAnbGludXgnLFxuICB3aW5kb3dzOiAnd2luJyxcbiAgbWFjOiAnbWFjJ1xufTtcbmNvbnN0IFg2NCA9ICc2NCc7XG5jb25zdCBYODYgPSAnMzInO1xuY29uc3QgTTFfQVJDSF9TVUZGSVggPSAnX20xJztcbmNvbnN0IENEX0VYRUNVVEFCTEVfUFJFRklYID0gJ2Nocm9tZWRyaXZlcic7XG5jb25zdCBNT0RVTEVfTkFNRSA9ICdhcHBpdW0tY2hyb21lZHJpdmVyJztcblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IG1vZHVsZSdzIHJvb3QgZm9sZGVyXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZ1bGwgcGF0aCB0byBtb2R1bGUgcm9vdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjdXJyZW50IG1vZHVsZSByb290IGZvbGRlciBjYW5ub3QgYmUgZGV0ZXJtaW5lZFxuICovXG5jb25zdCBnZXRNb2R1bGVSb290ID0gXy5tZW1vaXplKGZ1bmN0aW9uIGdldE1vZHVsZVJvb3QgKCkge1xuICAvLyBUT0RPOiBHZXQgcmlkIG9mIHRoZSBjb25kaXRpb24gYWZ0ZXIgYSB3aGlsZSwgc28gY2xpZW50cyBoYXZlIGVub3VnaCB0aW1lIHRvIGJ1bXAgdGhlaXIgc2VydmVyIHRvIHY0NFxuICAvLyBUT0RPOiBDb21taXQgZGF0ZTogMDkuMDkuMjAyMlxuICBpZiAoIV8uaXNGdW5jdGlvbihub2RlLmdldE1vZHVsZVJvb3RTeW5jKSkge1xuICAgIGNvbnN0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jIH0gPSByZXF1aXJlKCdmcycpO1xuICAgIGxldCBjdXJyZW50RGlyID0gcGF0aC5kaXJuYW1lKHBhdGgucmVzb2x2ZShfX2ZpbGVuYW1lKSk7XG4gICAgbGV0IGlzQXRGc1Jvb3QgPSBmYWxzZTtcbiAgICB3aGlsZSAoIWlzQXRGc1Jvb3QpIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0UGF0aCA9IHBhdGguam9pbihjdXJyZW50RGlyLCAncGFja2FnZS5qc29uJyk7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoZXhpc3RzU3luYyhtYW5pZmVzdFBhdGgpICYmXG4gICAgICAgICAgICBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhtYW5pZmVzdFBhdGgsICd1dGY4JykpLm5hbWUgPT09IE1PRFVMRV9OQU1FKSB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnREaXI7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICAgIGN1cnJlbnREaXIgPSBwYXRoLmRpcm5hbWUoY3VycmVudERpcik7XG4gICAgICBpc0F0RnNSb290ID0gY3VycmVudERpci5sZW5ndGggPD0gcGF0aC5kaXJuYW1lKGN1cnJlbnREaXIpLmxlbmd0aDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCB0aGUgcm9vdCBmb2xkZXIgb2YgdGhlICR7TU9EVUxFX05BTUV9IE5vZGUuanMgbW9kdWxlYCk7XG4gIH1cblxuICBjb25zdCByb290ID0gbm9kZS5nZXRNb2R1bGVSb290U3luYyhNT0RVTEVfTkFNRSwgX19maWxlbmFtZSk7XG4gIGlmICghcm9vdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSAke01PRFVMRV9OQU1FfSBOb2RlLmpzIG1vZHVsZWApO1xuICB9XG4gIHJldHVybiByb290O1xufSk7XG5cbi8vIENocm9tZWRyaXZlciB2ZXJzaW9uOiBtaW5pbXVtIENocm9tZSB2ZXJzaW9uXG5jb25zdCBDSFJPTUVEUklWRVJfQ0hST01FX01BUFBJTkcgPSByZXF1aXJlKHBhdGguam9pbihnZXRNb2R1bGVSb290KCksICdjb25maWcnLCAnbWFwcGluZy5qc29uJykpO1xuY29uc3QgQ0RfQkFTRV9ESVIgPSBwYXRoLmpvaW4oZ2V0TW9kdWxlUm9vdCgpLCAnY2hyb21lZHJpdmVyJyk7XG5cbmZ1bmN0aW9uIGdldE1vc3RSZWNlbnRDaHJvbWVkcml2ZXIgKG1hcHBpbmcgPSBDSFJPTUVEUklWRVJfQ0hST01FX01BUFBJTkcpIHtcbiAgaWYgKF8uaXNFbXB0eShtYXBwaW5nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGdldCBtb3N0IHJlY2VudCBDaHJvbWVkcml2ZXIgdmVyc2lvbiBmcm9tIGVtcHR5IG1hcHBpbmcnKTtcbiAgfVxuICByZXR1cm4gXy5sYXN0KF8ua2V5cyhtYXBwaW5nKS5zb3J0KGNvbXBhcmVWZXJzaW9ucykpO1xufVxuXG5jb25zdCBDRF9WRVIgPSBwcm9jZXNzLmVudi5ucG1fY29uZmlnX2Nocm9tZWRyaXZlcl92ZXJzaW9uXG4gIHx8IHByb2Nlc3MuZW52LkNIUk9NRURSSVZFUl9WRVJTSU9OXG4gIHx8IGdldE1vc3RSZWNlbnRDaHJvbWVkcml2ZXIoKTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q2hyb21lVmVyc2lvbiAoYWRiLCBidW5kbGVJZCkge1xuICBjb25zdCB7dmVyc2lvbk5hbWV9ID0gYXdhaXQgYWRiLmdldFBhY2thZ2VJbmZvKGJ1bmRsZUlkKTtcbiAgcmV0dXJuIHZlcnNpb25OYW1lO1xufVxuXG5mdW5jdGlvbiBnZXRDaHJvbWVkcml2ZXJEaXIgKG9zTmFtZSA9IGdldE9zTmFtZSgpKSB7XG4gIHJldHVybiBwYXRoLnJlc29sdmUoQ0RfQkFTRV9ESVIsIG9zTmFtZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENocm9tZWRyaXZlckJpbmFyeVBhdGggKG9zTmFtZSA9IGdldE9zTmFtZSgpKSB7XG4gIGNvbnN0IHJvb3REaXIgPSBnZXRDaHJvbWVkcml2ZXJEaXIob3NOYW1lKTtcbiAgY29uc3QgcGF0aFN1ZmZpeCA9IG9zTmFtZSA9PT0gT1Mud2luZG93cyA/ICcuZXhlJyA6ICcnO1xuICBjb25zdCBwYXRocyA9IGF3YWl0IGZzLmdsb2IoYCR7Q0RfRVhFQ1VUQUJMRV9QUkVGSVh9KiR7cGF0aFN1ZmZpeH1gLCB7XG4gICAgY3dkOiByb290RGlyLFxuICAgIGFic29sdXRlOiB0cnVlLFxuICAgIG5vY2FzZTogdHJ1ZSxcbiAgICBub2RpcjogdHJ1ZSxcbiAgICBzdHJpY3Q6IGZhbHNlLFxuICB9KTtcbiAgcmV0dXJuIF8uaXNFbXB0eShwYXRocylcbiAgICA/IHBhdGgucmVzb2x2ZShyb290RGlyLCBgJHtDRF9FWEVDVVRBQkxFX1BSRUZJWH0ke3BhdGhTdWZmaXh9YClcbiAgICA6IF8uZmlyc3QocGF0aHMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZURhdGEgKHVybCwgaGVhZGVycywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aW1lb3V0ID0gNTAwMCxcbiAgICByZXNwb25zZVR5cGUgPSAndGV4dCcsXG4gIH0gPSBvcHRzO1xuICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICB1cmwsXG4gICAgaGVhZGVycyxcbiAgICB0aW1lb3V0LFxuICAgIHJlc3BvbnNlVHlwZSxcbiAgfSkpLmRhdGE7XG59XG5cbmNvbnN0IGdldE9zTmFtZSA9IF8ubWVtb2l6ZShmdW5jdGlvbiBnZXRPc05hbWUgKCkge1xuICBpZiAoc3lzdGVtLmlzV2luZG93cygpKSB7XG4gICAgcmV0dXJuIE9TLndpbmRvd3M7XG4gIH1cbiAgaWYgKHN5c3RlbS5pc01hYygpKSB7XG4gICAgcmV0dXJuIE9TLm1hYztcbiAgfVxuICByZXR1cm4gT1MubGludXg7XG59KTtcblxuY29uc3QgZ2V0T3NJbmZvID0gXy5tZW1vaXplKGFzeW5jIGZ1bmN0aW9uIGdldE9zSW5mbyAoKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogZ2V0T3NOYW1lKCksXG4gICAgYXJjaDogYXdhaXQgc3lzdGVtLmFyY2goKSxcbiAgICBoYXJkd2FyZU5hbWU6IHN5c3RlbS5pc1dpbmRvd3MoKSA/IG51bGwgOiBfLnRyaW0oYXdhaXQgZXhlYygndW5hbWUnLCBbJy1tJ10pKSxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRCYXNlRHJpdmVySW5zdGFuY2UgPSBfLm1lbW9pemUoKCkgPT4gbmV3IEJhc2VEcml2ZXIoe30sIGZhbHNlKSk7XG5cbi8qKlxuICogR2VuZXJhdGVzIGxvZyBwcmVmaXggc3RyaW5nXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9iaiBsb2cgb3duZXIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7c3RyaW5nP30gc2Vzc2lvbklkIE9wdGlvbmFsIHNlc3Npb24gaWRlbnRpZmllclxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVMb2dQcmVmaXggKG9iaiwgc2Vzc2lvbklkID0gbnVsbCkge1xuICByZXR1cm4gZ2V0QmFzZURyaXZlckluc3RhbmNlKCkuaGVscGVycy5nZW5lcmF0ZURyaXZlckxvZ1ByZWZpeChvYmosIHNlc3Npb25JZCk7XG59XG5cblxuZXhwb3J0IHtcbiAgZ2V0Q2hyb21lVmVyc2lvbiwgZ2V0Q2hyb21lZHJpdmVyRGlyLCBnZXRDaHJvbWVkcml2ZXJCaW5hcnlQYXRoLCBnZXRPc05hbWUsXG4gIENEX0JBU0VfRElSLCBDRF9DRE4sIENEX1ZFUiwgQ0hST01FRFJJVkVSX0NIUk9NRV9NQVBQSU5HLCBnZXRNb3N0UmVjZW50Q2hyb21lZHJpdmVyLFxuICByZXRyaWV2ZURhdGEsIGdldE9zSW5mbywgT1MsIFg2NCwgWDg2LCBNMV9BUkNIX1NVRkZJWCwgZ2VuZXJhdGVMb2dQcmVmaXgsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDQyxHQUFHLENBQUNDLDhCQUE4QixJQUNwREYsT0FBTyxDQUFDQyxHQUFHLENBQUNFLG1CQUFtQixJQUMvQiw2Q0FBNkM7QUFBQztBQUNuRCxNQUFNQyxFQUFFLEdBQUc7RUFDVEMsS0FBSyxFQUFFLE9BQU87RUFDZEMsT0FBTyxFQUFFLEtBQUs7RUFDZEMsR0FBRyxFQUFFO0FBQ1AsQ0FBQztBQUFDO0FBQ0YsTUFBTUMsR0FBRyxHQUFHLElBQUk7QUFBQztBQUNqQixNQUFNQyxHQUFHLEdBQUcsSUFBSTtBQUFDO0FBQ2pCLE1BQU1DLGNBQWMsR0FBRyxLQUFLO0FBQUM7QUFDN0IsTUFBTUMsb0JBQW9CLEdBQUcsY0FBYztBQUMzQyxNQUFNQyxXQUFXLEdBQUcscUJBQXFCOztBQVF6QyxNQUFNQyxhQUFhLEdBQUdDLGVBQUMsQ0FBQ0MsT0FBTyxDQUFDLFNBQVNGLGFBQWEsR0FBSTtFQUd4RCxJQUFJLENBQUNDLGVBQUMsQ0FBQ0UsVUFBVSxDQUFDQyxhQUFJLENBQUNDLGlCQUFpQixDQUFDLEVBQUU7SUFDekMsTUFBTTtNQUFFQyxVQUFVO01BQUVDO0lBQWEsQ0FBQyxHQUFHQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ2xELElBQUlDLFVBQVUsR0FBR0MsYUFBSSxDQUFDQyxPQUFPLENBQUNELGFBQUksQ0FBQ0UsT0FBTyxDQUFDQyxVQUFVLENBQUMsQ0FBQztJQUN2RCxJQUFJQyxVQUFVLEdBQUcsS0FBSztJQUN0QixPQUFPLENBQUNBLFVBQVUsRUFBRTtNQUNsQixNQUFNQyxZQUFZLEdBQUdMLGFBQUksQ0FBQ00sSUFBSSxDQUFDUCxVQUFVLEVBQUUsY0FBYyxDQUFDO01BQzFELElBQUk7UUFDRixJQUFJSCxVQUFVLENBQUNTLFlBQVksQ0FBQyxJQUN4QkUsSUFBSSxDQUFDQyxLQUFLLENBQUNYLFlBQVksQ0FBQ1EsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUNJLElBQUksS0FBS3BCLFdBQVcsRUFBRTtVQUN2RSxPQUFPVSxVQUFVO1FBQ25CO01BQ0YsQ0FBQyxDQUFDLE9BQU9XLEdBQUcsRUFBRSxDQUFDO01BQ2ZYLFVBQVUsR0FBR0MsYUFBSSxDQUFDQyxPQUFPLENBQUNGLFVBQVUsQ0FBQztNQUNyQ0ssVUFBVSxHQUFHTCxVQUFVLENBQUNZLE1BQU0sSUFBSVgsYUFBSSxDQUFDQyxPQUFPLENBQUNGLFVBQVUsQ0FBQyxDQUFDWSxNQUFNO0lBQ25FO0lBQ0EsTUFBTSxJQUFJQyxLQUFLLENBQUUsc0NBQXFDdkIsV0FBWSxpQkFBZ0IsQ0FBQztFQUNyRjtFQUVBLE1BQU13QixJQUFJLEdBQUduQixhQUFJLENBQUNDLGlCQUFpQixDQUFDTixXQUFXLEVBQUVjLFVBQVUsQ0FBQztFQUM1RCxJQUFJLENBQUNVLElBQUksRUFBRTtJQUNULE1BQU0sSUFBSUQsS0FBSyxDQUFFLHNDQUFxQ3ZCLFdBQVksaUJBQWdCLENBQUM7RUFDckY7RUFDQSxPQUFPd0IsSUFBSTtBQUNiLENBQUMsQ0FBQzs7QUFHRixNQUFNQywyQkFBMkIsR0FBR2hCLE9BQU8sQ0FBQ0UsYUFBSSxDQUFDTSxJQUFJLENBQUNoQixhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFBQztBQUNsRyxNQUFNeUIsV0FBVyxHQUFHZixhQUFJLENBQUNNLElBQUksQ0FBQ2hCLGFBQWEsRUFBRSxFQUFFLGNBQWMsQ0FBQztBQUFDO0FBRS9ELFNBQVMwQix5QkFBeUIsQ0FBRUMsT0FBTyxHQUFHSCwyQkFBMkIsRUFBRTtFQUN6RSxJQUFJdkIsZUFBQyxDQUFDMkIsT0FBTyxDQUFDRCxPQUFPLENBQUMsRUFBRTtJQUN0QixNQUFNLElBQUlMLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQztFQUN0RjtFQUNBLE9BQU9yQixlQUFDLENBQUM0QixJQUFJLENBQUM1QixlQUFDLENBQUM2QixJQUFJLENBQUNILE9BQU8sQ0FBQyxDQUFDSSxJQUFJLENBQUNDLGdDQUFlLENBQUMsQ0FBQztBQUN0RDtBQUVBLE1BQU1DLE1BQU0sR0FBRzlDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDOEMsK0JBQStCLElBQ3JEL0MsT0FBTyxDQUFDQyxHQUFHLENBQUMrQyxvQkFBb0IsSUFDaENULHlCQUF5QixFQUFFO0FBQUM7QUFFakMsZUFBZVUsZ0JBQWdCLENBQUVDLEdBQUcsRUFBRUMsUUFBUSxFQUFFO0VBQzlDLE1BQU07SUFBQ0M7RUFBVyxDQUFDLEdBQUcsTUFBTUYsR0FBRyxDQUFDRyxjQUFjLENBQUNGLFFBQVEsQ0FBQztFQUN4RCxPQUFPQyxXQUFXO0FBQ3BCO0FBRUEsU0FBU0Usa0JBQWtCLENBQUVDLE1BQU0sR0FBR0MsU0FBUyxFQUFFLEVBQUU7RUFDakQsT0FBT2pDLGFBQUksQ0FBQ0UsT0FBTyxDQUFDYSxXQUFXLEVBQUVpQixNQUFNLENBQUM7QUFDMUM7QUFFQSxlQUFlRSx5QkFBeUIsQ0FBRUYsTUFBTSxHQUFHQyxTQUFTLEVBQUUsRUFBRTtFQUM5RCxNQUFNRSxPQUFPLEdBQUdKLGtCQUFrQixDQUFDQyxNQUFNLENBQUM7RUFDMUMsTUFBTUksVUFBVSxHQUFHSixNQUFNLEtBQUtuRCxFQUFFLENBQUNFLE9BQU8sR0FBRyxNQUFNLEdBQUcsRUFBRTtFQUN0RCxNQUFNc0QsS0FBSyxHQUFHLE1BQU1DLFdBQUUsQ0FBQ0MsSUFBSSxDQUFFLEdBQUVuRCxvQkFBcUIsSUFBR2dELFVBQVcsRUFBQyxFQUFFO0lBQ25FSSxHQUFHLEVBQUVMLE9BQU87SUFDWk0sUUFBUSxFQUFFLElBQUk7SUFDZEMsTUFBTSxFQUFFLElBQUk7SUFDWkMsS0FBSyxFQUFFLElBQUk7SUFDWEMsTUFBTSxFQUFFO0VBQ1YsQ0FBQyxDQUFDO0VBQ0YsT0FBT3JELGVBQUMsQ0FBQzJCLE9BQU8sQ0FBQ21CLEtBQUssQ0FBQyxHQUNuQnJDLGFBQUksQ0FBQ0UsT0FBTyxDQUFDaUMsT0FBTyxFQUFHLEdBQUUvQyxvQkFBcUIsR0FBRWdELFVBQVcsRUFBQyxDQUFDLEdBQzdEN0MsZUFBQyxDQUFDc0QsS0FBSyxDQUFDUixLQUFLLENBQUM7QUFDcEI7QUFFQSxlQUFlUyxZQUFZLENBQUVDLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7RUFDcEQsTUFBTTtJQUNKQyxPQUFPLEdBQUcsSUFBSTtJQUNkQyxZQUFZLEdBQUc7RUFDakIsQ0FBQyxHQUFHRixJQUFJO0VBQ1IsT0FBTyxDQUFDLE1BQU0sSUFBQUcsY0FBSyxFQUFDO0lBQ2xCTCxHQUFHO0lBQ0hDLE9BQU87SUFDUEUsT0FBTztJQUNQQztFQUNGLENBQUMsQ0FBQyxFQUFFRSxJQUFJO0FBQ1Y7QUFFQSxNQUFNcEIsU0FBUyxHQUFHMUMsZUFBQyxDQUFDQyxPQUFPLENBQUMsU0FBU3lDLFNBQVMsR0FBSTtFQUNoRCxJQUFJcUIsZUFBTSxDQUFDQyxTQUFTLEVBQUUsRUFBRTtJQUN0QixPQUFPMUUsRUFBRSxDQUFDRSxPQUFPO0VBQ25CO0VBQ0EsSUFBSXVFLGVBQU0sQ0FBQ0UsS0FBSyxFQUFFLEVBQUU7SUFDbEIsT0FBTzNFLEVBQUUsQ0FBQ0csR0FBRztFQUNmO0VBQ0EsT0FBT0gsRUFBRSxDQUFDQyxLQUFLO0FBQ2pCLENBQUMsQ0FBQztBQUFDO0FBRUgsTUFBTTJFLFNBQVMsR0FBR2xFLGVBQUMsQ0FBQ0MsT0FBTyxDQUFDLGVBQWVpRSxTQUFTLEdBQUk7RUFDdEQsT0FBTztJQUNMaEQsSUFBSSxFQUFFd0IsU0FBUyxFQUFFO0lBQ2pCeUIsSUFBSSxFQUFFLE1BQU1KLGVBQU0sQ0FBQ0ksSUFBSSxFQUFFO0lBQ3pCQyxZQUFZLEVBQUVMLGVBQU0sQ0FBQ0MsU0FBUyxFQUFFLEdBQUcsSUFBSSxHQUFHaEUsZUFBQyxDQUFDcUUsSUFBSSxDQUFDLE1BQU0sSUFBQUMsa0JBQUksRUFBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUM5RSxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBQUM7QUFFSCxNQUFNQyxxQkFBcUIsR0FBR3ZFLGVBQUMsQ0FBQ0MsT0FBTyxDQUFDLE1BQU0sSUFBSXVFLGtCQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7O0FBU3hFLFNBQVNDLGlCQUFpQixDQUFFQyxHQUFHLEVBQUVDLFNBQVMsR0FBRyxJQUFJLEVBQUU7RUFDakQsT0FBT0oscUJBQXFCLEVBQUUsQ0FBQ0ssT0FBTyxDQUFDQyx1QkFBdUIsQ0FBQ0gsR0FBRyxFQUFFQyxTQUFTLENBQUM7QUFDaEYifQ==
|
|
116
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDRF9DRE4iLCJwcm9jZXNzIiwiZW52IiwibnBtX2NvbmZpZ19jaHJvbWVkcml2ZXJfY2RudXJsIiwiQ0hST01FRFJJVkVSX0NETlVSTCIsIk9TIiwibGludXgiLCJ3aW5kb3dzIiwibWFjIiwiWDY0IiwiWDg2IiwiTTFfQVJDSF9TVUZGSVgiLCJDRF9FWEVDVVRBQkxFX1BSRUZJWCIsIk1PRFVMRV9OQU1FIiwiZ2V0TW9kdWxlUm9vdCIsIl8iLCJtZW1vaXplIiwicm9vdCIsIm5vZGUiLCJnZXRNb2R1bGVSb290U3luYyIsIl9fZmlsZW5hbWUiLCJFcnJvciIsIkNIUk9NRURSSVZFUl9DSFJPTUVfTUFQUElORyIsInJlcXVpcmUiLCJwYXRoIiwiam9pbiIsIkNEX0JBU0VfRElSIiwiZ2V0TW9zdFJlY2VudENocm9tZWRyaXZlciIsIm1hcHBpbmciLCJpc0VtcHR5IiwibGFzdCIsImtleXMiLCJzb3J0IiwiY29tcGFyZVZlcnNpb25zIiwiQ0RfVkVSIiwibnBtX2NvbmZpZ19jaHJvbWVkcml2ZXJfdmVyc2lvbiIsIkNIUk9NRURSSVZFUl9WRVJTSU9OIiwiZ2V0Q2hyb21lVmVyc2lvbiIsImFkYiIsImJ1bmRsZUlkIiwidmVyc2lvbk5hbWUiLCJnZXRQYWNrYWdlSW5mbyIsImdldENocm9tZWRyaXZlckRpciIsIm9zTmFtZSIsImdldE9zTmFtZSIsInJlc29sdmUiLCJnZXRDaHJvbWVkcml2ZXJCaW5hcnlQYXRoIiwicm9vdERpciIsInBhdGhTdWZmaXgiLCJwYXRocyIsImZzIiwiZ2xvYiIsImN3ZCIsImFic29sdXRlIiwibm9jYXNlIiwibm9kaXIiLCJzdHJpY3QiLCJmaXJzdCIsInJldHJpZXZlRGF0YSIsInVybCIsImhlYWRlcnMiLCJvcHRzIiwidGltZW91dCIsInJlc3BvbnNlVHlwZSIsImF4aW9zIiwiZGF0YSIsInN5c3RlbSIsImlzV2luZG93cyIsImlzTWFjIiwiZ2V0T3NJbmZvIiwibmFtZSIsImFyY2giLCJoYXJkd2FyZU5hbWUiLCJ0cmltIiwiZXhlYyIsImdldEJhc2VEcml2ZXJJbnN0YW5jZSIsIkJhc2VEcml2ZXIiLCJnZW5lcmF0ZUxvZ1ByZWZpeCIsIm9iaiIsInNlc3Npb25JZCIsImhlbHBlcnMiLCJnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgc3lzdGVtLCBmcywgbm9kZSB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBCYXNlRHJpdmVyIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGNvbXBhcmVWZXJzaW9ucyB9IGZyb20gJ2NvbXBhcmUtdmVyc2lvbnMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuXG5jb25zdCBDRF9DRE4gPSBwcm9jZXNzLmVudi5ucG1fY29uZmlnX2Nocm9tZWRyaXZlcl9jZG51cmxcbiAgfHwgcHJvY2Vzcy5lbnYuQ0hST01FRFJJVkVSX0NETlVSTFxuICB8fCAnaHR0cHM6Ly9jaHJvbWVkcml2ZXIuc3RvcmFnZS5nb29nbGVhcGlzLmNvbSc7XG5jb25zdCBPUyA9IHtcbiAgbGludXg6ICdsaW51eCcsXG4gIHdpbmRvd3M6ICd3aW4nLFxuICBtYWM6ICdtYWMnXG59O1xuY29uc3QgWDY0ID0gJzY0JztcbmNvbnN0IFg4NiA9ICczMic7XG5jb25zdCBNMV9BUkNIX1NVRkZJWCA9ICdfbTEnO1xuY29uc3QgQ0RfRVhFQ1VUQUJMRV9QUkVGSVggPSAnY2hyb21lZHJpdmVyJztcbmNvbnN0IE1PRFVMRV9OQU1FID0gJ2FwcGl1bS1jaHJvbWVkcml2ZXInO1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHBhdGggdG8gdGhlIGN1cnJlbnQgbW9kdWxlJ3Mgcm9vdCBmb2xkZXJcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZnVsbCBwYXRoIHRvIG1vZHVsZSByb290XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGN1cnJlbnQgbW9kdWxlIHJvb3QgZm9sZGVyIGNhbm5vdCBiZSBkZXRlcm1pbmVkXG4gKi9cbmNvbnN0IGdldE1vZHVsZVJvb3QgPSBfLm1lbW9pemUoZnVuY3Rpb24gZ2V0TW9kdWxlUm9vdCAoKSB7XG4gIGNvbnN0IHJvb3QgPSBub2RlLmdldE1vZHVsZVJvb3RTeW5jKE1PRFVMRV9OQU1FLCBfX2ZpbGVuYW1lKTtcbiAgaWYgKCFyb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCB0aGUgcm9vdCBmb2xkZXIgb2YgdGhlICR7TU9EVUxFX05BTUV9IE5vZGUuanMgbW9kdWxlYCk7XG4gIH1cbiAgcmV0dXJuIHJvb3Q7XG59KTtcblxuLy8gQ2hyb21lZHJpdmVyIHZlcnNpb246IG1pbmltdW0gQ2hyb21lIHZlcnNpb25cbmNvbnN0IENIUk9NRURSSVZFUl9DSFJPTUVfTUFQUElORyA9IHJlcXVpcmUocGF0aC5qb2luKGdldE1vZHVsZVJvb3QoKSwgJ2NvbmZpZycsICdtYXBwaW5nLmpzb24nKSk7XG5jb25zdCBDRF9CQVNFX0RJUiA9IHBhdGguam9pbihnZXRNb2R1bGVSb290KCksICdjaHJvbWVkcml2ZXInKTtcblxuZnVuY3Rpb24gZ2V0TW9zdFJlY2VudENocm9tZWRyaXZlciAobWFwcGluZyA9IENIUk9NRURSSVZFUl9DSFJPTUVfTUFQUElORykge1xuICBpZiAoXy5pc0VtcHR5KG1hcHBpbmcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZ2V0IG1vc3QgcmVjZW50IENocm9tZWRyaXZlciB2ZXJzaW9uIGZyb20gZW1wdHkgbWFwcGluZycpO1xuICB9XG4gIHJldHVybiBfLmxhc3QoXy5rZXlzKG1hcHBpbmcpLnNvcnQoY29tcGFyZVZlcnNpb25zKSk7XG59XG5cbmNvbnN0IENEX1ZFUiA9IHByb2Nlc3MuZW52Lm5wbV9jb25maWdfY2hyb21lZHJpdmVyX3ZlcnNpb25cbiAgfHwgcHJvY2Vzcy5lbnYuQ0hST01FRFJJVkVSX1ZFUlNJT05cbiAgfHwgZ2V0TW9zdFJlY2VudENocm9tZWRyaXZlcigpO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRDaHJvbWVWZXJzaW9uIChhZGIsIGJ1bmRsZUlkKSB7XG4gIGNvbnN0IHt2ZXJzaW9uTmFtZX0gPSBhd2FpdCBhZGIuZ2V0UGFja2FnZUluZm8oYnVuZGxlSWQpO1xuICByZXR1cm4gdmVyc2lvbk5hbWU7XG59XG5cbmZ1bmN0aW9uIGdldENocm9tZWRyaXZlckRpciAob3NOYW1lID0gZ2V0T3NOYW1lKCkpIHtcbiAgcmV0dXJuIHBhdGgucmVzb2x2ZShDRF9CQVNFX0RJUiwgb3NOYW1lKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q2hyb21lZHJpdmVyQmluYXJ5UGF0aCAob3NOYW1lID0gZ2V0T3NOYW1lKCkpIHtcbiAgY29uc3Qgcm9vdERpciA9IGdldENocm9tZWRyaXZlckRpcihvc05hbWUpO1xuICBjb25zdCBwYXRoU3VmZml4ID0gb3NOYW1lID09PSBPUy53aW5kb3dzID8gJy5leGUnIDogJyc7XG4gIGNvbnN0IHBhdGhzID0gYXdhaXQgZnMuZ2xvYihgJHtDRF9FWEVDVVRBQkxFX1BSRUZJWH0qJHtwYXRoU3VmZml4fWAsIHtcbiAgICBjd2Q6IHJvb3REaXIsXG4gICAgYWJzb2x1dGU6IHRydWUsXG4gICAgbm9jYXNlOiB0cnVlLFxuICAgIG5vZGlyOiB0cnVlLFxuICAgIHN0cmljdDogZmFsc2UsXG4gIH0pO1xuICByZXR1cm4gXy5pc0VtcHR5KHBhdGhzKVxuICAgID8gcGF0aC5yZXNvbHZlKHJvb3REaXIsIGAke0NEX0VYRUNVVEFCTEVfUFJFRklYfSR7cGF0aFN1ZmZpeH1gKVxuICAgIDogXy5maXJzdChwYXRocyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlRGF0YSAodXJsLCBoZWFkZXJzLCBvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRpbWVvdXQgPSA1MDAwLFxuICAgIHJlc3BvbnNlVHlwZSA9ICd0ZXh0JyxcbiAgfSA9IG9wdHM7XG4gIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgIHVybCxcbiAgICBoZWFkZXJzLFxuICAgIHRpbWVvdXQsXG4gICAgcmVzcG9uc2VUeXBlLFxuICB9KSkuZGF0YTtcbn1cblxuY29uc3QgZ2V0T3NOYW1lID0gXy5tZW1vaXplKGZ1bmN0aW9uIGdldE9zTmFtZSAoKSB7XG4gIGlmIChzeXN0ZW0uaXNXaW5kb3dzKCkpIHtcbiAgICByZXR1cm4gT1Mud2luZG93cztcbiAgfVxuICBpZiAoc3lzdGVtLmlzTWFjKCkpIHtcbiAgICByZXR1cm4gT1MubWFjO1xuICB9XG4gIHJldHVybiBPUy5saW51eDtcbn0pO1xuXG5jb25zdCBnZXRPc0luZm8gPSBfLm1lbW9pemUoYXN5bmMgZnVuY3Rpb24gZ2V0T3NJbmZvICgpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBnZXRPc05hbWUoKSxcbiAgICBhcmNoOiBhd2FpdCBzeXN0ZW0uYXJjaCgpLFxuICAgIGhhcmR3YXJlTmFtZTogc3lzdGVtLmlzV2luZG93cygpID8gbnVsbCA6IF8udHJpbShhd2FpdCBleGVjKCd1bmFtZScsIFsnLW0nXSkpLFxuICB9O1xufSk7XG5cbmNvbnN0IGdldEJhc2VEcml2ZXJJbnN0YW5jZSA9IF8ubWVtb2l6ZSgoKSA9PiBuZXcgQmFzZURyaXZlcih7fSwgZmFsc2UpKTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgbG9nIHByZWZpeCBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb2JqIGxvZyBvd25lciBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmc/fSBzZXNzaW9uSWQgT3B0aW9uYWwgc2Vzc2lvbiBpZGVudGlmaWVyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUxvZ1ByZWZpeCAob2JqLCBzZXNzaW9uSWQgPSBudWxsKSB7XG4gIHJldHVybiBnZXRCYXNlRHJpdmVySW5zdGFuY2UoKS5oZWxwZXJzLmdlbmVyYXRlRHJpdmVyTG9nUHJlZml4KG9iaiwgc2Vzc2lvbklkKTtcbn1cblxuXG5leHBvcnQge1xuICBnZXRDaHJvbWVWZXJzaW9uLCBnZXRDaHJvbWVkcml2ZXJEaXIsIGdldENocm9tZWRyaXZlckJpbmFyeVBhdGgsIGdldE9zTmFtZSxcbiAgQ0RfQkFTRV9ESVIsIENEX0NETiwgQ0RfVkVSLCBDSFJPTUVEUklWRVJfQ0hST01FX01BUFBJTkcsIGdldE1vc3RSZWNlbnRDaHJvbWVkcml2ZXIsXG4gIHJldHJpZXZlRGF0YSwgZ2V0T3NJbmZvLCBPUywgWDY0LCBYODYsIE0xX0FSQ0hfU1VGRklYLCBnZW5lcmF0ZUxvZ1ByZWZpeCxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsTUFBTSxHQUFHQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsOEJBQThCLElBQ3BERixPQUFPLENBQUNDLEdBQUcsQ0FBQ0UsbUJBQW1CLElBQy9CLDZDQUE2QztBQUFDO0FBQ25ELE1BQU1DLEVBQUUsR0FBRztFQUNUQyxLQUFLLEVBQUUsT0FBTztFQUNkQyxPQUFPLEVBQUUsS0FBSztFQUNkQyxHQUFHLEVBQUU7QUFDUCxDQUFDO0FBQUM7QUFDRixNQUFNQyxHQUFHLEdBQUcsSUFBSTtBQUFDO0FBQ2pCLE1BQU1DLEdBQUcsR0FBRyxJQUFJO0FBQUM7QUFDakIsTUFBTUMsY0FBYyxHQUFHLEtBQUs7QUFBQztBQUM3QixNQUFNQyxvQkFBb0IsR0FBRyxjQUFjO0FBQzNDLE1BQU1DLFdBQVcsR0FBRyxxQkFBcUI7O0FBUXpDLE1BQU1DLGFBQWEsR0FBR0MsZUFBQyxDQUFDQyxPQUFPLENBQUMsU0FBU0YsYUFBYSxHQUFJO0VBQ3hELE1BQU1HLElBQUksR0FBR0MsYUFBSSxDQUFDQyxpQkFBaUIsQ0FBQ04sV0FBVyxFQUFFTyxVQUFVLENBQUM7RUFDNUQsSUFBSSxDQUFDSCxJQUFJLEVBQUU7SUFDVCxNQUFNLElB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
|
package/build/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["CD_CDN","process","env","npm_config_chromedriver_cdnurl","CHROMEDRIVER_CDNURL","OS","linux","windows","mac","X64","X86","M1_ARCH_SUFFIX","CD_EXECUTABLE_PREFIX","MODULE_NAME","getModuleRoot","_","memoize","
|
|
1
|
+
{"version":3,"file":"utils.js","names":["CD_CDN","process","env","npm_config_chromedriver_cdnurl","CHROMEDRIVER_CDNURL","OS","linux","windows","mac","X64","X86","M1_ARCH_SUFFIX","CD_EXECUTABLE_PREFIX","MODULE_NAME","getModuleRoot","_","memoize","root","node","getModuleRootSync","__filename","Error","CHROMEDRIVER_CHROME_MAPPING","require","path","join","CD_BASE_DIR","getMostRecentChromedriver","mapping","isEmpty","last","keys","sort","compareVersions","CD_VER","npm_config_chromedriver_version","CHROMEDRIVER_VERSION","getChromeVersion","adb","bundleId","versionName","getPackageInfo","getChromedriverDir","osName","getOsName","resolve","getChromedriverBinaryPath","rootDir","pathSuffix","paths","fs","glob","cwd","absolute","nocase","nodir","strict","first","retrieveData","url","headers","opts","timeout","responseType","axios","data","system","isWindows","isMac","getOsInfo","name","arch","hardwareName","trim","exec","getBaseDriverInstance","BaseDriver","generateLogPrefix","obj","sessionId","helpers","generateDriverLogPrefix"],"sources":["../../lib/utils.js"],"sourcesContent":["import _ from 'lodash';\nimport { system, fs, node } from '@appium/support';\nimport { BaseDriver } from '@appium/base-driver';\nimport path from 'path';\nimport { compareVersions } from 'compare-versions';\nimport axios from 'axios';\nimport { exec } from 'teen_process';\n\nconst CD_CDN = process.env.npm_config_chromedriver_cdnurl\n || process.env.CHROMEDRIVER_CDNURL\n || 'https://chromedriver.storage.googleapis.com';\nconst OS = {\n linux: 'linux',\n windows: 'win',\n mac: 'mac'\n};\nconst X64 = '64';\nconst X86 = '32';\nconst M1_ARCH_SUFFIX = '_m1';\nconst CD_EXECUTABLE_PREFIX = 'chromedriver';\nconst MODULE_NAME = 'appium-chromedriver';\n\n/**\n * Calculates the path to the current module's root folder\n *\n * @returns {string} The full path to module root\n * @throws {Error} If the current module root folder cannot be determined\n */\nconst getModuleRoot = _.memoize(function getModuleRoot () {\n const root = node.getModuleRootSync(MODULE_NAME, __filename);\n if (!root) {\n throw new Error(`Cannot find the root folder of the ${MODULE_NAME} Node.js module`);\n }\n return root;\n});\n\n// Chromedriver version: minimum Chrome version\nconst CHROMEDRIVER_CHROME_MAPPING = require(path.join(getModuleRoot(), 'config', 'mapping.json'));\nconst CD_BASE_DIR = path.join(getModuleRoot(), 'chromedriver');\n\nfunction getMostRecentChromedriver (mapping = CHROMEDRIVER_CHROME_MAPPING) {\n if (_.isEmpty(mapping)) {\n throw new Error('Unable to get most recent Chromedriver version from empty mapping');\n }\n return _.last(_.keys(mapping).sort(compareVersions));\n}\n\nconst CD_VER = process.env.npm_config_chromedriver_version\n || process.env.CHROMEDRIVER_VERSION\n || getMostRecentChromedriver();\n\nasync function getChromeVersion (adb, bundleId) {\n const {versionName} = await adb.getPackageInfo(bundleId);\n return versionName;\n}\n\nfunction getChromedriverDir (osName = getOsName()) {\n return path.resolve(CD_BASE_DIR, osName);\n}\n\nasync function getChromedriverBinaryPath (osName = getOsName()) {\n const rootDir = getChromedriverDir(osName);\n const pathSuffix = osName === OS.windows ? '.exe' : '';\n const paths = await fs.glob(`${CD_EXECUTABLE_PREFIX}*${pathSuffix}`, {\n cwd: rootDir,\n absolute: true,\n nocase: true,\n nodir: true,\n strict: false,\n });\n return _.isEmpty(paths)\n ? path.resolve(rootDir, `${CD_EXECUTABLE_PREFIX}${pathSuffix}`)\n : _.first(paths);\n}\n\nasync function retrieveData (url, headers, opts = {}) {\n const {\n timeout = 5000,\n responseType = 'text',\n } = opts;\n return (await axios({\n url,\n headers,\n timeout,\n responseType,\n })).data;\n}\n\nconst getOsName = _.memoize(function getOsName () {\n if (system.isWindows()) {\n return OS.windows;\n }\n if (system.isMac()) {\n return OS.mac;\n }\n return OS.linux;\n});\n\nconst getOsInfo = _.memoize(async function getOsInfo () {\n return {\n name: getOsName(),\n arch: await system.arch(),\n hardwareName: system.isWindows() ? null : _.trim(await exec('uname', ['-m'])),\n };\n});\n\nconst getBaseDriverInstance = _.memoize(() => new BaseDriver({}, false));\n\n/**\n * Generates log prefix string\n *\n * @param {object} obj log owner instance\n * @param {string?} sessionId Optional session identifier\n * @returns {string}\n */\nfunction generateLogPrefix (obj, sessionId = null) {\n return getBaseDriverInstance().helpers.generateDriverLogPrefix(obj, sessionId);\n}\n\n\nexport {\n getChromeVersion, getChromedriverDir, getChromedriverBinaryPath, getOsName,\n CD_BASE_DIR, CD_CDN, CD_VER, CHROMEDRIVER_CHROME_MAPPING, getMostRecentChromedriver,\n retrieveData, getOsInfo, OS, X64, X86, M1_ARCH_SUFFIX, generateLogPrefix,\n};\n"],"mappings":"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"}
|
package/lib/chromedriver.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// transpile:main
|
|
2
2
|
|
|
3
3
|
import events from 'events';
|
|
4
|
-
import { JWProxy, PROTOCOLS } from 'appium/driver';
|
|
4
|
+
import { JWProxy, PROTOCOLS } from '@appium/base-driver';
|
|
5
5
|
import cp from 'child_process';
|
|
6
|
-
import { system, fs, logger, util } from 'appium/support';
|
|
6
|
+
import { system, fs, logger, util } from '@appium/support';
|
|
7
7
|
import { retryInterval, asyncmap } from 'asyncbox';
|
|
8
8
|
import { SubProcess, exec } from 'teen_process';
|
|
9
9
|
import B from 'bluebird';
|
package/lib/install.js
CHANGED
package/lib/protocol-helpers.js
CHANGED
package/lib/storage-client.js
CHANGED
|
@@ -7,7 +7,7 @@ import xpath from 'xpath';
|
|
|
7
7
|
import { DOMParser } from '@xmldom/xmldom';
|
|
8
8
|
import B from 'bluebird';
|
|
9
9
|
import path from 'path';
|
|
10
|
-
import { system, fs, logger, tempDir, zip, util, net } from 'appium/support';
|
|
10
|
+
import { system, fs, logger, tempDir, zip, util, net } from '@appium/support';
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
const TIMEOUT_MS = 15000;
|
package/lib/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { system, fs, node } from 'appium/support';
|
|
3
|
-
import { BaseDriver } from 'appium/driver';
|
|
2
|
+
import { system, fs, node } from '@appium/support';
|
|
3
|
+
import { BaseDriver } from '@appium/base-driver';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { compareVersions } from 'compare-versions';
|
|
6
6
|
import axios from 'axios';
|
|
@@ -27,26 +27,6 @@ const MODULE_NAME = 'appium-chromedriver';
|
|
|
27
27
|
* @throws {Error} If the current module root folder cannot be determined
|
|
28
28
|
*/
|
|
29
29
|
const getModuleRoot = _.memoize(function getModuleRoot () {
|
|
30
|
-
// TODO: Get rid of the condition after a while, so clients have enough time to bump their server to v44
|
|
31
|
-
// TODO: Commit date: 09.09.2022
|
|
32
|
-
if (!_.isFunction(node.getModuleRootSync)) {
|
|
33
|
-
const { existsSync, readFileSync } = require('fs');
|
|
34
|
-
let currentDir = path.dirname(path.resolve(__filename));
|
|
35
|
-
let isAtFsRoot = false;
|
|
36
|
-
while (!isAtFsRoot) {
|
|
37
|
-
const manifestPath = path.join(currentDir, 'package.json');
|
|
38
|
-
try {
|
|
39
|
-
if (existsSync(manifestPath) &&
|
|
40
|
-
JSON.parse(readFileSync(manifestPath, 'utf8')).name === MODULE_NAME) {
|
|
41
|
-
return currentDir;
|
|
42
|
-
}
|
|
43
|
-
} catch (ign) {}
|
|
44
|
-
currentDir = path.dirname(currentDir);
|
|
45
|
-
isAtFsRoot = currentDir.length <= path.dirname(currentDir).length;
|
|
46
|
-
}
|
|
47
|
-
throw new Error(`Cannot find the root folder of the ${MODULE_NAME} Node.js module`);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
30
|
const root = node.getModuleRootSync(MODULE_NAME, __filename);
|
|
51
31
|
if (!root) {
|
|
52
32
|
throw new Error(`Cannot find the root folder of the ${MODULE_NAME} Node.js module`);
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"chrome",
|
|
7
7
|
"android"
|
|
8
8
|
],
|
|
9
|
-
"version": "5.2.
|
|
9
|
+
"version": "5.2.7",
|
|
10
10
|
"author": "Appium Contributors",
|
|
11
11
|
"license": "Apache-2.0",
|
|
12
12
|
"repository": {
|
|
@@ -41,9 +41,12 @@
|
|
|
41
41
|
"lib",
|
|
42
42
|
"build/index.js",
|
|
43
43
|
"build/lib",
|
|
44
|
-
"config/mapping.json"
|
|
44
|
+
"config/mapping.json",
|
|
45
|
+
"CHANGELOG.md"
|
|
45
46
|
],
|
|
46
47
|
"dependencies": {
|
|
48
|
+
"@appium/base-driver": "^8.7.3",
|
|
49
|
+
"@appium/support": "^2.61.0",
|
|
47
50
|
"@babel/runtime": "^7.0.0",
|
|
48
51
|
"@xmldom/xmldom": "^0.x",
|
|
49
52
|
"asyncbox": "^2.0.2",
|
|
@@ -73,9 +76,6 @@
|
|
|
73
76
|
"test": "mocha --exit --timeout 1m \"./test/unit/**/*-specs.js\"",
|
|
74
77
|
"e2e-test": "mocha --exit --timeout 10m \"./test/functional/**/*-specs.js\""
|
|
75
78
|
},
|
|
76
|
-
"peerDependencies": {
|
|
77
|
-
"appium": "^2.0.0-beta.44"
|
|
78
|
-
},
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@appium/eslint-config-appium": "^6.0.0",
|
|
81
81
|
"@appium/test-support": "^2.0.0",
|
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
"@babel/plugin-transform-runtime": "^7.18.10",
|
|
86
86
|
"@babel/preset-env": "^7.18.10",
|
|
87
87
|
"@babel/register": "^7.18.9",
|
|
88
|
+
"@semantic-release/changelog": "^6.0.1",
|
|
88
89
|
"@semantic-release/git": "^10.0.1",
|
|
89
90
|
"babel-plugin-source-map-support": "^2.2.0",
|
|
90
91
|
"chai": "^4.1.2",
|