appium-adb 9.10.11 → 9.10.13
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/build/index.js +1 -5
- package/build/lib/adb.js +1 -26
- package/build/lib/adb.js.map +1 -1
- package/build/lib/helpers.js +7 -211
- package/build/lib/helpers.js.map +1 -1
- package/build/lib/logcat.js +1 -46
- package/build/lib/logcat.js.map +1 -1
- package/build/lib/logger.js +1 -5
- package/build/lib/logger.js.map +1 -1
- package/build/lib/tools/aab-utils.js +1 -42
- package/build/lib/tools/aab-utils.js.map +1 -1
- package/build/lib/tools/adb-commands.js +6 -163
- package/build/lib/tools/adb-commands.js.map +1 -1
- package/build/lib/tools/adb-emu-commands.js +2 -66
- package/build/lib/tools/adb-emu-commands.js.map +1 -1
- package/build/lib/tools/android-manifest.js +1 -60
- package/build/lib/tools/android-manifest.js.map +1 -1
- package/build/lib/tools/apk-signing.js +1 -77
- package/build/lib/tools/apk-signing.js.map +1 -1
- package/build/lib/tools/apk-utils.js +4 -229
- package/build/lib/tools/apk-utils.js.map +1 -1
- package/build/lib/tools/apks-utils.js +1 -53
- package/build/lib/tools/apks-utils.js.map +1 -1
- package/build/lib/tools/index.js +1 -17
- package/build/lib/tools/index.js.map +1 -1
- package/build/lib/tools/keyboard-commands.js +1 -12
- package/build/lib/tools/keyboard-commands.js.map +1 -1
- package/build/lib/tools/lockmgmt.js +1 -46
- package/build/lib/tools/lockmgmt.js.map +1 -1
- package/build/lib/tools/settings-client-commands.js +3 -71
- package/build/lib/tools/settings-client-commands.js.map +1 -1
- package/build/lib/tools/system-calls.js +5 -190
- package/build/lib/tools/system-calls.js.map +1 -1
- package/lib/tools/settings-client-commands.js +2 -2
- package/package.json +1 -1
package/build/lib/logcat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logcat.js","names":["EventEmitter","events","log","logger","getLogger","MAX_BUFFER_SIZE","LOGCAT_PROC_STARTUP_TIMEOUT","SUPPORTED_FORMATS","SUPPORTED_PRIORITIES","DEFAULT_PRIORITY","DEFAULT_TAG","DEFAULT_FORMAT","requireFormat","format","includes","info","requireSpec","spec","tag","priority","split","resultTag","some","p","_","toLower","formatFilterSpecs","filterSpecs","isArray","filter","isString","startsWith","map","Logcat","constructor","opts","adb","clearLogs","clearDeviceLogsOnStart","debug","debugTrace","maxBufferSize","logs","logIdxSinceLastRequest","startCapture","started","B","_resolve","_reject","resolve","args","reject","clear","cmd","defaultArgs","util","quote","path","proc","SubProcess","on","code","signal","error","warn","lines","line","test","Error","outputHandler","trim","start","setTimeout","output","prefix","length","shift","outputObj","timestamp","Date","now","level","message","push","emit","isTrace","stopCapture","isRunning","removeAllListeners","stop","getLogs","result","slice","getAllLogs","exec","err","stderr"],"sources":["../../lib/logcat.js"],"sourcesContent":["import _ from 'lodash';\nimport { logger, util } from '@appium/support';\nimport B from 'bluebird';\nimport events from 'events';\nconst { EventEmitter } = events;\nimport { SubProcess, exec } from 'teen_process';\n\nconst log = logger.getLogger('Logcat');\nconst MAX_BUFFER_SIZE = 10000;\nconst LOGCAT_PROC_STARTUP_TIMEOUT = 10000;\nconst SUPPORTED_FORMATS = ['brief', 'process', 'tag', 'thread', 'raw', 'time', 'threadtime', 'long'];\nconst SUPPORTED_PRIORITIES = ['v', 'd', 'i', 'w', 'e', 'f', 's'];\nconst DEFAULT_PRIORITY = 'v';\nconst DEFAULT_TAG = '*';\nconst DEFAULT_FORMAT = 'threadtime';\n\nfunction requireFormat (format) {\n if (!SUPPORTED_FORMATS.includes(format)) {\n log.info(`The format value '${format}' is unknown. Supported values are: ${SUPPORTED_FORMATS}`);\n log.info(`Defaulting to '${DEFAULT_FORMAT}'`);\n return DEFAULT_FORMAT;\n }\n return format;\n}\n\nfunction requireSpec (spec) {\n const [tag, priority] = spec.split(':');\n let resultTag = tag;\n if (!resultTag) {\n log.info(`The tag value in spec '${spec}' cannot be empty`);\n log.info(`Defaulting to '${DEFAULT_TAG}'`);\n resultTag = DEFAULT_TAG;\n }\n if (!priority) {\n log.info(`The priority value in spec '${spec}' is empty. Defaulting to Verbose (${DEFAULT_PRIORITY})`);\n return `${resultTag}:${DEFAULT_PRIORITY}`;\n }\n if (!SUPPORTED_PRIORITIES.some((p) => _.toLower(priority) === _.toLower(p))) {\n log.info(`The priority value in spec '${spec}' is unknown. Supported values are: ${SUPPORTED_PRIORITIES}`);\n log.info(`Defaulting to Verbose (${DEFAULT_PRIORITY})`);\n return `${resultTag}:${DEFAULT_PRIORITY}`;\n }\n return spec;\n}\n\nfunction formatFilterSpecs (filterSpecs) {\n if (!_.isArray(filterSpecs)) {\n filterSpecs = [filterSpecs];\n }\n return filterSpecs\n .filter((spec) => spec && _.isString(spec) && !spec.startsWith('-'))\n .map((spec) => spec.includes(':') ? requireSpec(spec) : spec);\n}\n\n\nclass Logcat extends EventEmitter {\n constructor (opts = {}) {\n super();\n this.adb = opts.adb;\n this.clearLogs = opts.clearDeviceLogsOnStart || false;\n this.debug = opts.debug;\n this.debugTrace = opts.debugTrace;\n this.maxBufferSize = opts.maxBufferSize || MAX_BUFFER_SIZE;\n this.logs = [];\n this.logIdxSinceLastRequest = 0;\n }\n\n async startCapture (opts = {}) {\n let started = false;\n return await new B(async (_resolve, _reject) => { // eslint-disable-line promise/param-names\n const resolve = function (...args) {\n started = true;\n _resolve(...args);\n };\n const reject = function (...args) {\n started = true;\n _reject(...args);\n };\n\n if (this.clearLogs) {\n await this.clear();\n }\n\n const {\n format = DEFAULT_FORMAT,\n filterSpecs = [],\n } = opts;\n const cmd = [\n ...this.adb.defaultArgs,\n 'logcat',\n '-v', requireFormat(format),\n ...formatFilterSpecs(filterSpecs),\n ];\n log.debug(`Starting logs capture with command: ${util.quote([this.adb.path, ...cmd])}`);\n this.proc = new SubProcess(this.adb.path, cmd);\n this.proc.on('exit', (code, signal) => {\n log.error(`Logcat terminated with code ${code}, signal ${signal}`);\n this.proc = null;\n if (!started) {\n log.warn('Logcat not started. Continuing');\n resolve();\n }\n });\n this.proc.on('lines-stderr', (lines) => {\n for (let line of lines) {\n if (/execvp\\(\\)/.test(line)) {\n log.error('Logcat process failed to start');\n reject(new Error(`Logcat process failed to start. stderr: ${line}`));\n }\n this.outputHandler(_.trim(line), 'STDERR: ');\n }\n resolve();\n });\n this.proc.on('lines-stdout', (lines) => {\n resolve();\n for (let line of lines) {\n this.outputHandler(_.trim(line));\n }\n });\n await this.proc.start(0);\n // resolve after a timeout, even if no output was recorded\n setTimeout(resolve, LOGCAT_PROC_STARTUP_TIMEOUT);\n });\n }\n\n outputHandler (output, prefix = '') {\n if (!output) {\n return;\n }\n\n if (this.logs.length >= this.maxBufferSize) {\n this.logs.shift();\n if (this.logIdxSinceLastRequest > 0) {\n --this.logIdxSinceLastRequest;\n }\n }\n const outputObj = {\n timestamp: Date.now(),\n level: 'ALL',\n message: output,\n };\n this.logs.push(outputObj);\n this.emit('output', outputObj);\n const isTrace = /W\\/Trace/.test(output);\n if (this.debug && (!isTrace || this.debugTrace)) {\n log.debug(prefix + output);\n }\n }\n\n async stopCapture () {\n log.debug('Stopping logcat capture');\n if (!this.proc || !this.proc.isRunning) {\n log.debug('Logcat already stopped');\n this.proc = null;\n return;\n }\n this.proc.removeAllListeners('exit');\n await this.proc.stop();\n this.proc = null;\n }\n\n getLogs () {\n if (this.logIdxSinceLastRequest < this.logs.length) {\n const result = this.logs.slice(this.logIdxSinceLastRequest);\n this.logIdxSinceLastRequest = this.logs.length;\n return result;\n }\n return [];\n }\n\n getAllLogs () {\n return this.logs;\n }\n\n async clear () {\n log.debug('Clearing logcat logs from device');\n try {\n const args = [...this.adb.defaultArgs, 'logcat', '-c'];\n await exec(this.adb.path, args);\n } catch (err) {\n log.warn(`Failed to clear logcat logs: ${err.stderr || err.message}`);\n }\n }\n}\n\nexport default Logcat;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logcat.js","names":["EventEmitter","events","log","logger","getLogger","MAX_BUFFER_SIZE","LOGCAT_PROC_STARTUP_TIMEOUT","SUPPORTED_FORMATS","SUPPORTED_PRIORITIES","DEFAULT_PRIORITY","DEFAULT_TAG","DEFAULT_FORMAT","requireFormat","format","includes","info","requireSpec","spec","tag","priority","split","resultTag","some","p","_","toLower","formatFilterSpecs","filterSpecs","isArray","filter","isString","startsWith","map","Logcat","constructor","opts","adb","clearLogs","clearDeviceLogsOnStart","debug","debugTrace","maxBufferSize","logs","logIdxSinceLastRequest","startCapture","started","B","_resolve","_reject","resolve","args","reject","clear","cmd","defaultArgs","util","quote","path","proc","SubProcess","on","code","signal","error","warn","lines","line","test","Error","outputHandler","trim","start","setTimeout","output","prefix","length","shift","outputObj","timestamp","Date","now","level","message","push","emit","isTrace","stopCapture","isRunning","removeAllListeners","stop","getLogs","result","slice","getAllLogs","exec","err","stderr"],"sources":["../../lib/logcat.js"],"sourcesContent":["import _ from 'lodash';\nimport { logger, util } from '@appium/support';\nimport B from 'bluebird';\nimport events from 'events';\nconst { EventEmitter } = events;\nimport { SubProcess, exec } from 'teen_process';\n\nconst log = logger.getLogger('Logcat');\nconst MAX_BUFFER_SIZE = 10000;\nconst LOGCAT_PROC_STARTUP_TIMEOUT = 10000;\nconst SUPPORTED_FORMATS = ['brief', 'process', 'tag', 'thread', 'raw', 'time', 'threadtime', 'long'];\nconst SUPPORTED_PRIORITIES = ['v', 'd', 'i', 'w', 'e', 'f', 's'];\nconst DEFAULT_PRIORITY = 'v';\nconst DEFAULT_TAG = '*';\nconst DEFAULT_FORMAT = 'threadtime';\n\nfunction requireFormat (format) {\n if (!SUPPORTED_FORMATS.includes(format)) {\n log.info(`The format value '${format}' is unknown. Supported values are: ${SUPPORTED_FORMATS}`);\n log.info(`Defaulting to '${DEFAULT_FORMAT}'`);\n return DEFAULT_FORMAT;\n }\n return format;\n}\n\nfunction requireSpec (spec) {\n const [tag, priority] = spec.split(':');\n let resultTag = tag;\n if (!resultTag) {\n log.info(`The tag value in spec '${spec}' cannot be empty`);\n log.info(`Defaulting to '${DEFAULT_TAG}'`);\n resultTag = DEFAULT_TAG;\n }\n if (!priority) {\n log.info(`The priority value in spec '${spec}' is empty. Defaulting to Verbose (${DEFAULT_PRIORITY})`);\n return `${resultTag}:${DEFAULT_PRIORITY}`;\n }\n if (!SUPPORTED_PRIORITIES.some((p) => _.toLower(priority) === _.toLower(p))) {\n log.info(`The priority value in spec '${spec}' is unknown. Supported values are: ${SUPPORTED_PRIORITIES}`);\n log.info(`Defaulting to Verbose (${DEFAULT_PRIORITY})`);\n return `${resultTag}:${DEFAULT_PRIORITY}`;\n }\n return spec;\n}\n\nfunction formatFilterSpecs (filterSpecs) {\n if (!_.isArray(filterSpecs)) {\n filterSpecs = [filterSpecs];\n }\n return filterSpecs\n .filter((spec) => spec && _.isString(spec) && !spec.startsWith('-'))\n .map((spec) => spec.includes(':') ? requireSpec(spec) : spec);\n}\n\n\nclass Logcat extends EventEmitter {\n constructor (opts = {}) {\n super();\n this.adb = opts.adb;\n this.clearLogs = opts.clearDeviceLogsOnStart || false;\n this.debug = opts.debug;\n this.debugTrace = opts.debugTrace;\n this.maxBufferSize = opts.maxBufferSize || MAX_BUFFER_SIZE;\n this.logs = [];\n this.logIdxSinceLastRequest = 0;\n }\n\n async startCapture (opts = {}) {\n let started = false;\n return await new B(async (_resolve, _reject) => { // eslint-disable-line promise/param-names\n const resolve = function (...args) {\n started = true;\n _resolve(...args);\n };\n const reject = function (...args) {\n started = true;\n _reject(...args);\n };\n\n if (this.clearLogs) {\n await this.clear();\n }\n\n const {\n format = DEFAULT_FORMAT,\n filterSpecs = [],\n } = opts;\n const cmd = [\n ...this.adb.defaultArgs,\n 'logcat',\n '-v', requireFormat(format),\n ...formatFilterSpecs(filterSpecs),\n ];\n log.debug(`Starting logs capture with command: ${util.quote([this.adb.path, ...cmd])}`);\n this.proc = new SubProcess(this.adb.path, cmd);\n this.proc.on('exit', (code, signal) => {\n log.error(`Logcat terminated with code ${code}, signal ${signal}`);\n this.proc = null;\n if (!started) {\n log.warn('Logcat not started. Continuing');\n resolve();\n }\n });\n this.proc.on('lines-stderr', (lines) => {\n for (let line of lines) {\n if (/execvp\\(\\)/.test(line)) {\n log.error('Logcat process failed to start');\n reject(new Error(`Logcat process failed to start. stderr: ${line}`));\n }\n this.outputHandler(_.trim(line), 'STDERR: ');\n }\n resolve();\n });\n this.proc.on('lines-stdout', (lines) => {\n resolve();\n for (let line of lines) {\n this.outputHandler(_.trim(line));\n }\n });\n await this.proc.start(0);\n // resolve after a timeout, even if no output was recorded\n setTimeout(resolve, LOGCAT_PROC_STARTUP_TIMEOUT);\n });\n }\n\n outputHandler (output, prefix = '') {\n if (!output) {\n return;\n }\n\n if (this.logs.length >= this.maxBufferSize) {\n this.logs.shift();\n if (this.logIdxSinceLastRequest > 0) {\n --this.logIdxSinceLastRequest;\n }\n }\n const outputObj = {\n timestamp: Date.now(),\n level: 'ALL',\n message: output,\n };\n this.logs.push(outputObj);\n this.emit('output', outputObj);\n const isTrace = /W\\/Trace/.test(output);\n if (this.debug && (!isTrace || this.debugTrace)) {\n log.debug(prefix + output);\n }\n }\n\n async stopCapture () {\n log.debug('Stopping logcat capture');\n if (!this.proc || !this.proc.isRunning) {\n log.debug('Logcat already stopped');\n this.proc = null;\n return;\n }\n this.proc.removeAllListeners('exit');\n await this.proc.stop();\n this.proc = null;\n }\n\n getLogs () {\n if (this.logIdxSinceLastRequest < this.logs.length) {\n const result = this.logs.slice(this.logIdxSinceLastRequest);\n this.logIdxSinceLastRequest = this.logs.length;\n return result;\n }\n return [];\n }\n\n getAllLogs () {\n return this.logs;\n }\n\n async clear () {\n log.debug('Clearing logcat logs from device');\n try {\n const args = [...this.adb.defaultArgs, 'logcat', '-c'];\n await exec(this.adb.path, args);\n } catch (err) {\n log.warn(`Failed to clear logcat logs: ${err.stderr || err.message}`);\n }\n }\n}\n\nexport default Logcat;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AAEA;AADA,MAAM;EAAEA;AAAa,CAAC,GAAGC,eAAM;AAG/B,MAAMC,GAAG,GAAGC,eAAM,CAACC,SAAS,CAAC,QAAQ,CAAC;AACtC,MAAMC,eAAe,GAAG,KAAK;AAC7B,MAAMC,2BAA2B,GAAG,KAAK;AACzC,MAAMC,iBAAiB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC;AACpG,MAAMC,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAChE,MAAMC,gBAAgB,GAAG,GAAG;AAC5B,MAAMC,WAAW,GAAG,GAAG;AACvB,MAAMC,cAAc,GAAG,YAAY;AAEnC,SAASC,aAAa,CAAEC,MAAM,EAAE;EAC9B,IAAI,CAACN,iBAAiB,CAACO,QAAQ,CAACD,MAAM,CAAC,EAAE;IACvCX,GAAG,CAACa,IAAI,CAAE,qBAAoBF,MAAO,uCAAsCN,iBAAkB,EAAC,CAAC;IAC/FL,GAAG,CAACa,IAAI,CAAE,kBAAiBJ,cAAe,GAAE,CAAC;IAC7C,OAAOA,cAAc;EACvB;EACA,OAAOE,MAAM;AACf;AAEA,SAASG,WAAW,CAAEC,IAAI,EAAE;EAC1B,MAAM,CAACC,GAAG,EAAEC,QAAQ,CAAC,GAAGF,IAAI,CAACG,KAAK,CAAC,GAAG,CAAC;EACvC,IAAIC,SAAS,GAAGH,GAAG;EACnB,IAAI,CAACG,SAAS,EAAE;IACdnB,GAAG,CAACa,IAAI,CAAE,0BAAyBE,IAAK,mBAAkB,CAAC;IAC3Df,GAAG,CAACa,IAAI,CAAE,kBAAiBL,WAAY,GAAE,CAAC;IAC1CW,SAAS,GAAGX,WAAW;EACzB;EACA,IAAI,CAACS,QAAQ,EAAE;IACbjB,GAAG,CAACa,IAAI,CAAE,+BAA8BE,IAAK,sCAAqCR,gBAAiB,GAAE,CAAC;IACtG,OAAQ,GAAEY,SAAU,IAAGZ,gBAAiB,EAAC;EAC3C;EACA,IAAI,CAACD,oBAAoB,CAACc,IAAI,CAAEC,CAAC,IAAKC,eAAC,CAACC,OAAO,CAACN,QAAQ,CAAC,KAAKK,eAAC,CAACC,OAAO,CAACF,CAAC,CAAC,CAAC,EAAE;IAC3ErB,GAAG,CAACa,IAAI,CAAE,+BAA8BE,IAAK,uCAAsCT,oBAAqB,EAAC,CAAC;IAC1GN,GAAG,CAACa,IAAI,CAAE,0BAAyBN,gBAAiB,GAAE,CAAC;IACvD,OAAQ,GAAEY,SAAU,IAAGZ,gBAAiB,EAAC;EAC3C;EACA,OAAOQ,IAAI;AACb;AAEA,SAASS,iBAAiB,CAAEC,WAAW,EAAE;EACvC,IAAI,CAACH,eAAC,CAACI,OAAO,CAACD,WAAW,CAAC,EAAE;IAC3BA,WAAW,GAAG,CAACA,WAAW,CAAC;EAC7B;EACA,OAAOA,WAAW,CACfE,MAAM,CAAEZ,IAAI,IAAKA,IAAI,IAAIO,eAAC,CAACM,QAAQ,CAACb,IAAI,CAAC,IAAI,CAACA,IAAI,CAACc,UAAU,CAAC,GAAG,CAAC,CAAC,CACnEC,GAAG,CAAEf,IAAI,IAAKA,IAAI,CAACH,QAAQ,CAAC,GAAG,CAAC,GAAGE,WAAW,CAACC,IAAI,CAAC,GAAGA,IAAI,CAAC;AACjE;AAGA,MAAMgB,MAAM,SAASjC,YAAY,CAAC;EAChCkC,WAAW,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;IACtB,KAAK,EAAE;IACP,IAAI,CAACC,GAAG,GAAGD,IAAI,CAACC,GAAG;IACnB,IAAI,CAACC,SAAS,GAAGF,IAAI,CAACG,sBAAsB,IAAI,KAAK;IACrD,IAAI,CAACC,KAAK,GAAGJ,IAAI,CAACI,KAAK;IACvB,IAAI,CAACC,UAAU,GAAGL,IAAI,CAACK,UAAU;IACjC,IAAI,CAACC,aAAa,GAAGN,IAAI,CAACM,aAAa,IAAIpC,eAAe;IAC1D,IAAI,CAACqC,IAAI,GAAG,EAAE;IACd,IAAI,CAACC,sBAAsB,GAAG,CAAC;EACjC;EAEA,MAAMC,YAAY,CAAET,IAAI,GAAG,CAAC,CAAC,EAAE;IAC7B,IAAIU,OAAO,GAAG,KAAK;IACnB,OAAO,MAAM,IAAIC,iBAAC,CAAC,OAAOC,QAAQ,EAAEC,OAAO,KAAK;MAC9C,MAAMC,OAAO,GAAG,UAAU,GAAGC,IAAI,EAAE;QACjCL,OAAO,GAAG,IAAI;QACdE,QAAQ,CAAC,GAAGG,IAAI,CAAC;MACnB,CAAC;MACD,MAAMC,MAAM,GAAG,UAAU,GAAGD,IAAI,EAAE;QAChCL,OAAO,GAAG,IAAI;QACdG,OAAO,CAAC,GAAGE,IAAI,CAAC;MAClB,CAAC;MAED,IAAI,IAAI,CAACb,SAAS,EAAE;QAClB,MAAM,IAAI,CAACe,KAAK,EAAE;MACpB;MAEA,MAAM;QACJvC,MAAM,GAAGF,cAAc;QACvBgB,WAAW,GAAG;MAChB,CAAC,GAAGQ,IAAI;MACR,MAAMkB,GAAG,GAAG,CACV,GAAG,IAAI,CAACjB,GAAG,CAACkB,WAAW,EACvB,QAAQ,EACR,IAAI,EAAE1C,aAAa,CAACC,MAAM,CAAC,EAC3B,GAAGa,iBAAiB,CAACC,WAAW,CAAC,CAClC;MACDzB,GAAG,CAACqC,KAAK,CAAE,uCAAsCgB,aAAI,CAACC,KAAK,CAAC,CAAC,IAAI,CAACpB,GAAG,CAACqB,IAAI,EAAE,GAAGJ,GAAG,CAAC,CAAE,EAAC,CAAC;MACvF,IAAI,CAACK,IAAI,GAAG,IAAIC,wBAAU,CAAC,IAAI,CAACvB,GAAG,CAACqB,IAAI,EAAEJ,GAAG,CAAC;MAC9C,IAAI,CAACK,IAAI,CAACE,EAAE,CAAC,MAAM,EAAE,CAACC,IAAI,EAAEC,MAAM,KAAK;QACrC5D,GAAG,CAAC6D,KAAK,CAAE,+BAA8BF,IAAK,YAAWC,MAAO,EAAC,CAAC;QAClE,IAAI,CAACJ,IAAI,GAAG,IAAI;QAChB,IAAI,CAACb,OAAO,EAAE;UACZ3C,GAAG,CAAC8D,IAAI,CAAC,gCAAgC,CAAC;UAC1Cf,OAAO,EAAE;QACX;MACF,CAAC,CAAC;MACF,IAAI,CAACS,IAAI,CAACE,EAAE,CAAC,cAAc,EAAGK,KAAK,IAAK;QACtC,KAAK,IAAIC,IAAI,IAAID,KAAK,EAAE;UACtB,IAAI,YAAY,CAACE,IAAI,CAACD,IAAI,CAAC,EAAE;YAC3BhE,GAAG,CAAC6D,KAAK,CAAC,gCAAgC,CAAC;YAC3CZ,MAAM,CAAC,IAAIiB,KAAK,CAAE,2CAA0CF,IAAK,EAAC,CAAC,CAAC;UACtE;UACA,IAAI,CAACG,aAAa,CAAC7C,eAAC,CAAC8C,IAAI,CAACJ,IAAI,CAAC,EAAE,UAAU,CAAC;QAC9C;QACAjB,OAAO,EAAE;MACX,CAAC,CAAC;MACF,IAAI,CAACS,IAAI,CAACE,EAAE,CAAC,cAAc,EAAGK,KAAK,IAAK;QACtChB,OAAO,EAAE;QACT,KAAK,IAAIiB,IAAI,IAAID,KAAK,EAAE;UACtB,IAAI,CAACI,aAAa,CAAC7C,eAAC,CAAC8C,IAAI,CAACJ,IAAI,CAAC,CAAC;QAClC;MACF,CAAC,CAAC;MACF,MAAM,IAAI,CAACR,IAAI,CAACa,KAAK,CAAC,CAAC,CAAC;MAExBC,UAAU,CAACvB,OAAO,EAAE3C,2BAA2B,CAAC;IAClD,CAAC,CAAC;EACJ;EAEA+D,aAAa,CAAEI,MAAM,EAAEC,MAAM,GAAG,EAAE,EAAE;IAClC,IAAI,CAACD,MAAM,EAAE;MACX;IACF;IAEA,IAAI,IAAI,CAAC/B,IAAI,CAACiC,MAAM,IAAI,IAAI,CAAClC,aAAa,EAAE;MAC1C,IAAI,CAACC,IAAI,CAACkC,KAAK,EAAE;MACjB,IAAI,IAAI,CAACjC,sBAAsB,GAAG,CAAC,EAAE;QACnC,EAAE,IAAI,CAACA,sBAAsB;MAC/B;IACF;IACA,MAAMkC,SAAS,GAAG;MAChBC,SAAS,EAAEC,IAAI,CAACC,GAAG,EAAE;MACrBC,KAAK,EAAE,KAAK;MACZC,OAAO,EAAET;IACX,CAAC;IACD,IAAI,CAAC/B,IAAI,CAACyC,IAAI,CAACN,SAAS,CAAC;IACzB,IAAI,CAACO,IAAI,CAAC,QAAQ,EAAEP,SAAS,CAAC;IAC9B,MAAMQ,OAAO,GAAG,UAAU,CAAClB,IAAI,CAACM,MAAM,CAAC;IACvC,IAAI,IAAI,CAAClC,KAAK,KAAK,CAAC8C,OAAO,IAAI,IAAI,CAAC7C,UAAU,CAAC,EAAE;MAC/CtC,GAAG,CAACqC,KAAK,CAACmC,MAAM,GAAGD,MAAM,CAAC;IAC5B;EACF;EAEA,MAAMa,WAAW,GAAI;IACnBpF,GAAG,CAACqC,KAAK,CAAC,yBAAyB,CAAC;IACpC,IAAI,CAAC,IAAI,CAACmB,IAAI,IAAI,CAAC,IAAI,CAACA,IAAI,CAAC6B,SAAS,EAAE;MACtCrF,GAAG,CAACqC,KAAK,CAAC,wBAAwB,CAAC;MACnC,IAAI,CAACmB,IAAI,GAAG,IAAI;MAChB;IACF;IACA,IAAI,CAACA,IAAI,CAAC8B,kBAAkB,CAAC,MAAM,CAAC;IACpC,MAAM,IAAI,CAAC9B,IAAI,CAAC+B,IAAI,EAAE;IACtB,IAAI,CAAC/B,IAAI,GAAG,IAAI;EAClB;EAEAgC,OAAO,GAAI;IACT,IAAI,IAAI,CAAC/C,sBAAsB,GAAG,IAAI,CAACD,IAAI,CAACiC,MAAM,EAAE;MAClD,MAAMgB,MAAM,GAAG,IAAI,CAACjD,IAAI,CAACkD,KAAK,CAAC,IAAI,CAACjD,sBAAsB,CAAC;MAC3D,IAAI,CAACA,sBAAsB,GAAG,IAAI,CAACD,IAAI,CAACiC,MAAM;MAC9C,OAAOgB,MAAM;IACf;IACA,OAAO,EAAE;EACX;EAEAE,UAAU,GAAI;IACZ,OAAO,IAAI,CAACnD,IAAI;EAClB;EAEA,MAAMU,KAAK,GAAI;IACblD,GAAG,CAACqC,KAAK,CAAC,kCAAkC,CAAC;IAC7C,IAAI;MACF,MAAMW,IAAI,GAAG,CAAC,GAAG,IAAI,CAACd,GAAG,CAACkB,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC;MACtD,MAAM,IAAAwC,kBAAI,EAAC,IAAI,CAAC1D,GAAG,CAACqB,IAAI,EAAEP,IAAI,CAAC;IACjC,CAAC,CAAC,OAAO6C,GAAG,EAAE;MACZ7F,GAAG,CAAC8D,IAAI,CAAE,gCAA+B+B,GAAG,CAACC,MAAM,IAAID,GAAG,CAACb,OAAQ,EAAC,CAAC;IACvE;EACF;AACF;AAAC,eAEcjD,MAAM;AAAA"}
|
package/build/lib/logger.js
CHANGED
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
var _support = require("@appium/support");
|
|
11
|
-
|
|
12
9
|
const log = _support.logger.getLogger('ADB');
|
|
13
|
-
|
|
14
10
|
var _default = log;
|
|
15
11
|
exports.default = _default;
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi9saWIvbG9nZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0FEQicpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2c7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUVBLE1BQU1BLEdBQUcsR0FBR0MsZUFBTSxDQUFDQyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQUMsZUFFckJGLEdBQUc7QUFBQSJ9
|
package/build/lib/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","names":["log","logger","getLogger"],"sources":["../../lib/logger.js"],"sourcesContent":["import { logger } from '@appium/support';\n\nconst log = logger.getLogger('ADB');\n\nexport default log;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","names":["log","logger","getLogger"],"sources":["../../lib/logger.js"],"sourcesContent":["import { logger } from '@appium/support';\n\nconst log = logger.getLogger('ADB');\n\nexport default log;\n"],"mappings":";;;;;;;AAAA;AAEA,MAAMA,GAAG,GAAGC,eAAM,CAACC,SAAS,CAAC,KAAK,CAAC;AAAC,eAErBF,GAAG;AAAA"}
|
|
@@ -1,30 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
require("source-map-support/register");
|
|
11
|
-
|
|
12
9
|
var _logger = _interopRequireDefault(require("../logger.js"));
|
|
13
|
-
|
|
14
10
|
var _path = _interopRequireDefault(require("path"));
|
|
15
|
-
|
|
16
11
|
var _support = require("@appium/support");
|
|
17
|
-
|
|
18
12
|
var _lruCache = _interopRequireDefault(require("lru-cache"));
|
|
19
|
-
|
|
20
13
|
var _helpers = require("../helpers.js");
|
|
21
|
-
|
|
22
14
|
var _asyncLock = _interopRequireDefault(require("async-lock"));
|
|
23
|
-
|
|
24
15
|
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
25
|
-
|
|
26
16
|
var _crypto = _interopRequireDefault(require("crypto"));
|
|
27
|
-
|
|
28
17
|
const AAB_CACHE = new _lruCache.default({
|
|
29
18
|
max: 10,
|
|
30
19
|
dispose: (hash, extractedFilesRoot) => _support.fs.rimraf(extractedFilesRoot)
|
|
@@ -36,11 +25,8 @@ process.on('exit', () => {
|
|
|
36
25
|
if (!AAB_CACHE.size) {
|
|
37
26
|
return;
|
|
38
27
|
}
|
|
39
|
-
|
|
40
28
|
const paths = [...AAB_CACHE.values()];
|
|
41
|
-
|
|
42
29
|
_logger.default.debug(`Performing cleanup of ${paths.length} cached .aab ` + _support.util.pluralize('package', paths.length));
|
|
43
|
-
|
|
44
30
|
for (const appPath of paths) {
|
|
45
31
|
try {
|
|
46
32
|
_support.fs.rimrafSync(appPath);
|
|
@@ -54,14 +40,10 @@ aabUtilsMethods.extractUniversalApk = async function extractUniversalApk(aabPath
|
|
|
54
40
|
if (!(await _support.fs.exists(aabPath))) {
|
|
55
41
|
throw new Error(`The file at '${aabPath}' either does not exist or is not accessible`);
|
|
56
42
|
}
|
|
57
|
-
|
|
58
43
|
const aabName = _path.default.basename(aabPath);
|
|
59
|
-
|
|
60
44
|
const apkName = aabName.substring(0, aabName.length - _path.default.extname(aabName).length) + '.apk';
|
|
61
45
|
const tmpRoot = await _support.tempDir.openDir();
|
|
62
|
-
|
|
63
46
|
const tmpApksPath = _path.default.join(tmpRoot, `${aabName}.apks`);
|
|
64
|
-
|
|
65
47
|
try {
|
|
66
48
|
return await AAB_CACHE_GUARD.acquire(aabPath, async () => {
|
|
67
49
|
const aabHash = await _support.fs.hash(aabPath);
|
|
@@ -72,74 +54,52 @@ aabUtilsMethods.extractUniversalApk = async function extractUniversalApk(aabPath
|
|
|
72
54
|
keyPassword
|
|
73
55
|
} = opts;
|
|
74
56
|
let cacheHash = aabHash;
|
|
75
|
-
|
|
76
57
|
if (keystore) {
|
|
77
58
|
if (!(await _support.fs.exists(keystore))) {
|
|
78
59
|
throw new Error(`The keystore file at '${keystore}' either does not exist ` + `or is not accessible`);
|
|
79
60
|
}
|
|
80
|
-
|
|
81
61
|
if (!keystorePassword || !keyAlias || !keyPassword) {
|
|
82
62
|
throw new Error('It is mandatory to also provide keystore password, key alias, ' + 'and key password if the keystore path is set');
|
|
83
63
|
}
|
|
84
|
-
|
|
85
64
|
const keystoreHash = await _support.fs.hash(keystore);
|
|
86
|
-
|
|
87
65
|
const keyAliasHash = _crypto.default.createHash('sha1');
|
|
88
|
-
|
|
89
66
|
keyAliasHash.update(keyAlias);
|
|
90
67
|
cacheHash = [cacheHash, keystoreHash, keyAliasHash.digest('hex')].join(':');
|
|
91
68
|
}
|
|
92
|
-
|
|
93
69
|
_logger.default.debug(`Calculated the cache key for '${aabPath}': ${cacheHash}`);
|
|
94
|
-
|
|
95
70
|
if (AAB_CACHE.has(cacheHash)) {
|
|
96
71
|
const resultPath = _path.default.resolve(AAB_CACHE.get(cacheHash), apkName);
|
|
97
|
-
|
|
98
72
|
if (await _support.fs.exists(resultPath)) {
|
|
99
73
|
return resultPath;
|
|
100
74
|
}
|
|
101
|
-
|
|
102
75
|
AAB_CACHE.del(cacheHash);
|
|
103
76
|
}
|
|
104
|
-
|
|
105
77
|
await this.initAapt2();
|
|
106
78
|
const args = ['build-apks', '--aapt2', this.binaries.aapt2, '--bundle', aabPath, '--output', tmpApksPath, ...(keystore ? ['--ks', keystore, '--ks-pass', `pass:${keystorePassword}`, '--ks-key-alias', keyAlias, '--key-pass', `pass:${keyPassword}`] : []), '--mode=universal'];
|
|
107
|
-
|
|
108
79
|
_logger.default.debug(`Preparing universal .apks bundle from '${aabPath}'`);
|
|
109
|
-
|
|
110
80
|
await this.execBundletool(args, `Cannot build a universal .apks bundle from '${aabPath}'`);
|
|
111
|
-
|
|
112
81
|
_logger.default.debug(`Unpacking universal application bundle at '${tmpApksPath}' to '${tmpRoot}'`);
|
|
113
|
-
|
|
114
82
|
await (0, _helpers.unzipFile)(tmpApksPath, tmpRoot);
|
|
115
83
|
let universalApkPath;
|
|
116
84
|
const fileDeletionPromises = [];
|
|
117
85
|
const allFileNames = await _support.fs.readdir(tmpRoot);
|
|
118
|
-
|
|
119
86
|
for (const fileName of allFileNames) {
|
|
120
87
|
const fullPath = _path.default.join(tmpRoot, fileName);
|
|
121
|
-
|
|
122
88
|
if (fileName === UNIVERSAL_APK) {
|
|
123
89
|
universalApkPath = fullPath;
|
|
124
90
|
} else {
|
|
125
91
|
fileDeletionPromises.push(_support.fs.rimraf(fullPath));
|
|
126
92
|
}
|
|
127
93
|
}
|
|
128
|
-
|
|
129
94
|
try {
|
|
130
95
|
await _bluebird.default.all(fileDeletionPromises);
|
|
131
96
|
} catch (ign) {}
|
|
132
|
-
|
|
133
97
|
if (!universalApkPath) {
|
|
134
98
|
_logger.default.debug(`The following items were extracted from the .aab bundle: ${allFileNames}`);
|
|
135
|
-
|
|
136
99
|
throw new Error(`${UNIVERSAL_APK} cannot be found in '${aabPath}' bundle. ` + `Does the archive contain a valid application bundle?`);
|
|
137
100
|
}
|
|
138
|
-
|
|
139
101
|
const resultPath = _path.default.join(tmpRoot, apkName);
|
|
140
|
-
|
|
141
102
|
_logger.default.debug(`Found ${UNIVERSAL_APK} at '${universalApkPath}'. Caching it to '${resultPath}'`);
|
|
142
|
-
|
|
143
103
|
await _support.fs.mv(universalApkPath, resultPath);
|
|
144
104
|
AAB_CACHE.set(cacheHash, tmpRoot);
|
|
145
105
|
return resultPath;
|
|
@@ -149,7 +109,6 @@ aabUtilsMethods.extractUniversalApk = async function extractUniversalApk(aabPath
|
|
|
149
109
|
throw e;
|
|
150
110
|
}
|
|
151
111
|
};
|
|
152
|
-
|
|
153
112
|
var _default = aabUtilsMethods;
|
|
154
113
|
exports.default = _default;
|
|
155
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBQUJfQ0FDSEUiLCJMUlUiLCJtYXgiLCJkaXNwb3NlIiwiaGFzaCIsImV4dHJhY3RlZEZpbGVzUm9vdCIsImZzIiwicmltcmFmIiwiQUFCX0NBQ0hFX0dVQVJEIiwiQXN5bmNMb2NrIiwiVU5JVkVSU0FMX0FQSyIsImFhYlV0aWxzTWV0aG9kcyIsInByb2Nlc3MiLCJvbiIsInNpemUiLCJwYXRocyIsInZhbHVlcyIsImxvZyIsImRlYnVnIiwibGVuZ3RoIiwidXRpbCIsInBsdXJhbGl6ZSIsImFwcFBhdGgiLCJyaW1yYWZTeW5jIiwiZSIsIndhcm4iLCJtZXNzYWdlIiwiZXh0cmFjdFVuaXZlcnNhbEFwayIsImFhYlBhdGgiLCJvcHRzIiwiZXhpc3RzIiwiRXJyb3IiLCJhYWJOYW1lIiwicGF0aCIsImJhc2VuYW1lIiwiYXBrTmFtZSIsInN1YnN0cmluZyIsImV4dG5hbWUiLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJ0bXBBcGtzUGF0aCIsImpvaW4iLCJhY3F1aXJlIiwiYWFiSGFzaCIsImtleXN0b3JlIiwia2V5c3RvcmVQYXNzd29yZCIsImtleUFsaWFzIiwia2V5UGFzc3dvcmQiLCJjYWNoZUhhc2giLCJrZXlzdG9yZUhhc2giLCJrZXlBbGlhc0hhc2giLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiZGlnZXN0IiwiaGFzIiwicmVzdWx0UGF0aCIsInJlc29sdmUiLCJnZXQiLCJkZWwiLCJpbml0QWFwdDIiLCJhcmdzIiwiYmluYXJpZXMiLCJhYXB0MiIsImV4ZWNCdW5kbGV0b29sIiwidW56aXBGaWxlIiwidW5pdmVyc2FsQXBrUGF0aCIsImZpbGVEZWxldGlvblByb21pc2VzIiwiYWxsRmlsZU5hbWVzIiwicmVhZGRpciIsImZpbGVOYW1lIiwiZnVsbFBhdGgiLCJwdXNoIiwiQiIsImFsbCIsImlnbiIsIm12Iiwic2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3Rvb2xzL2FhYi11dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZzLCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCB7IHVuemlwRmlsZSB9IGZyb20gJy4uL2hlbHBlcnMuanMnO1xuaW1wb3J0IEFzeW5jTG9jayBmcm9tICdhc3luYy1sb2NrJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuY29uc3QgQUFCX0NBQ0hFID0gbmV3IExSVSh7XG4gIG1heDogMTAsXG4gIGRpc3Bvc2U6IChoYXNoLCBleHRyYWN0ZWRGaWxlc1Jvb3QpID0+IGZzLnJpbXJhZihleHRyYWN0ZWRGaWxlc1Jvb3QpLFxufSk7XG5jb25zdCBBQUJfQ0FDSEVfR1VBUkQgPSBuZXcgQXN5bmNMb2NrKCk7XG5jb25zdCBVTklWRVJTQUxfQVBLID0gJ3VuaXZlcnNhbC5hcGsnO1xuXG5jb25zdCBhYWJVdGlsc01ldGhvZHMgPSB7fTtcblxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgaWYgKCFBQUJfQ0FDSEUuc2l6ZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhdGhzID0gWy4uLkFBQl9DQUNIRS52YWx1ZXMoKV07XG4gIGxvZy5kZWJ1ZyhgUGVyZm9ybWluZyBjbGVhbnVwIG9mICR7cGF0aHMubGVuZ3RofSBjYWNoZWQgLmFhYiBgICtcbiAgICB1dGlsLnBsdXJhbGl6ZSgncGFja2FnZScsIHBhdGhzLmxlbmd0aCkpO1xuICBmb3IgKGNvbnN0IGFwcFBhdGggb2YgcGF0aHMpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG9uRXhpdCBoYW5kbGVyXG4gICAgICBmcy5yaW1yYWZTeW5jKGFwcFBhdGgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGUubWVzc2FnZSk7XG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBcGtDcmVhdGlvbk9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBrZXlzdG9yZSBTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIGRlcGxveW1lbnQga2V5c3RvcmUgdXNlZFxuICogdG8gc2lnbiB0aGUgQVBLcy4gVGhpcyBmbGFnIGlzIG9wdGlvbmFsLiBJZiB5b3UgZG9uJ3QgaW5jbHVkZSBpdCxcbiAqIGJ1bmRsZXRvb2wgYXR0ZW1wdHMgdG8gc2lnbiB5b3VyIEFQS3Mgd2l0aCBhIGRlYnVnIHNpZ25pbmcga2V5LlxuICogSWYgdGhlIC5hcGsgaGFzIGJlZW4gYWxyZWFkeSBzaWduZWQgYW5kIGNhY2hlZCB0aGVuIGl0IGlzIG5vdCBnb2luZyB0byBiZSByZXNpZ25lZFxuICogdW5sZXNzIGEgZGlmZmVyZW50IGtleXN0b3JlIG9yIGtleSBhbGlhcyBpcyB1c2VkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGtleXN0b3JlUGFzc3dvcmQgU3BlY2lmaWVzIHlvdXIga2V5c3RvcmXigJlzIHBhc3N3b3JkLlxuICogSXQgaXMgbWFuZGF0b3J5IHRvIHByb3ZpZGUgdGhpcyB2YWx1ZSBpZiBga2V5c3RvcmVgIG9uZSBpcyBhc3NpZ25lZFxuICogb3RoZXJ3aXNlIGl0IGlzIGdvaW5nIHRvIGJlIGlnbm9yZWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30ga2V5QWxpYXMgU3BlY2lmaWVzIHRoZSBhbGlhcyBvZiB0aGUgc2lnbmluZyBrZXkgeW91IHdhbnQgdG8gdXNlLlxuICogSXQgaXMgbWFuZGF0b3J5IHRvIHByb3ZpZGUgdGhpcyB2YWx1ZSBpZiBga2V5c3RvcmVgIG9uZSBpcyBhc3NpZ25lZFxuICogb3RoZXJ3aXNlIGl0IGlzIGdvaW5nIHRvIGJlIGlnbm9yZWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30ga2V5UGFzc3dvcmQgU3BlY2lmaWVzIHRoZSBwYXNzd29yZCBmb3IgdGhlIHNpZ25pbmcga2V5LlxuICogSXQgaXMgbWFuZGF0b3J5IHRvIHByb3ZpZGUgdGhpcyB2YWx1ZSBpZiBga2V5c3RvcmVgIG9uZSBpcyBhc3NpZ25lZFxuICogb3RoZXJ3aXNlIGl0IGlzIGdvaW5nIHRvIGJlIGlnbm9yZWQuXG4gKi9cblxuLyoqXG4gKiBCdWlsZHMgYSB1bml2ZXJzYWwgLmFwayBmcm9tIHRoZSBnaXZlbiAuYWFiIHBhY2thZ2UuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vc3R1ZGlvL2NvbW1hbmQtbGluZS9idW5kbGV0b29sI2dlbmVyYXRlX2Fwa3NcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFhYlBhdGggRnVsbCBwYXRoIHRvIHRoZSBzb3VyY2UgLmFhYiBwYWNrYWdlXG4gKiBAcGFyYW0ge0Fwa0NyZWF0aW9uT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMgVGhlIHBhdGggdG8gdGhlIHJlc3VsdGluZyB1bml2ZXJzYWwgLmFway4gVGhlIC5hcGsgaXMgc3RvcmVkIGluIHRoZSBpbnRlcm5hbCBjYWNoZVxuICogYnkgZGVmYXVsdC5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgY3JlYXRpbmcgdGhlIHVuaXZlcnNhbCAuYXBrXG4gKi9cbmFhYlV0aWxzTWV0aG9kcy5leHRyYWN0VW5pdmVyc2FsQXBrID0gYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFVuaXZlcnNhbEFwayAoYWFiUGF0aCwgb3B0cyA9IHt9KSB7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKGFhYlBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHthYWJQYXRofScgZWl0aGVyIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYCk7XG4gIH1cblxuICBjb25zdCBhYWJOYW1lID0gcGF0aC5iYXNlbmFtZShhYWJQYXRoKTtcbiAgY29uc3QgYXBrTmFtZSA9IGFhYk5hbWUuc3Vic3RyaW5nKDAsIGFhYk5hbWUubGVuZ3RoIC0gcGF0aC5leHRuYW1lKGFhYk5hbWUpLmxlbmd0aCkgKyAnLmFwayc7XG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgY29uc3QgdG1wQXBrc1BhdGggPSBwYXRoLmpvaW4odG1wUm9vdCwgYCR7YWFiTmFtZX0uYXBrc2ApO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBBQUJfQ0FDSEVfR1VBUkQuYWNxdWlyZShhYWJQYXRoLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhYWJIYXNoID0gYXdhaXQgZnMuaGFzaChhYWJQYXRoKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAga2V5c3RvcmUsXG4gICAgICAgIGtleXN0b3JlUGFzc3dvcmQsXG4gICAgICAgIGtleUFsaWFzLFxuICAgICAgICBrZXlQYXNzd29yZCxcbiAgICAgIH0gPSBvcHRzO1xuICAgICAgbGV0IGNhY2hlSGFzaCA9IGFhYkhhc2g7XG4gICAgICBpZiAoa2V5c3RvcmUpIHtcbiAgICAgICAgaWYgKCFhd2FpdCBmcy5leGlzdHMoa2V5c3RvcmUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUga2V5c3RvcmUgZmlsZSBhdCAnJHtrZXlzdG9yZX0nIGVpdGhlciBkb2VzIG5vdCBleGlzdCBgICtcbiAgICAgICAgICAgIGBvciBpcyBub3QgYWNjZXNzaWJsZWApO1xuICAgICAgICB9XG4gICAgICAgIGlmICgha2V5c3RvcmVQYXNzd29yZCB8fCAha2V5QWxpYXMgfHwgIWtleVBhc3N3b3JkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJdCBpcyBtYW5kYXRvcnkgdG8gYWxzbyBwcm92aWRlIGtleXN0b3JlIHBhc3N3b3JkLCBrZXkgYWxpYXMsICcgK1xuICAgICAgICAgICAgJ2FuZCBrZXkgcGFzc3dvcmQgaWYgdGhlIGtleXN0b3JlIHBhdGggaXMgc2V0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5c3RvcmVIYXNoID0gYXdhaXQgZnMuaGFzaChrZXlzdG9yZSk7XG4gICAgICAgIGNvbnN0IGtleUFsaWFzSGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGExJyk7XG4gICAgICAgIGtleUFsaWFzSGFzaC51cGRhdGUoa2V5QWxpYXMpO1xuICAgICAgICBjYWNoZUhhc2ggPSBbY2FjaGVIYXNoLCBrZXlzdG9yZUhhc2gsIGtleUFsaWFzSGFzaC5kaWdlc3QoJ2hleCcpXS5qb2luKCc6Jyk7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoYENhbGN1bGF0ZWQgdGhlIGNhY2hlIGtleSBmb3IgJyR7YWFiUGF0aH0nOiAke2NhY2hlSGFzaH1gKTtcbiAgICAgIGlmIChBQUJfQ0FDSEUuaGFzKGNhY2hlSGFzaCkpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0UGF0aCA9IHBhdGgucmVzb2x2ZShBQUJfQ0FDSEUuZ2V0KGNhY2hlSGFzaCksIGFwa05hbWUpO1xuICAgICAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHJlc3VsdFBhdGgpKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgQUFCX0NBQ0hFLmRlbChjYWNoZUhhc2gpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLmluaXRBYXB0MigpO1xuICAgICAgY29uc3QgYXJncyA9IFtcbiAgICAgICAgJ2J1aWxkLWFwa3MnLFxuICAgICAgICAnLS1hYXB0MicsIHRoaXMuYmluYXJpZXMuYWFwdDIsXG4gICAgICAgICctLWJ1bmRsZScsIGFhYlBhdGgsXG4gICAgICAgICctLW91dHB1dCcsIHRtcEFwa3NQYXRoLFxuICAgICAgICAuLi4oa2V5c3RvcmUgPyBbXG4gICAgICAgICAgJy0ta3MnLCBrZXlzdG9yZSxcbiAgICAgICAgICAnLS1rcy1wYXNzJywgYHBhc3M6JHtrZXlzdG9yZVBhc3N3b3JkfWAsXG4gICAgICAgICAgJy0ta3Mta2V5LWFsaWFzJywga2V5QWxpYXMsXG4gICAgICAgICAgJy0ta2V5LXBhc3MnLCBgcGFzczoke2tleVBhc3N3b3JkfWAsXG4gICAgICAgIF0gOiBbXSksXG4gICAgICAgICctLW1vZGU9dW5pdmVyc2FsJ1xuICAgICAgXTtcbiAgICAgIGxvZy5kZWJ1ZyhgUHJlcGFyaW5nIHVuaXZlcnNhbCAuYXBrcyBidW5kbGUgZnJvbSAnJHthYWJQYXRofSdgKTtcbiAgICAgIGF3YWl0IHRoaXMuZXhlY0J1bmRsZXRvb2woYXJncywgYENhbm5vdCBidWlsZCBhIHVuaXZlcnNhbCAuYXBrcyBidW5kbGUgZnJvbSAnJHthYWJQYXRofSdgKTtcblxuICAgICAgbG9nLmRlYnVnKGBVbnBhY2tpbmcgdW5pdmVyc2FsIGFwcGxpY2F0aW9uIGJ1bmRsZSBhdCAnJHt0bXBBcGtzUGF0aH0nIHRvICcke3RtcFJvb3R9J2ApO1xuICAgICAgYXdhaXQgdW56aXBGaWxlKHRtcEFwa3NQYXRoLCB0bXBSb290KTtcbiAgICAgIGxldCB1bml2ZXJzYWxBcGtQYXRoO1xuICAgICAgY29uc3QgZmlsZURlbGV0aW9uUHJvbWlzZXMgPSBbXTtcbiAgICAgIGNvbnN0IGFsbEZpbGVOYW1lcyA9IGF3YWl0IGZzLnJlYWRkaXIodG1wUm9vdCk7XG4gICAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIGFsbEZpbGVOYW1lcykge1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbih0bXBSb290LCBmaWxlTmFtZSk7XG4gICAgICAgIGlmIChmaWxlTmFtZSA9PT0gVU5JVkVSU0FMX0FQSykge1xuICAgICAgICAgIHVuaXZlcnNhbEFwa1BhdGggPSBmdWxsUGF0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWxlRGVsZXRpb25Qcm9taXNlcy5wdXNoKGZzLnJpbXJhZihmdWxsUGF0aCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBCLmFsbChmaWxlRGVsZXRpb25Qcm9taXNlcyk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgICBpZiAoIXVuaXZlcnNhbEFwa1BhdGgpIHtcbiAgICAgICAgbG9nLmRlYnVnKGBUaGUgZm9sbG93aW5nIGl0ZW1zIHdlcmUgZXh0cmFjdGVkIGZyb20gdGhlIC5hYWIgYnVuZGxlOiAke2FsbEZpbGVOYW1lc31gKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke1VOSVZFUlNBTF9BUEt9IGNhbm5vdCBiZSBmb3VuZCBpbiAnJHthYWJQYXRofScgYnVuZGxlLiBgICtcbiAgICAgICAgICBgRG9lcyB0aGUgYXJjaGl2ZSBjb250YWluIGEgdmFsaWQgYXBwbGljYXRpb24gYnVuZGxlP2ApO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0UGF0aCA9IHBhdGguam9pbih0bXBSb290LCBhcGtOYW1lKTtcbiAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgJHtVTklWRVJTQUxfQVBLfSBhdCAnJHt1bml2ZXJzYWxBcGtQYXRofScuIENhY2hpbmcgaXQgdG8gJyR7cmVzdWx0UGF0aH0nYCk7XG4gICAgICBhd2FpdCBmcy5tdih1bml2ZXJzYWxBcGtQYXRoLCByZXN1bHRQYXRoKTtcbiAgICAgIEFBQl9DQUNIRS5zZXQoY2FjaGVIYXNoLCB0bXBSb290KTtcbiAgICAgIHJldHVybiByZXN1bHRQYXRoO1xuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICAgIHRocm93IGU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGFhYlV0aWxzTWV0aG9kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsSUFBSUMsaUJBQUosQ0FBUTtFQUN4QkMsR0FBRyxFQUFFLEVBRG1CO0VBRXhCQyxPQUFPLEVBQUUsQ0FBQ0MsSUFBRCxFQUFPQyxrQkFBUCxLQUE4QkMsV0FBQSxDQUFHQyxNQUFILENBQVVG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
|
|
114
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBQUJfQ0FDSEUiLCJMUlUiLCJtYXgiLCJkaXNwb3NlIiwiaGFzaCIsImV4dHJhY3RlZEZpbGVzUm9vdCIsImZzIiwicmltcmFmIiwiQUFCX0NBQ0hFX0dVQVJEIiwiQXN5bmNMb2NrIiwiVU5JVkVSU0FMX0FQSyIsImFhYlV0aWxzTWV0aG9kcyIsInByb2Nlc3MiLCJvbiIsInNpemUiLCJwYXRocyIsInZhbHVlcyIsImxvZyIsImRlYnVnIiwibGVuZ3RoIiwidXRpbCIsInBsdXJhbGl6ZSIsImFwcFBhdGgiLCJyaW1yYWZTeW5jIiwiZSIsIndhcm4iLCJtZXNzYWdlIiwiZXh0cmFjdFVuaXZlcnNhbEFwayIsImFhYlBhdGgiLCJvcHRzIiwiZXhpc3RzIiwiRXJyb3IiLCJhYWJOYW1lIiwicGF0aCIsImJhc2VuYW1lIiwiYXBrTmFtZSIsInN1YnN0cmluZyIsImV4dG5hbWUiLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJ0bXBBcGtzUGF0aCIsImpvaW4iLCJhY3F1aXJlIiwiYWFiSGFzaCIsImtleXN0b3JlIiwia2V5c3RvcmVQYXNzd29yZCIsImtleUFsaWFzIiwia2V5UGFzc3dvcmQiLCJjYWNoZUhhc2giLCJrZXlzdG9yZUhhc2giLCJrZXlBbGlhc0hhc2giLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiZGlnZXN0IiwiaGFzIiwicmVzdWx0UGF0aCIsInJlc29sdmUiLCJnZXQiLCJkZWwiLCJpbml0QWFwdDIiLCJhcmdzIiwiYmluYXJpZXMiLCJhYXB0MiIsImV4ZWNCdW5kbGV0b29sIiwidW56aXBGaWxlIiwidW5pdmVyc2FsQXBrUGF0aCIsImZpbGVEZWxldGlvblByb21pc2VzIiwiYWxsRmlsZU5hbWVzIiwicmVhZGRpciIsImZpbGVOYW1lIiwiZnVsbFBhdGgiLCJwdXNoIiwiQiIsImFsbCIsImlnbiIsIm12Iiwic2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3Rvb2xzL2FhYi11dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZzLCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCB7IHVuemlwRmlsZSB9IGZyb20gJy4uL2hlbHBlcnMuanMnO1xuaW1wb3J0IEFzeW5jTG9jayBmcm9tICdhc3luYy1sb2NrJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuY29uc3QgQUFCX0NBQ0hFID0gbmV3IExSVSh7XG4gIG1heDogMTAsXG4gIGRpc3Bvc2U6IChoYXNoLCBleHRyYWN0ZWRGaWxlc1Jvb3QpID0+IGZzLnJpbXJhZihleHRyYWN0ZWRGaWxlc1Jvb3QpLFxufSk7XG5jb25zdCBBQUJfQ0FDSEVfR1VBUkQgPSBuZXcgQXN5bmNMb2NrKCk7XG5jb25zdCBVTklWRVJTQUxfQVBLID0gJ3VuaXZlcnNhbC5hcGsnO1xuXG5jb25zdCBhYWJVdGlsc01ldGhvZHMgPSB7fTtcblxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgaWYgKCFBQUJfQ0FDSEUuc2l6ZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhdGhzID0gWy4uLkFBQl9DQUNIRS52YWx1ZXMoKV07XG4gIGxvZy5kZWJ1ZyhgUGVyZm9ybWluZyBjbGVhbnVwIG9mICR7cGF0aHMubGVuZ3RofSBjYWNoZWQgLmFhYiBgICtcbiAgICB1dGlsLnBsdXJhbGl6ZSgncGFja2FnZScsIHBhdGhzLmxlbmd0aCkpO1xuICBmb3IgKGNvbnN0IGFwcFBhdGggb2YgcGF0aHMpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG9uRXhpdCBoYW5kbGVyXG4gICAgICBmcy5yaW1yYWZTeW5jKGFwcFBhdGgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGUubWVzc2FnZSk7XG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBcGtDcmVhdGlvbk9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBrZXlzdG9yZSBTcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIGRlcGxveW1lbnQga2V5c3RvcmUgdXNlZFxuICogdG8gc2lnbiB0aGUgQVBLcy4gVGhpcyBmbGFnIGlzIG9wdGlvbmFsLiBJZiB5b3UgZG9uJ3QgaW5jbHVkZSBpdCxcbiAqIGJ1bmRsZXRvb2wgYXR0ZW1wdHMgdG8gc2lnbiB5b3VyIEFQS3Mgd2l0aCBhIGRlYnVnIHNpZ25pbmcga2V5LlxuICogSWYgdGhlIC5hcGsgaGFzIGJlZW4gYWxyZWFkeSBzaWduZWQgYW5kIGNhY2hlZCB0aGVuIGl0IGlzIG5vdCBnb2luZyB0byBiZSByZXNpZ25lZFxuICogdW5sZXNzIGEgZGlmZmVyZW50IGtleXN0b3JlIG9yIGtleSBhbGlhcyBpcyB1c2VkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGtleXN0b3JlUGFzc3dvcmQgU3BlY2lmaWVzIHlvdXIga2V5c3RvcmXigJlzIHBhc3N3b3JkLlxuICogSXQgaXMgbWFuZGF0b3J5IHRvIHByb3ZpZGUgdGhpcyB2YWx1ZSBpZiBga2V5c3RvcmVgIG9uZSBpcyBhc3NpZ25lZFxuICogb3RoZXJ3aXNlIGl0IGlzIGdvaW5nIHRvIGJlIGlnbm9yZWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30ga2V5QWxpYXMgU3BlY2lmaWVzIHRoZSBhbGlhcyBvZiB0aGUgc2lnbmluZyBrZXkgeW91IHdhbnQgdG8gdXNlLlxuICogSXQgaXMgbWFuZGF0b3J5IHRvIHByb3ZpZGUgdGhpcyB2YWx1ZSBpZiBga2V5c3RvcmVgIG9uZSBpcyBhc3NpZ25lZFxuICogb3RoZXJ3aXNlIGl0IGlzIGdvaW5nIHRvIGJlIGlnbm9yZWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30ga2V5UGFzc3dvcmQgU3BlY2lmaWVzIHRoZSBwYXNzd29yZCBmb3IgdGhlIHNpZ25pbmcga2V5LlxuICogSXQgaXMgbWFuZGF0b3J5IHRvIHByb3ZpZGUgdGhpcyB2YWx1ZSBpZiBga2V5c3RvcmVgIG9uZSBpcyBhc3NpZ25lZFxuICogb3RoZXJ3aXNlIGl0IGlzIGdvaW5nIHRvIGJlIGlnbm9yZWQuXG4gKi9cblxuLyoqXG4gKiBCdWlsZHMgYSB1bml2ZXJzYWwgLmFwayBmcm9tIHRoZSBnaXZlbiAuYWFiIHBhY2thZ2UuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vc3R1ZGlvL2NvbW1hbmQtbGluZS9idW5kbGV0b29sI2dlbmVyYXRlX2Fwa3NcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFhYlBhdGggRnVsbCBwYXRoIHRvIHRoZSBzb3VyY2UgLmFhYiBwYWNrYWdlXG4gKiBAcGFyYW0ge0Fwa0NyZWF0aW9uT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMgVGhlIHBhdGggdG8gdGhlIHJlc3VsdGluZyB1bml2ZXJzYWwgLmFway4gVGhlIC5hcGsgaXMgc3RvcmVkIGluIHRoZSBpbnRlcm5hbCBjYWNoZVxuICogYnkgZGVmYXVsdC5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgY3JlYXRpbmcgdGhlIHVuaXZlcnNhbCAuYXBrXG4gKi9cbmFhYlV0aWxzTWV0aG9kcy5leHRyYWN0VW5pdmVyc2FsQXBrID0gYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFVuaXZlcnNhbEFwayAoYWFiUGF0aCwgb3B0cyA9IHt9KSB7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKGFhYlBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHthYWJQYXRofScgZWl0aGVyIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYCk7XG4gIH1cblxuICBjb25zdCBhYWJOYW1lID0gcGF0aC5iYXNlbmFtZShhYWJQYXRoKTtcbiAgY29uc3QgYXBrTmFtZSA9IGFhYk5hbWUuc3Vic3RyaW5nKDAsIGFhYk5hbWUubGVuZ3RoIC0gcGF0aC5leHRuYW1lKGFhYk5hbWUpLmxlbmd0aCkgKyAnLmFwayc7XG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgY29uc3QgdG1wQXBrc1BhdGggPSBwYXRoLmpvaW4odG1wUm9vdCwgYCR7YWFiTmFtZX0uYXBrc2ApO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBBQUJfQ0FDSEVfR1VBUkQuYWNxdWlyZShhYWJQYXRoLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhYWJIYXNoID0gYXdhaXQgZnMuaGFzaChhYWJQYXRoKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAga2V5c3RvcmUsXG4gICAgICAgIGtleXN0b3JlUGFzc3dvcmQsXG4gICAgICAgIGtleUFsaWFzLFxuICAgICAgICBrZXlQYXNzd29yZCxcbiAgICAgIH0gPSBvcHRzO1xuICAgICAgbGV0IGNhY2hlSGFzaCA9IGFhYkhhc2g7XG4gICAgICBpZiAoa2V5c3RvcmUpIHtcbiAgICAgICAgaWYgKCFhd2FpdCBmcy5leGlzdHMoa2V5c3RvcmUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUga2V5c3RvcmUgZmlsZSBhdCAnJHtrZXlzdG9yZX0nIGVpdGhlciBkb2VzIG5vdCBleGlzdCBgICtcbiAgICAgICAgICAgIGBvciBpcyBub3QgYWNjZXNzaWJsZWApO1xuICAgICAgICB9XG4gICAgICAgIGlmICgha2V5c3RvcmVQYXNzd29yZCB8fCAha2V5QWxpYXMgfHwgIWtleVBhc3N3b3JkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJdCBpcyBtYW5kYXRvcnkgdG8gYWxzbyBwcm92aWRlIGtleXN0b3JlIHBhc3N3b3JkLCBrZXkgYWxpYXMsICcgK1xuICAgICAgICAgICAgJ2FuZCBrZXkgcGFzc3dvcmQgaWYgdGhlIGtleXN0b3JlIHBhdGggaXMgc2V0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5c3RvcmVIYXNoID0gYXdhaXQgZnMuaGFzaChrZXlzdG9yZSk7XG4gICAgICAgIGNvbnN0IGtleUFsaWFzSGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGExJyk7XG4gICAgICAgIGtleUFsaWFzSGFzaC51cGRhdGUoa2V5QWxpYXMpO1xuICAgICAgICBjYWNoZUhhc2ggPSBbY2FjaGVIYXNoLCBrZXlzdG9yZUhhc2gsIGtleUFsaWFzSGFzaC5kaWdlc3QoJ2hleCcpXS5qb2luKCc6Jyk7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoYENhbGN1bGF0ZWQgdGhlIGNhY2hlIGtleSBmb3IgJyR7YWFiUGF0aH0nOiAke2NhY2hlSGFzaH1gKTtcbiAgICAgIGlmIChBQUJfQ0FDSEUuaGFzKGNhY2hlSGFzaCkpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0UGF0aCA9IHBhdGgucmVzb2x2ZShBQUJfQ0FDSEUuZ2V0KGNhY2hlSGFzaCksIGFwa05hbWUpO1xuICAgICAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHJlc3VsdFBhdGgpKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgQUFCX0NBQ0hFLmRlbChjYWNoZUhhc2gpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLmluaXRBYXB0MigpO1xuICAgICAgY29uc3QgYXJncyA9IFtcbiAgICAgICAgJ2J1aWxkLWFwa3MnLFxuICAgICAgICAnLS1hYXB0MicsIHRoaXMuYmluYXJpZXMuYWFwdDIsXG4gICAgICAgICctLWJ1bmRsZScsIGFhYlBhdGgsXG4gICAgICAgICctLW91dHB1dCcsIHRtcEFwa3NQYXRoLFxuICAgICAgICAuLi4oa2V5c3RvcmUgPyBbXG4gICAgICAgICAgJy0ta3MnLCBrZXlzdG9yZSxcbiAgICAgICAgICAnLS1rcy1wYXNzJywgYHBhc3M6JHtrZXlzdG9yZVBhc3N3b3JkfWAsXG4gICAgICAgICAgJy0ta3Mta2V5LWFsaWFzJywga2V5QWxpYXMsXG4gICAgICAgICAgJy0ta2V5LXBhc3MnLCBgcGFzczoke2tleVBhc3N3b3JkfWAsXG4gICAgICAgIF0gOiBbXSksXG4gICAgICAgICctLW1vZGU9dW5pdmVyc2FsJ1xuICAgICAgXTtcbiAgICAgIGxvZy5kZWJ1ZyhgUHJlcGFyaW5nIHVuaXZlcnNhbCAuYXBrcyBidW5kbGUgZnJvbSAnJHthYWJQYXRofSdgKTtcbiAgICAgIGF3YWl0IHRoaXMuZXhlY0J1bmRsZXRvb2woYXJncywgYENhbm5vdCBidWlsZCBhIHVuaXZlcnNhbCAuYXBrcyBidW5kbGUgZnJvbSAnJHthYWJQYXRofSdgKTtcblxuICAgICAgbG9nLmRlYnVnKGBVbnBhY2tpbmcgdW5pdmVyc2FsIGFwcGxpY2F0aW9uIGJ1bmRsZSBhdCAnJHt0bXBBcGtzUGF0aH0nIHRvICcke3RtcFJvb3R9J2ApO1xuICAgICAgYXdhaXQgdW56aXBGaWxlKHRtcEFwa3NQYXRoLCB0bXBSb290KTtcbiAgICAgIGxldCB1bml2ZXJzYWxBcGtQYXRoO1xuICAgICAgY29uc3QgZmlsZURlbGV0aW9uUHJvbWlzZXMgPSBbXTtcbiAgICAgIGNvbnN0IGFsbEZpbGVOYW1lcyA9IGF3YWl0IGZzLnJlYWRkaXIodG1wUm9vdCk7XG4gICAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIGFsbEZpbGVOYW1lcykge1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbih0bXBSb290LCBmaWxlTmFtZSk7XG4gICAgICAgIGlmIChmaWxlTmFtZSA9PT0gVU5JVkVSU0FMX0FQSykge1xuICAgICAgICAgIHVuaXZlcnNhbEFwa1BhdGggPSBmdWxsUGF0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWxlRGVsZXRpb25Qcm9taXNlcy5wdXNoKGZzLnJpbXJhZihmdWxsUGF0aCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBCLmFsbChmaWxlRGVsZXRpb25Qcm9taXNlcyk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgICBpZiAoIXVuaXZlcnNhbEFwa1BhdGgpIHtcbiAgICAgICAgbG9nLmRlYnVnKGBUaGUgZm9sbG93aW5nIGl0ZW1zIHdlcmUgZXh0cmFjdGVkIGZyb20gdGhlIC5hYWIgYnVuZGxlOiAke2FsbEZpbGVOYW1lc31gKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke1VOSVZFUlNBTF9BUEt9IGNhbm5vdCBiZSBmb3VuZCBpbiAnJHthYWJQYXRofScgYnVuZGxlLiBgICtcbiAgICAgICAgICBgRG9lcyB0aGUgYXJjaGl2ZSBjb250YWluIGEgdmFsaWQgYXBwbGljYXRpb24gYnVuZGxlP2ApO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0UGF0aCA9IHBhdGguam9pbih0bXBSb290LCBhcGtOYW1lKTtcbiAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgJHtVTklWRVJTQUxfQVBLfSBhdCAnJHt1bml2ZXJzYWxBcGtQYXRofScuIENhY2hpbmcgaXQgdG8gJyR7cmVzdWx0UGF0aH0nYCk7XG4gICAgICBhd2FpdCBmcy5tdih1bml2ZXJzYWxBcGtQYXRoLCByZXN1bHRQYXRoKTtcbiAgICAgIEFBQl9DQUNIRS5zZXQoY2FjaGVIYXNoLCB0bXBSb290KTtcbiAgICAgIHJldHVybiByZXN1bHRQYXRoO1xuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICAgIHRocm93IGU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGFhYlV0aWxzTWV0aG9kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsU0FBUyxHQUFHLElBQUlDLGlCQUFHLENBQUM7RUFDeEJDLEdBQUcsRUFBRSxFQUFFO0VBQ1BDLE9BQU8sRUFBRSxDQUFDQyxJQUFJLEVBQUVDLGtCQUFrQixLQUFLQyxXQUFFLENBQUNDLE1BQU0sQ0FBQ0Ysa0JBQWtCO0FBQ3JF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aab-utils.js","names":["AAB_CACHE","LRU","max","dispose","hash","extractedFilesRoot","fs","rimraf","AAB_CACHE_GUARD","AsyncLock","UNIVERSAL_APK","aabUtilsMethods","process","on","size","paths","values","log","debug","length","util","pluralize","appPath","rimrafSync","e","warn","message","extractUniversalApk","aabPath","opts","exists","Error","aabName","path","basename","apkName","substring","extname","tmpRoot","tempDir","openDir","tmpApksPath","join","acquire","aabHash","keystore","keystorePassword","keyAlias","keyPassword","cacheHash","keystoreHash","keyAliasHash","crypto","createHash","update","digest","has","resultPath","resolve","get","del","initAapt2","args","binaries","aapt2","execBundletool","unzipFile","universalApkPath","fileDeletionPromises","allFileNames","readdir","fileName","fullPath","push","B","all","ign","mv","set"],"sources":["../../../lib/tools/aab-utils.js"],"sourcesContent":["import log from '../logger.js';\nimport path from 'path';\nimport { fs, tempDir, util } from '@appium/support';\nimport LRU from 'lru-cache';\nimport { unzipFile } from '../helpers.js';\nimport AsyncLock from 'async-lock';\nimport B from 'bluebird';\nimport crypto from 'crypto';\n\nconst AAB_CACHE = new LRU({\n max: 10,\n dispose: (hash, extractedFilesRoot) => fs.rimraf(extractedFilesRoot),\n});\nconst AAB_CACHE_GUARD = new AsyncLock();\nconst UNIVERSAL_APK = 'universal.apk';\n\nconst aabUtilsMethods = {};\n\nprocess.on('exit', () => {\n if (!AAB_CACHE.size) {\n return;\n }\n\n const paths = [...AAB_CACHE.values()];\n log.debug(`Performing cleanup of ${paths.length} cached .aab ` +\n util.pluralize('package', paths.length));\n for (const appPath of paths) {\n try {\n // Asynchronous calls are not supported in onExit handler\n fs.rimrafSync(appPath);\n } catch (e) {\n log.warn(e.message);\n }\n }\n});\n\n/**\n * @typedef {Object} ApkCreationOptions\n * @property {string} keystore Specifies the path to the deployment keystore used\n * to sign the APKs. This flag is optional. If you don't include it,\n * bundletool attempts to sign your APKs with a debug signing key.\n * If the .apk has been already signed and cached then it is not going to be resigned\n * unless a different keystore or key alias is used.\n * @property {string} keystorePassword Specifies your keystore’s password.\n * It is mandatory to provide this value if `keystore` one is assigned\n * otherwise it is going to be ignored.\n * @property {string} keyAlias Specifies the alias of the signing key you want to use.\n * It is mandatory to provide this value if `keystore` one is assigned\n * otherwise it is going to be ignored.\n * @property {string} keyPassword Specifies the password for the signing key.\n * It is mandatory to provide this value if `keystore` one is assigned\n * otherwise it is going to be ignored.\n */\n\n/**\n * Builds a universal .apk from the given .aab package. See\n * https://developer.android.com/studio/command-line/bundletool#generate_apks\n * for more details.\n *\n * @param {string} aabPath Full path to the source .aab package\n * @param {ApkCreationOptions} opts\n * @returns The path to the resulting universal .apk. The .apk is stored in the internal cache\n * by default.\n * @throws {Error} If there was an error while creating the universal .apk\n */\naabUtilsMethods.extractUniversalApk = async function extractUniversalApk (aabPath, opts = {}) {\n if (!await fs.exists(aabPath)) {\n throw new Error(`The file at '${aabPath}' either does not exist or is not accessible`);\n }\n\n const aabName = path.basename(aabPath);\n const apkName = aabName.substring(0, aabName.length - path.extname(aabName).length) + '.apk';\n const tmpRoot = await tempDir.openDir();\n const tmpApksPath = path.join(tmpRoot, `${aabName}.apks`);\n try {\n return await AAB_CACHE_GUARD.acquire(aabPath, async () => {\n const aabHash = await fs.hash(aabPath);\n const {\n keystore,\n keystorePassword,\n keyAlias,\n keyPassword,\n } = opts;\n let cacheHash = aabHash;\n if (keystore) {\n if (!await fs.exists(keystore)) {\n throw new Error(`The keystore file at '${keystore}' either does not exist ` +\n `or is not accessible`);\n }\n if (!keystorePassword || !keyAlias || !keyPassword) {\n throw new Error('It is mandatory to also provide keystore password, key alias, ' +\n 'and key password if the keystore path is set');\n }\n const keystoreHash = await fs.hash(keystore);\n const keyAliasHash = crypto.createHash('sha1');\n keyAliasHash.update(keyAlias);\n cacheHash = [cacheHash, keystoreHash, keyAliasHash.digest('hex')].join(':');\n }\n log.debug(`Calculated the cache key for '${aabPath}': ${cacheHash}`);\n if (AAB_CACHE.has(cacheHash)) {\n const resultPath = path.resolve(AAB_CACHE.get(cacheHash), apkName);\n if (await fs.exists(resultPath)) {\n return resultPath;\n }\n AAB_CACHE.del(cacheHash);\n }\n\n await this.initAapt2();\n const args = [\n 'build-apks',\n '--aapt2', this.binaries.aapt2,\n '--bundle', aabPath,\n '--output', tmpApksPath,\n ...(keystore ? [\n '--ks', keystore,\n '--ks-pass', `pass:${keystorePassword}`,\n '--ks-key-alias', keyAlias,\n '--key-pass', `pass:${keyPassword}`,\n ] : []),\n '--mode=universal'\n ];\n log.debug(`Preparing universal .apks bundle from '${aabPath}'`);\n await this.execBundletool(args, `Cannot build a universal .apks bundle from '${aabPath}'`);\n\n log.debug(`Unpacking universal application bundle at '${tmpApksPath}' to '${tmpRoot}'`);\n await unzipFile(tmpApksPath, tmpRoot);\n let universalApkPath;\n const fileDeletionPromises = [];\n const allFileNames = await fs.readdir(tmpRoot);\n for (const fileName of allFileNames) {\n const fullPath = path.join(tmpRoot, fileName);\n if (fileName === UNIVERSAL_APK) {\n universalApkPath = fullPath;\n } else {\n fileDeletionPromises.push(fs.rimraf(fullPath));\n }\n }\n try {\n await B.all(fileDeletionPromises);\n } catch (ign) {}\n if (!universalApkPath) {\n log.debug(`The following items were extracted from the .aab bundle: ${allFileNames}`);\n throw new Error(`${UNIVERSAL_APK} cannot be found in '${aabPath}' bundle. ` +\n `Does the archive contain a valid application bundle?`);\n }\n const resultPath = path.join(tmpRoot, apkName);\n log.debug(`Found ${UNIVERSAL_APK} at '${universalApkPath}'. Caching it to '${resultPath}'`);\n await fs.mv(universalApkPath, resultPath);\n AAB_CACHE.set(cacheHash, tmpRoot);\n return resultPath;\n });\n } catch (e) {\n await fs.rimraf(tmpRoot);\n throw e;\n }\n};\n\nexport default aabUtilsMethods;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aab-utils.js","names":["AAB_CACHE","LRU","max","dispose","hash","extractedFilesRoot","fs","rimraf","AAB_CACHE_GUARD","AsyncLock","UNIVERSAL_APK","aabUtilsMethods","process","on","size","paths","values","log","debug","length","util","pluralize","appPath","rimrafSync","e","warn","message","extractUniversalApk","aabPath","opts","exists","Error","aabName","path","basename","apkName","substring","extname","tmpRoot","tempDir","openDir","tmpApksPath","join","acquire","aabHash","keystore","keystorePassword","keyAlias","keyPassword","cacheHash","keystoreHash","keyAliasHash","crypto","createHash","update","digest","has","resultPath","resolve","get","del","initAapt2","args","binaries","aapt2","execBundletool","unzipFile","universalApkPath","fileDeletionPromises","allFileNames","readdir","fileName","fullPath","push","B","all","ign","mv","set"],"sources":["../../../lib/tools/aab-utils.js"],"sourcesContent":["import log from '../logger.js';\nimport path from 'path';\nimport { fs, tempDir, util } from '@appium/support';\nimport LRU from 'lru-cache';\nimport { unzipFile } from '../helpers.js';\nimport AsyncLock from 'async-lock';\nimport B from 'bluebird';\nimport crypto from 'crypto';\n\nconst AAB_CACHE = new LRU({\n max: 10,\n dispose: (hash, extractedFilesRoot) => fs.rimraf(extractedFilesRoot),\n});\nconst AAB_CACHE_GUARD = new AsyncLock();\nconst UNIVERSAL_APK = 'universal.apk';\n\nconst aabUtilsMethods = {};\n\nprocess.on('exit', () => {\n if (!AAB_CACHE.size) {\n return;\n }\n\n const paths = [...AAB_CACHE.values()];\n log.debug(`Performing cleanup of ${paths.length} cached .aab ` +\n util.pluralize('package', paths.length));\n for (const appPath of paths) {\n try {\n // Asynchronous calls are not supported in onExit handler\n fs.rimrafSync(appPath);\n } catch (e) {\n log.warn(e.message);\n }\n }\n});\n\n/**\n * @typedef {Object} ApkCreationOptions\n * @property {string} keystore Specifies the path to the deployment keystore used\n * to sign the APKs. This flag is optional. If you don't include it,\n * bundletool attempts to sign your APKs with a debug signing key.\n * If the .apk has been already signed and cached then it is not going to be resigned\n * unless a different keystore or key alias is used.\n * @property {string} keystorePassword Specifies your keystore’s password.\n * It is mandatory to provide this value if `keystore` one is assigned\n * otherwise it is going to be ignored.\n * @property {string} keyAlias Specifies the alias of the signing key you want to use.\n * It is mandatory to provide this value if `keystore` one is assigned\n * otherwise it is going to be ignored.\n * @property {string} keyPassword Specifies the password for the signing key.\n * It is mandatory to provide this value if `keystore` one is assigned\n * otherwise it is going to be ignored.\n */\n\n/**\n * Builds a universal .apk from the given .aab package. See\n * https://developer.android.com/studio/command-line/bundletool#generate_apks\n * for more details.\n *\n * @param {string} aabPath Full path to the source .aab package\n * @param {ApkCreationOptions} opts\n * @returns The path to the resulting universal .apk. The .apk is stored in the internal cache\n * by default.\n * @throws {Error} If there was an error while creating the universal .apk\n */\naabUtilsMethods.extractUniversalApk = async function extractUniversalApk (aabPath, opts = {}) {\n if (!await fs.exists(aabPath)) {\n throw new Error(`The file at '${aabPath}' either does not exist or is not accessible`);\n }\n\n const aabName = path.basename(aabPath);\n const apkName = aabName.substring(0, aabName.length - path.extname(aabName).length) + '.apk';\n const tmpRoot = await tempDir.openDir();\n const tmpApksPath = path.join(tmpRoot, `${aabName}.apks`);\n try {\n return await AAB_CACHE_GUARD.acquire(aabPath, async () => {\n const aabHash = await fs.hash(aabPath);\n const {\n keystore,\n keystorePassword,\n keyAlias,\n keyPassword,\n } = opts;\n let cacheHash = aabHash;\n if (keystore) {\n if (!await fs.exists(keystore)) {\n throw new Error(`The keystore file at '${keystore}' either does not exist ` +\n `or is not accessible`);\n }\n if (!keystorePassword || !keyAlias || !keyPassword) {\n throw new Error('It is mandatory to also provide keystore password, key alias, ' +\n 'and key password if the keystore path is set');\n }\n const keystoreHash = await fs.hash(keystore);\n const keyAliasHash = crypto.createHash('sha1');\n keyAliasHash.update(keyAlias);\n cacheHash = [cacheHash, keystoreHash, keyAliasHash.digest('hex')].join(':');\n }\n log.debug(`Calculated the cache key for '${aabPath}': ${cacheHash}`);\n if (AAB_CACHE.has(cacheHash)) {\n const resultPath = path.resolve(AAB_CACHE.get(cacheHash), apkName);\n if (await fs.exists(resultPath)) {\n return resultPath;\n }\n AAB_CACHE.del(cacheHash);\n }\n\n await this.initAapt2();\n const args = [\n 'build-apks',\n '--aapt2', this.binaries.aapt2,\n '--bundle', aabPath,\n '--output', tmpApksPath,\n ...(keystore ? [\n '--ks', keystore,\n '--ks-pass', `pass:${keystorePassword}`,\n '--ks-key-alias', keyAlias,\n '--key-pass', `pass:${keyPassword}`,\n ] : []),\n '--mode=universal'\n ];\n log.debug(`Preparing universal .apks bundle from '${aabPath}'`);\n await this.execBundletool(args, `Cannot build a universal .apks bundle from '${aabPath}'`);\n\n log.debug(`Unpacking universal application bundle at '${tmpApksPath}' to '${tmpRoot}'`);\n await unzipFile(tmpApksPath, tmpRoot);\n let universalApkPath;\n const fileDeletionPromises = [];\n const allFileNames = await fs.readdir(tmpRoot);\n for (const fileName of allFileNames) {\n const fullPath = path.join(tmpRoot, fileName);\n if (fileName === UNIVERSAL_APK) {\n universalApkPath = fullPath;\n } else {\n fileDeletionPromises.push(fs.rimraf(fullPath));\n }\n }\n try {\n await B.all(fileDeletionPromises);\n } catch (ign) {}\n if (!universalApkPath) {\n log.debug(`The following items were extracted from the .aab bundle: ${allFileNames}`);\n throw new Error(`${UNIVERSAL_APK} cannot be found in '${aabPath}' bundle. ` +\n `Does the archive contain a valid application bundle?`);\n }\n const resultPath = path.join(tmpRoot, apkName);\n log.debug(`Found ${UNIVERSAL_APK} at '${universalApkPath}'. Caching it to '${resultPath}'`);\n await fs.mv(universalApkPath, resultPath);\n AAB_CACHE.set(cacheHash, tmpRoot);\n return resultPath;\n });\n } catch (e) {\n await fs.rimraf(tmpRoot);\n throw e;\n }\n};\n\nexport default aabUtilsMethods;\n"],"mappings":"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"}
|