appium-remote-debugger 9.1.2 → 9.1.4
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 +1 -0
- package/README.md +1 -13
- package/build/index.js +2 -9
- package/build/lib/atoms.js +2 -25
- package/build/lib/atoms.js.map +1 -0
- package/build/lib/logger.js +2 -8
- package/build/lib/logger.js.map +1 -0
- package/build/lib/mixins/connect.js +6 -72
- package/build/lib/mixins/connect.js.map +1 -0
- package/build/lib/mixins/events.js +2 -6
- package/build/lib/mixins/events.js.map +1 -0
- package/build/lib/mixins/execute.js +4 -37
- package/build/lib/mixins/execute.js.map +1 -0
- package/build/lib/mixins/index.js +2 -12
- package/build/lib/mixins/index.js.map +1 -0
- package/build/lib/mixins/message-handlers.js +2 -36
- package/build/lib/mixins/message-handlers.js.map +1 -0
- package/build/lib/mixins/navigate.js +5 -55
- package/build/lib/mixins/navigate.js.map +1 -0
- package/build/lib/protocol/index.js +21 -10
- package/build/lib/protocol/index.js.map +1 -0
- package/build/lib/remote-debugger-real-device.js +2 -12
- package/build/lib/remote-debugger-real-device.js.map +1 -0
- package/build/lib/remote-debugger.js +3 -64
- package/build/lib/remote-debugger.js.map +1 -0
- package/build/lib/rpc/index.js +2 -8
- package/build/lib/rpc/index.js.map +1 -0
- package/build/lib/rpc/remote-messages.js +6 -31
- package/build/lib/rpc/remote-messages.js.map +1 -0
- package/build/lib/rpc/rpc-client-real-device.js +2 -19
- package/build/lib/rpc/rpc-client-real-device.js.map +1 -0
- package/build/lib/rpc/rpc-client-simulator.js +5 -33
- package/build/lib/rpc/rpc-client-simulator.js.map +1 -0
- package/build/lib/rpc/rpc-client.js +14 -112
- package/build/lib/rpc/rpc-client.js.map +1 -0
- package/build/lib/rpc/rpc-message-handler.js +2 -55
- package/build/lib/rpc/rpc-message-handler.js.map +1 -0
- package/build/lib/utils.js +10 -47
- package/build/lib/utils.js.map +1 -0
- package/package.json +49 -25
- package/scripts/build-atoms.js +6 -0
- package/scripts/build-selenium.js +3 -0
- package/scripts/common.js +194 -0
- package/scripts/import-atoms.js +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-client.js","names":["DATA_LOG_LENGTH","length","WAIT_FOR_TARGET_TIMEOUT","WAIT_FOR_TARGET_INTERVAL","MIN_PLATFORM_FOR_TARGET_BASED","MIN_PLATFORM_NO_TARGET_EXISTS","isTargetBased","isSafari","platformVersion","isHighVersion","util","compareVersions","log","debug","RpcClient","constructor","opts","_targets","_shouldCheckForTarget","shouldCheckForTarget","bundleId","logAllCommunication","logAllCommunicationHexDump","webInspectorMaxFrameLength","socketChunkSize","fullPageInitialization","isConnected","connId","uuidV4","senderId","msgId","_contexts","contexts","needsTarget","targets","connected","on","event","listener","messageHandler","once","off","warn","_isTargetBased","remoteMessages","RemoteMessages","RpcMessageHandler","addTarget","bind","updateTarget","removeTarget","onExecutionContextCreated","onGarbageCollected","waitForTarget","appIdKey","pageIdKey","force","getTarget","waitForCondition","_","isEmpty","waitMs","intervalMs","error","err","message","includes","Error","send","command","waitForResponse","timer","timing","Timer","start","sendToDevice","toLowerCase","info","getDuration","asMilliSeconds","toFixed","B","resolve","reject","wrapperMsgId","toString","targetId","fullOpts","defaults","id","cmd","getRemoteCommand","__argument","WIRSocketDataKey","isNil","Buffer","from","JSON","stringify","messageHandled","truncate","listeners","__selector","prependOnceListener","args","value","code","msg","res","sendMessage","connect","disconnect","removeAllListeners","receive","app","targetInfo","pendingTargetNotification","isProvisional","has","oldTargetId","newTargetId","provisional","page","toPairs","selectPage","sendOpts","enabled","Object","assign","initializePageFull","initializePage","disabled","instruments","active","state","depth","shouldPause","loggingChannels","source","channels","map","entry","level","selectApp","onAppChange","dict","oldAppIdKey","WIRHostApplicationIdentifierKey","correctAppIdKey","WIRApplicationIdentifierKey","pageDict","connectedAppIdKey","context","push","onScriptParsed","scriptInfo"],"sources":["../../../lib/rpc/rpc-client.js"],"sourcesContent":["import RemoteMessages from './remote-messages';\nimport { waitForCondition } from 'asyncbox';\nimport log from '../logger';\nimport _ from 'lodash';\nimport B from 'bluebird';\nimport RpcMessageHandler from './rpc-message-handler';\nimport { util, timing } from 'appium/support';\n\n\nconst DATA_LOG_LENGTH = {length: 200};\n\nconst WAIT_FOR_TARGET_TIMEOUT = 10000;\nconst WAIT_FOR_TARGET_INTERVAL = 1000;\n\nconst MIN_PLATFORM_FOR_TARGET_BASED = '12.2';\n\n// `Target.exists` protocol method was removed from WebKitin 13.4\nconst MIN_PLATFORM_NO_TARGET_EXISTS = '13.4';\n\nfunction isTargetBased (isSafari, platformVersion) {\n // On iOS 12.2 the messages get sent through the Target domain\n // On iOS 13.0+, WKWebView also needs to follow the Target domain,\n // so here only check the target OS version as the default behaviour.\n const isHighVersion = util.compareVersions(platformVersion, '>=', MIN_PLATFORM_FOR_TARGET_BASED);\n log.debug(`Checking which communication style to use (${isSafari ? '' : 'non-'}Safari on platform version '${platformVersion}')`);\n log.debug(`Platform version equal or higher than '${MIN_PLATFORM_FOR_TARGET_BASED}': ${isHighVersion}`);\n return isHighVersion;\n}\n\nexport default class RpcClient {\n constructor (opts = {}) {\n this._targets = [];\n this._shouldCheckForTarget = !!opts.shouldCheckForTarget;\n\n const {\n bundleId,\n platformVersion = {},\n isSafari = true,\n logAllCommunication = false,\n logAllCommunicationHexDump = false,\n webInspectorMaxFrameLength,\n socketChunkSize,\n fullPageInitialization = false,\n } = opts;\n\n this.isSafari = isSafari;\n\n this.isConnected = false;\n this.connId = util.uuidV4();\n this.senderId = util.uuidV4();\n this.msgId = 0;\n\n this.logAllCommunication = logAllCommunication;\n this.logAllCommunicationHexDump = logAllCommunicationHexDump;\n this.socketChunkSize = socketChunkSize;\n this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;\n\n this.fullPageInitialization = fullPageInitialization;\n\n this.bundleId = bundleId;\n this.platformVersion = platformVersion;\n\n this._contexts = [];\n this._targets = {};\n\n // start with a best guess for the protocol\n this.isTargetBased = isTargetBased(isSafari, this.platformVersion);\n }\n\n get contexts () {\n return this._contexts;\n }\n\n get needsTarget () {\n return this.shouldCheckForTarget && this.isTargetBased;\n }\n\n get targets () {\n return this._targets;\n }\n\n get shouldCheckForTarget () {\n return this._shouldCheckForTarget;\n }\n\n set shouldCheckForTarget (shouldCheckForTarget) {\n this._shouldCheckForTarget = !!shouldCheckForTarget;\n }\n\n get isConnected () {\n return this.connected;\n }\n\n set isConnected (connected) {\n this.connected = !!connected;\n }\n\n on (event, listener) {\n this.messageHandler.on(event, listener);\n return this;\n }\n\n once (event, listener) {\n this.messageHandler.once(event, listener);\n return this;\n }\n\n off (event, listener) {\n this.messageHandler.off(event, listener);\n return this;\n }\n\n set isTargetBased (isTargetBased) {\n log.warn(`Setting communication protocol: using ${isTargetBased ? 'Target-based' : 'full Web Inspector protocol'} communication`);\n this._isTargetBased = isTargetBased;\n\n if (!this.remoteMessages) {\n this.remoteMessages = new RemoteMessages(isTargetBased);\n } else {\n this.remoteMessages.isTargetBased = isTargetBased;\n }\n\n if (!this.messageHandler) {\n this.messageHandler = new RpcMessageHandler(isTargetBased);\n\n // add handlers for internal events\n this.messageHandler.on('Target.targetCreated', this.addTarget.bind(this));\n this.messageHandler.on('Target.didCommitProvisionalTarget', this.updateTarget.bind(this));\n this.messageHandler.on('Target.targetDestroyed', this.removeTarget.bind(this));\n this.messageHandler.on('Runtime.executionContextCreated', this.onExecutionContextCreated.bind(this));\n this.messageHandler.on('Heap.garbageCollected', this.onGarbageCollected.bind(this));\n } else {\n this.messageHandler.isTargetBased = isTargetBased;\n }\n }\n\n get isTargetBased () {\n return this._isTargetBased;\n }\n\n async waitForTarget (appIdKey, pageIdKey, force = false) {\n if (!force && !this.needsTarget) {\n return;\n }\n\n if (this.getTarget(appIdKey, pageIdKey)) {\n return;\n }\n\n // otherwise waiting is necessary to see what the target is\n try {\n await waitForCondition(() => !_.isEmpty(this.getTarget(appIdKey, pageIdKey)), {\n waitMs: WAIT_FOR_TARGET_TIMEOUT,\n intervalMs: WAIT_FOR_TARGET_INTERVAL,\n error: 'No targets found, unable to communicate with device',\n });\n } catch (err) {\n if (!err.message.includes('Condition unmet')) {\n throw err;\n }\n throw new Error('No targets found, unable to communicate with device');\n }\n }\n\n async send (command, opts = {}, waitForResponse = true) {\n const timer = new timing.Timer().start();\n const {\n appIdKey,\n pageIdKey\n } = opts;\n try {\n if (!_.isEmpty(appIdKey) && !_.isEmpty(pageIdKey)) {\n await this.waitForTarget(appIdKey, pageIdKey);\n }\n return await this.sendToDevice(command, opts, waitForResponse);\n } catch (err) {\n let { message = '' } = err;\n message = message.toLowerCase();\n if (message.includes(`'target' domain was not found`)) {\n log.info('The target device does not support Target based communication. ' +\n 'Will follow non-target based communication.');\n this.isTargetBased = false;\n return await this.sendToDevice(command, opts, waitForResponse);\n } else if (message.includes(`domain was not found`) ||\n message.includes(`some arguments of method`) ||\n message.includes(`missing target`)) {\n this.isTargetBased = true;\n await this.waitForTarget(appIdKey, pageIdKey);\n return await this.sendToDevice(command, opts, waitForResponse);\n }\n throw err;\n } finally {\n log.debug(`Sending to Web Inspector took ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);\n }\n }\n\n async sendToDevice (command, opts = {}, waitForResponse = true) {\n return await new B(async (resolve, reject) => {\n // promise to be resolved whenever remote debugger\n // replies to our request\n\n // keep track of the messages coming and going using a simple sequential id\n const msgId = this.msgId++;\n let wrapperMsgId = msgId;\n if (this.isTargetBased) {\n // for target-base communication, everything is wrapped up\n wrapperMsgId = this.msgId++;\n // acknowledge wrapper message\n this.messageHandler.on(wrapperMsgId.toString(), function (err) {\n if (err) {\n reject(err);\n }\n });\n }\n\n const appIdKey = opts.appIdKey;\n const pageIdKey = opts.pageIdKey;\n const targetId = this.getTarget(appIdKey, pageIdKey);\n\n // retrieve the correct command to send\n const fullOpts = _.defaults({\n connId: this.connId,\n senderId: this.senderId,\n targetId,\n id: msgId,\n }, opts);\n const cmd = this.remoteMessages.getRemoteCommand(command, fullOpts);\n\n if (cmd?.__argument?.WIRSocketDataKey) {\n // make sure the message being sent has all the information that is needed\n if (_.isNil(cmd.__argument.WIRSocketDataKey.id)) {\n cmd.__argument.WIRSocketDataKey.id = wrapperMsgId;\n }\n cmd.__argument.WIRSocketDataKey =\n Buffer.from(JSON.stringify(cmd.__argument.WIRSocketDataKey));\n }\n\n let messageHandled = true;\n if (!waitForResponse) {\n // the promise will be resolved as soon as the socket has been sent\n messageHandled = false;\n // do not log receipts\n this.messageHandler.once(msgId.toString(), function (err) {\n if (err) {\n // we are not waiting for this, and if it errors it is most likely\n // a protocol change. Log and check during testing\n log.error(`Received error from send that is not being waited for (id: ${msgId}): '${_.truncate(JSON.stringify(err), DATA_LOG_LENGTH)}'`);\n // reject, though it is very rare that this will be triggered, since\n // the promise is resolved directlty after send. On the off chance,\n // though, it will alert of a protocol change.\n reject(err);\n }\n });\n } else if (this.messageHandler.listeners(cmd.__selector).length) {\n this.messageHandler.prependOnceListener(cmd.__selector, function (err, ...args) {\n if (err) {\n return reject(err);\n }\n log.debug(`Received response from send (id: ${msgId}): '${_.truncate(JSON.stringify(args), DATA_LOG_LENGTH)}'`);\n resolve(args);\n });\n } else if (cmd?.__argument?.WIRSocketDataKey) {\n this.messageHandler.once(msgId.toString(), function (err, value) {\n if (err) {\n return reject(new Error(`Remote debugger error with code '${err.code}': ${err.message}`));\n }\n log.debug(`Received data response from send (id: ${msgId}): '${_.truncate(JSON.stringify(value), DATA_LOG_LENGTH)}'`);\n resolve(value);\n });\n } else {\n // nothing else is handling things, so just resolve when the message is sent\n messageHandled = false;\n }\n\n const msg = `Sending '${cmd.__selector}' message` +\n (fullOpts.appIdKey ? ` to app '${fullOpts.appIdKey}'` : '') +\n (fullOpts.pageIdKey ? `, page '${fullOpts.pageIdKey}'` : '') +\n (this.needsTarget && targetId ? `, target '${targetId}'` : '') +\n ` (id: ${msgId}): '${command}'`;\n log.debug(msg);\n try {\n const res = await this.sendMessage(cmd);\n if (!messageHandled) {\n // There are no handlers waiting for a response before resolving,\n // and no errors sending the message over the socket, so resolve\n resolve(res);\n }\n } catch (err) {\n return reject(err);\n }\n });\n }\n\n async connect () { // eslint-disable-line require-await\n throw new Error(`Sub-classes need to implement a 'connect' function`);\n }\n\n async disconnect () { // eslint-disable-line require-await\n this.messageHandler.removeAllListeners();\n }\n\n async sendMessage (/* command */) { // eslint-disable-line require-await\n throw new Error(`Sub-classes need to implement a 'sendMessage' function`);\n }\n\n async receive (/* data */) { // eslint-disable-line require-await\n throw new Error(`Sub-classes need to implement a 'receive' function`);\n }\n\n addTarget (err, app, targetInfo) {\n if (_.isNil(targetInfo?.targetId)) {\n log.warn(`Received 'Target.targetCreated' event for app '${app}' with no target. Skipping`);\n return;\n }\n if (_.isEmpty(this.pendingTargetNotification) && !targetInfo.isProvisional) {\n log.warn(`Received 'Target.targetCreated' event for app '${app}' with no pending request: ${JSON.stringify(targetInfo)}`);\n return;\n }\n\n if (targetInfo.isProvisional) {\n log.debug(`Provisional target created for app '${app}', '${targetInfo.targetId}'. Ignoring until target update event`);\n return;\n }\n\n const [appIdKey, pageIdKey] = this.pendingTargetNotification;\n\n log.debug(`Target created for app '${appIdKey}' and page '${pageIdKey}': ${JSON.stringify(targetInfo)}`);\n if (_.has(this.targets[appIdKey], pageIdKey)) {\n log.debug(`There is already a target for this app and page ('${this.targets[appIdKey][pageIdKey]}'). This might cause problems`);\n }\n this.targets[app] = this.targets[app] || {};\n this.targets[appIdKey][pageIdKey] = targetInfo.targetId;\n }\n\n updateTarget (err, app, oldTargetId, newTargetId) {\n log.debug(`Target updated for app '${app}'. Old target: '${oldTargetId}', new target: '${newTargetId}'`);\n if (!this.targets[app]) {\n log.warn(`No existing target for app '${app}'. Not sure what to do`);\n return;\n }\n // save this, to be used if/when the existing target is destroyed\n this.targets[app].provisional = {\n oldTargetId,\n newTargetId,\n };\n }\n\n removeTarget (err, app, targetInfo) {\n if (_.isNil(targetInfo?.targetId)) {\n log.debug(`Received 'Target.targetDestroyed' event with no target. Skipping`);\n return;\n }\n\n log.debug(`Target destroyed for app '${app}': ${targetInfo.targetId}`);\n\n // go through the targets and find the one that has a waiting provisional target\n if (this.targets[app]?.provisional?.oldTargetId === targetInfo.targetId) {\n const {oldTargetId, newTargetId} = this.targets[app].provisional;\n delete this.targets[app].provisional;\n\n // we do not know the page, so go through and find the existing target\n const targets = this.targets[app];\n for (const [page, targetId] of _.toPairs(targets)) {\n if (targetId === oldTargetId) {\n log.debug(`Found provisional target for app '${app}'. Old target: '${oldTargetId}', new target: '${newTargetId}'. Updating`);\n targets[page] = newTargetId;\n return;\n }\n }\n log.warn(`Provisional target for app '${app}' found, but no suitable existing target found. This may cause problems`);\n log.warn(`Old target: '${oldTargetId}', new target: '${newTargetId}'. Existing targets: ${JSON.stringify(targets)}`);\n }\n\n // if there is no waiting provisional target, just get rid of the existing one\n const targets = this.targets[app];\n for (const [page, targetId] of _.toPairs(targets)) {\n if (targetId === targetInfo.targetId) {\n delete targets[page];\n return;\n }\n }\n log.debug(`Target '${targetInfo.targetId}' deleted for app '${app}', but no such target exists`);\n }\n\n getTarget (appIdKey, pageIdKey) {\n return (this.targets[appIdKey] || {})[pageIdKey];\n }\n\n async selectPage (appIdKey, pageIdKey) {\n this.pendingTargetNotification = [appIdKey, pageIdKey];\n this.shouldCheckForTarget = false;\n\n // go through the steps that the Desktop Safari system\n // goes through to initialize the Web Inspector session\n\n const sendOpts = {\n appIdKey,\n pageIdKey,\n };\n\n // highlight and then un-highlight the webview\n for (const enabled of [true, false]) {\n await this.send('indicateWebView', Object.assign({\n enabled,\n }, sendOpts), false);\n }\n\n await this.send('setSenderKey', sendOpts);\n log.debug('Sender key set');\n\n if (this.isTargetBased && util.compareVersions(this.platformVersion, '<', MIN_PLATFORM_NO_TARGET_EXISTS)) {\n await this.send('Target.exists', sendOpts, false);\n }\n\n this.shouldCheckForTarget = true;\n\n if (this.fullPageInitialization) {\n await this.initializePageFull(appIdKey, pageIdKey);\n } else {\n await this.initializePage(appIdKey, pageIdKey);\n }\n }\n\n /*\n * Perform the minimal initialization to get the Web Inspector working\n */\n async initializePage (appIdKey, pageIdKey) {\n const sendOpts = {\n appIdKey,\n pageIdKey,\n };\n\n await this.send('Inspector.enable', sendOpts, false);\n await this.send('Page.enable', sendOpts, false);\n\n // go through the tasks to initialize\n await this.send('Network.enable', sendOpts, false);\n await this.send('Runtime.enable', sendOpts, false);\n await this.send('Heap.enable', sendOpts, false);\n await this.send('Debugger.enable', sendOpts, false);\n await this.send('Console.enable', sendOpts, false);\n await this.send('Inspector.initialized', sendOpts, false);\n }\n\n /*\n * Mimic every step that Desktop Safari Develop tools uses to initialize a\n * Web Inspector session\n */\n async initializePageFull (appIdKey, pageIdKey) {\n const sendOpts = {\n appIdKey,\n pageIdKey,\n };\n\n await this.send('Inspector.enable', sendOpts, false);\n await this.send('Page.enable', sendOpts, false);\n\n // go through the tasks to initialize\n await this.send('Page.getResourceTree', sendOpts, false);\n await this.send('Network.enable', sendOpts, false);\n await this.send('Network.setResourceCachingDisabled', Object.assign({\n disabled: false,\n }, sendOpts), false);\n await this.send('DOMStorage.enable', sendOpts, false);\n await this.send('Database.enable', sendOpts, false);\n await this.send('IndexedDB.enable', sendOpts, false);\n await this.send('CSS.enable', sendOpts, false);\n await this.send('Runtime.enable', sendOpts, false);\n await this.send('Heap.enable', sendOpts, false);\n await this.send('Memory.enable', sendOpts, false);\n await this.send('ApplicationCache.enable', sendOpts, false);\n await this.send('ApplicationCache.getFramesWithManifests', sendOpts, false);\n await this.send('Timeline.setInstruments', Object.assign({\n instruments: ['Timeline', 'ScriptProfiler', 'CPU'],\n }, sendOpts), false);\n await this.send('Timeline.setAutoCaptureEnabled', Object.assign({\n enabled: false,\n }, sendOpts), false);\n await this.send('Debugger.enable', sendOpts, false);\n await this.send('Debugger.setBreakpointsActive', Object.assign({\n active: true,\n }, sendOpts), false);\n await this.send('Debugger.setPauseOnExceptions', Object.assign({\n state: 'none',\n }, sendOpts), false);\n await this.send('Debugger.setPauseOnAssertions', Object.assign({\n enabled: false,\n }, sendOpts), false);\n await this.send('Debugger.setAsyncStackTraceDepth', Object.assign({\n depth: 200,\n }, sendOpts), false);\n await this.send('Debugger.setPauseForInternalScripts', Object.assign({\n shouldPause: false,\n }, sendOpts), false);\n\n await this.send('LayerTree.enable', sendOpts, false);\n await this.send('Worker.enable', sendOpts, false);\n await this.send('Canvas.enable', sendOpts, false);\n await this.send('Console.enable', sendOpts, false);\n await this.send('DOM.getDocument', sendOpts, false);\n const loggingChannels = await this.send('Console.getLoggingChannels', sendOpts);\n for (const source of (loggingChannels.channels || []).map((entry) => entry.source)) {\n await this.send('Console.setLoggingChannelLevel', Object.assign({\n source,\n level: 'verbose',\n }, sendOpts), false);\n }\n\n await this.send('Inspector.initialized', sendOpts, false);\n }\n\n async selectApp (appIdKey) {\n return await new B((resolve, reject) => {\n // local callback, temporarily added as callback to\n // `_rpc_applicationConnected:` remote debugger response\n // to handle the initial connection\n const onAppChange = (err, dict) => {\n if (err) {\n return reject(err);\n }\n // from the dictionary returned, get the ids\n const oldAppIdKey = dict.WIRHostApplicationIdentifierKey;\n const correctAppIdKey = dict.WIRApplicationIdentifierKey;\n\n // if this is a report of a proxy redirect from the remote debugger\n // we want to update our dictionary and get a new app id\n if (oldAppIdKey && correctAppIdKey !== oldAppIdKey) {\n log.debug(`We were notified we might have connected to the wrong app. ` +\n `Using id ${correctAppIdKey} instead of ${oldAppIdKey}`);\n }\n\n reject(new Error('New application has connected'));\n };\n this.messageHandler.prependOnceListener('_rpc_applicationConnected:', onAppChange);\n\n // do the actual connecting to the app\n return (async () => {\n let pageDict, connectedAppIdKey;\n try {\n ([connectedAppIdKey, pageDict] = await this.send('connectToApp', {\n appIdKey\n }));\n } catch (err) {\n log.warn(`Unable to connect to app: ${err.message}`);\n reject(err);\n }\n\n // sometimes the connect logic happens, but with an empty dictionary\n // which leads to the remote debugger getting disconnected, and into a loop\n if (_.isEmpty(pageDict)) {\n let msg = 'Empty page dictionary received';\n log.debug(msg);\n reject(new Error(msg));\n } else {\n resolve([connectedAppIdKey, pageDict]);\n }\n })();\n });\n }\n\n onExecutionContextCreated (err, context) {\n // { id: 2, isPageContext: true, name: '', frameId: '0.1' }\n // right now we have no way to map contexts to apps/pages\n // so just store\n this.contexts.push(context.id);\n }\n\n onGarbageCollected () {\n // just want to log that this is happening, as it can affect opertion\n log.debug(`Web Inspector garbage collected`);\n }\n\n onScriptParsed (err, scriptInfo) {\n // { scriptId: '13', url: '', startLine: 0, startColumn: 0, endLine: 82, endColumn: 3 }\n log.debug(`Script parsed: ${JSON.stringify(scriptInfo)}`);\n }\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAMA,eAAe,GAAG;EAACC,MAAM,EAAE;AAAG,CAAC;AAErC,MAAMC,uBAAuB,GAAG,KAAK;AACrC,MAAMC,wBAAwB,GAAG,IAAI;AAErC,MAAMC,6BAA6B,GAAG,MAAM;;AAG5C,MAAMC,6BAA6B,GAAG,MAAM;AAE5C,SAASC,aAAa,CAAEC,QAAQ,EAAEC,eAAe,EAAE;EAIjD,MAAMC,aAAa,GAAGC,aAAI,CAACC,eAAe,CAACH,eAAe,EAAE,IAAI,EAAEJ,6BAA6B,CAAC;EAChGQ,eAAG,CAACC,KAAK,CAAE,8CAA6CN,QAAQ,GAAG,EAAE,GAAG,MAAO,+BAA8BC,eAAgB,IAAG,CAAC;EACjII,eAAG,CAACC,KAAK,CAAE,0CAAyCT,6BAA8B,MAAKK,aAAc,EAAC,CAAC;EACvG,OAAOA,aAAa;AACtB;AAEe,MAAMK,SAAS,CAAC;EAC7BC,WAAW,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;IACtB,IAAI,CAACC,QAAQ,GAAG,EAAE;IAClB,IAAI,CAACC,qBAAqB,GAAG,CAAC,CAACF,IAAI,CAACG,oBAAoB;IAExD,MAAM;MACJC,QAAQ;MACRZ,eAAe,GAAG,CAAC,CAAC;MACpBD,QAAQ,GAAG,IAAI;MACfc,mBAAmB,GAAG,KAAK;MAC3BC,0BAA0B,GAAG,KAAK;MAClCC,0BAA0B;MAC1BC,eAAe;MACfC,sBAAsB,GAAG;IAC3B,CAAC,GAAGT,IAAI;IAER,IAAI,CAACT,QAAQ,GAAGA,QAAQ;IAExB,IAAI,CAACmB,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,MAAM,GAAGjB,aAAI,CAACkB,MAAM,EAAE;IAC3B,IAAI,CAACC,QAAQ,GAAGnB,aAAI,CAACkB,MAAM,EAAE;IAC7B,IAAI,CAACE,KAAK,GAAG,CAAC;IAEd,IAAI,CAACT,mBAAmB,GAAGA,mBAAmB;IAC9C,IAAI,CAACC,0BAA0B,GAAGA,0BAA0B;IAC5D,IAAI,CAACE,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACD,0BAA0B,GAAGA,0BAA0B;IAE5D,IAAI,CAACE,sBAAsB,GAAGA,sBAAsB;IAEpD,IAAI,CAACL,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACZ,eAAe,GAAGA,eAAe;IAEtC,IAAI,CAACuB,SAAS,GAAG,EAAE;IACnB,IAAI,CAACd,QAAQ,GAAG,CAAC,CAAC;;IAGlB,IAAI,CAACX,aAAa,GAAGA,aAAa,CAACC,QAAQ,EAAE,IAAI,CAACC,eAAe,CAAC;EACpE;EAEA,IAAIwB,QAAQ,GAAI;IACd,OAAO,IAAI,CAACD,SAAS;EACvB;EAEA,IAAIE,WAAW,GAAI;IACjB,OAAO,IAAI,CAACd,oBAAoB,IAAI,IAAI,CAACb,aAAa;EACxD;EAEA,IAAI4B,OAAO,GAAI;IACb,OAAO,IAAI,CAACjB,QAAQ;EACtB;EAEA,IAAIE,oBAAoB,GAAI;IAC1B,OAAO,IAAI,CAACD,qBAAqB;EACnC;EAEA,IAAIC,oBAAoB,CAAEA,oBAAoB,EAAE;IAC9C,IAAI,CAACD,qBAAqB,GAAG,CAAC,CAACC,oBAAoB;EACrD;EAEA,IAAIO,WAAW,GAAI;IACjB,OAAO,IAAI,CAACS,SAAS;EACvB;EAEA,IAAIT,WAAW,CAAES,SAAS,EAAE;IAC1B,IAAI,CAACA,SAAS,GAAG,CAAC,CAACA,SAAS;EAC9B;EAEAC,EAAE,CAAEC,KAAK,EAAEC,QAAQ,EAAE;IACnB,IAAI,CAACC,cAAc,CAACH,EAAE,CAACC,KAAK,EAAEC,QAAQ,CAAC;IACvC,OAAO,IAAI;EACb;EAEAE,IAAI,CAAEH,KAAK,EAAEC,QAAQ,EAAE;IACrB,IAAI,CAACC,cAAc,CAACC,IAAI,CAACH,KAAK,EAAEC,QAAQ,CAAC;IACzC,OAAO,IAAI;EACb;EAEAG,GAAG,CAAEJ,KAAK,EAAEC,QAAQ,EAAE;IACpB,IAAI,CAACC,cAAc,CAACE,GAAG,CAACJ,KAAK,EAAEC,QAAQ,CAAC;IACxC,OAAO,IAAI;EACb;EAEA,IAAIhC,aAAa,CAAEA,aAAa,EAAE;IAChCM,eAAG,CAAC8B,IAAI,CAAE,yCAAwCpC,aAAa,GAAG,cAAc,GAAG,6BAA8B,gBAAe,CAAC;IACjI,IAAI,CAACqC,cAAc,GAAGrC,aAAa;IAEnC,IAAI,CAAC,IAAI,CAACsC,cAAc,EAAE;MACxB,IAAI,CAACA,cAAc,GAAG,IAAIC,uBAAc,CAACvC,aAAa,CAAC;IACzD,CAAC,MAAM;MACL,IAAI,CAACsC,cAAc,CAACtC,aAAa,GAAGA,aAAa;IACnD;IAEA,IAAI,CAAC,IAAI,CAACiC,cAAc,EAAE;MACxB,IAAI,CAACA,cAAc,GAAG,IAAIO,0BAAiB,CAACxC,aAAa,CAAC;;MAG1D,IAAI,CAACiC,cAAc,CAACH,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAACW,SAAS,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;MACzE,IAAI,CAACT,cAAc,CAACH,EAAE,CAAC,mCAAmC,EAAE,IAAI,CAACa,YAAY,CAACD,IAAI,CAAC,IAAI,CAAC,CAAC;MACzF,IAAI,CAACT,cAAc,CAACH,EAAE,CAAC,wBAAwB,EAAE,IAAI,CAACc,YAAY,CAACF,IAAI,CAAC,IAAI,CAAC,CAAC;MAC9E,IAAI,CAACT,cAAc,CAACH,EAAE,CAAC,iCAAiC,EAAE,IAAI,CAACe,yBAAyB,CAACH,IAAI,CAAC,IAAI,CAAC,CAAC;MACpG,IAAI,CAACT,cAAc,CAACH,EAAE,CAAC,uBAAuB,EAAE,IAAI,CAACgB,kBAAkB,CAACJ,IAAI,CAAC,IAAI,CAAC,CAAC;IACrF,CAAC,MAAM;MACL,IAAI,CAACT,cAAc,CAACjC,aAAa,GAAGA,aAAa;IACnD;EACF;EAEA,IAAIA,aAAa,GAAI;IACnB,OAAO,IAAI,CAACqC,cAAc;EAC5B;EAEA,MAAMU,aAAa,CAAEC,QAAQ,EAAEC,SAAS,EAAEC,KAAK,GAAG,KAAK,EAAE;IACvD,IAAI,CAACA,KAAK,IAAI,CAAC,IAAI,CAACvB,WAAW,EAAE;MAC/B;IACF;IAEA,IAAI,IAAI,CAACwB,SAAS,CAACH,QAAQ,EAAEC,SAAS,CAAC,EAAE;MACvC;IACF;;IAGA,IAAI;MACF,MAAM,IAAAG,0BAAgB,EAAC,MAAM,CAACC,eAAC,CAACC,OAAO,CAAC,IAAI,CAACH,SAAS,CAACH,QAAQ,EAAEC,SAAS,CAAC,CAAC,EAAE;QAC5EM,MAAM,EAAE3D,uBAAuB;QAC/B4D,UAAU,EAAE3D,wBAAwB;QACpC4D,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZ,IAAI,CAACA,GAAG,CAACC,OAAO,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;QAC5C,MAAMF,GAAG;MACX;MACA,MAAM,IAAIG,KAAK,CAAC,qDAAqD,CAAC;IACxE;EACF;EAEA,MAAMC,IAAI,CAAEC,OAAO,EAAErD,IAAI,GAAG,CAAC,CAAC,EAAEsD,eAAe,GAAG,IAAI,EAAE;IACtD,MAAMC,KAAK,GAAG,IAAIC,eAAM,CAACC,KAAK,EAAE,CAACC,KAAK,EAAE;IACxC,MAAM;MACJpB,QAAQ;MACRC;IACF,CAAC,GAAGvC,IAAI;IACR,IAAI;MACF,IAAI,CAAC2C,eAAC,CAACC,OAAO,CAACN,QAAQ,CAAC,IAAI,CAACK,eAAC,CAACC,OAAO,CAACL,SAAS,CAAC,EAAE;QACjD,MAAM,IAAI,CAACF,aAAa,CAACC,QAAQ,EAAEC,SAAS,CAAC;MAC/C;MACA,OAAO,MAAM,IAAI,CAACoB,YAAY,CAACN,OAAO,EAAErD,IAAI,EAAEsD,eAAe,CAAC;IAChE,CAAC,CAAC,OAAON,GAAG,EAAE;MACZ,IAAI;QAAEC,OAAO,GAAG;MAAG,CAAC,GAAGD,GAAG;MAC1BC,OAAO,GAAGA,OAAO,CAACW,WAAW,EAAE;MAC/B,IAAIX,OAAO,CAACC,QAAQ,CAAE,+BAA8B,CAAC,EAAE;QACrDtD,eAAG,CAACiE,IAAI,CAAC,iEAAiE,GACxE,6CAA6C,CAAC;QAChD,IAAI,CAACvE,aAAa,GAAG,KAAK;QAC1B,OAAO,MAAM,IAAI,CAACqE,YAAY,CAACN,OAAO,EAAErD,IAAI,EAAEsD,eAAe,CAAC;MAChE,CAAC,MAAM,IAAIL,OAAO,CAACC,QAAQ,CAAE,sBAAqB,CAAC,IAC/CD,OAAO,CAACC,QAAQ,CAAE,0BAAyB,CAAC,IAC5CD,OAAO,CAACC,QAAQ,CAAE,gBAAe,CAAC,EAAE;QACtC,IAAI,CAAC5D,aAAa,GAAG,IAAI;QACzB,MAAM,IAAI,CAAC+C,aAAa,CAACC,QAAQ,EAAEC,SAAS,CAAC;QAC7C,OAAO,MAAM,IAAI,CAACoB,YAAY,CAACN,OAAO,EAAErD,IAAI,EAAEsD,eAAe,CAAC;MAChE;MACA,MAAMN,GAAG;IACX,CAAC,SAAS;MACRpD,eAAG,CAACC,KAAK,CAAE,iCAAgC0D,KAAK,CAACO,WAAW,EAAE,CAACC,cAAc,CAACC,OAAO,CAAC,CAAC,CAAE,IAAG,CAAC;IAC/F;EACF;EAEA,MAAML,YAAY,CAAEN,OAAO,EAAErD,IAAI,GAAG,CAAC,CAAC,EAAEsD,eAAe,GAAG,IAAI,EAAE;IAC9D,OAAO,MAAM,IAAIW,iBAAC,CAAC,OAAOC,OAAO,EAAEC,MAAM,KAAK;MAAA;;MAK5C,MAAMrD,KAAK,GAAG,IAAI,CAACA,KAAK,EAAE;MAC1B,IAAIsD,YAAY,GAAGtD,KAAK;MACxB,IAAI,IAAI,CAACxB,aAAa,EAAE;QAEtB8E,YAAY,GAAG,IAAI,CAACtD,KAAK,EAAE;QAE3B,IAAI,CAACS,cAAc,CAACH,EAAE,CAACgD,YAAY,CAACC,QAAQ,EAAE,EAAE,UAAUrB,GAAG,EAAE;UAC7D,IAAIA,GAAG,EAAE;YACPmB,MAAM,CAACnB,GAAG,CAAC;UACb;QACF,CAAC,CAAC;MACJ;MAEA,MAAMV,QAAQ,GAAGtC,IAAI,CAACsC,QAAQ;MAC9B,MAAMC,SAAS,GAAGvC,IAAI,CAACuC,SAAS;MAChC,MAAM+B,QAAQ,GAAG,IAAI,CAAC7B,SAAS,CAACH,QAAQ,EAAEC,SAAS,CAAC;;MAGpD,MAAMgC,QAAQ,GAAG5B,eAAC,CAAC6B,QAAQ,CAAC;QAC1B7D,MAAM,EAAE,IAAI,CAACA,MAAM;QACnBE,QAAQ,EAAE,IAAI,CAACA,QAAQ;QACvByD,QAAQ;QACRG,EAAE,EAAE3D;MACN,CAAC,EAAEd,IAAI,CAAC;MACR,MAAM0E,GAAG,GAAG,IAAI,CAAC9C,cAAc,CAAC+C,gBAAgB,CAACtB,OAAO,EAAEkB,QAAQ,CAAC;MAEnE,IAAIG,GAAG,aAAHA,GAAG,kCAAHA,GAAG,CAAEE,UAAU,4CAAf,gBAAiBC,gBAAgB,EAAE;QAErC,IAAIlC,eAAC,CAACmC,KAAK,CAACJ,GAAG,CAACE,UAAU,CAACC,gBAAgB,CAACJ,EAAE,CAAC,EAAE;UAC/CC,GAAG,CAACE,UAAU,CAACC,gBAAgB,CAACJ,EAAE,GAAGL,YAAY;QACnD;QACAM,GAAG,CAACE,UAAU,CAACC,gBAAgB,GAC7BE,MAAM,CAACC,IAAI,CAACC,IAAI,CAACC,SAAS,CAACR,GAAG,CAACE,UAAU,CAACC,gBAAgB,CAAC,CAAC;MAChE;MAEA,IAAIM,cAAc,GAAG,IAAI;MACzB,IAAI,CAAC7B,eAAe,EAAE;QAEpB6B,cAAc,GAAG,KAAK;QAEtB,IAAI,CAAC5D,cAAc,CAACC,IAAI,CAACV,KAAK,CAACuD,QAAQ,EAAE,EAAE,UAAUrB,GAAG,EAAE;UACxD,IAAIA,GAAG,EAAE;YAGPpD,eAAG,CAACmD,KAAK,CAAE,8DAA6DjC,KAAM,OAAM6B,eAAC,CAACyC,QAAQ,CAACH,IAAI,CAACC,SAAS,CAAClC,GAAG,CAAC,EAAEhE,eAAe,CAAE,GAAE,CAAC;YAIxImF,MAAM,CAACnB,GAAG,CAAC;UACb;QACF,CAAC,CAAC;MACJ,CAAC,MAAM,IAAI,IAAI,CAACzB,cAAc,CAAC8D,SAAS,CAACX,GAAG,CAACY,UAAU,CAAC,CAACrG,MAAM,EAAE;QAC/D,IAAI,CAACsC,cAAc,CAACgE,mBAAmB,CAACb,GAAG,CAACY,UAAU,EAAE,UAAUtC,GAAG,EAAE,GAAGwC,IAAI,EAAE;UAC9E,IAAIxC,GAAG,EAAE;YACP,OAAOmB,MAAM,CAACnB,GAAG,CAAC;UACpB;UACApD,eAAG,CAACC,KAAK,CAAE,oCAAmCiB,KAAM,OAAM6B,eAAC,CAACyC,QAAQ,CAACH,IAAI,CAACC,SAAS,CAACM,IAAI,CAAC,EAAExG,eAAe,CAAE,GAAE,CAAC;UAC/GkF,OAAO,CAACsB,IAAI,CAAC;QACf,CAAC,CAAC;MACJ,CAAC,MAAM,IAAId,GAAG,aAAHA,GAAG,mCAAHA,GAAG,CAAEE,UAAU,6CAAf,iBAAiBC,gBAAgB,EAAE;QAC5C,IAAI,CAACtD,cAAc,CAACC,IAAI,CAACV,KAAK,CAACuD,QAAQ,EAAE,EAAE,UAAUrB,GAAG,EAAEyC,KAAK,EAAE;UAC/D,IAAIzC,GAAG,EAAE;YACP,OAAOmB,MAAM,CAAC,IAAIhB,KAAK,CAAE,oCAAmCH,GAAG,CAAC0C,IAAK,MAAK1C,GAAG,CAACC,OAAQ,EAAC,CAAC,CAAC;UAC3F;UACArD,eAAG,CAACC,KAAK,CAAE,yCAAwCiB,KAAM,OAAM6B,eAAC,CAACyC,QAAQ,CAACH,IAAI,CAACC,SAAS,CAACO,KAAK,CAAC,EAAEzG,eAAe,CAAE,GAAE,CAAC;UACrHkF,OAAO,CAACuB,KAAK,CAAC;QAChB,CAAC,CAAC;MACJ,CAAC,MAAM;QAELN,cAAc,GAAG,KAAK;MACxB;MAEA,MAAMQ,GAAG,GAAI,YAAWjB,GAAG,CAACY,UAAW,WAAU,IAC9Cf,QAAQ,CAACjC,QAAQ,GAAI,YAAWiC,QAAQ,CAACjC,QAAS,GAAE,GAAG,EAAE,CAAC,IAC1DiC,QAAQ,CAAChC,SAAS,GAAI,WAAUgC,QAAQ,CAAChC,SAAU,GAAE,GAAG,EAAE,CAAC,IAC3D,IAAI,CAACtB,WAAW,IAAIqD,QAAQ,GAAI,aAAYA,QAAS,GAAE,GAAG,EAAE,CAAC,GAC7D,SAAQxD,KAAM,OAAMuC,OAAQ,GAAE;MACjCzD,eAAG,CAACC,KAAK,CAAC8F,GAAG,CAAC;MACd,IAAI;QACF,MAAMC,GAAG,GAAG,MAAM,IAAI,CAACC,WAAW,CAACnB,GAAG,CAAC;QACvC,IAAI,CAACS,cAAc,EAAE;UAGnBjB,OAAO,CAAC0B,GAAG,CAAC;QACd;MACF,CAAC,CAAC,OAAO5C,GAAG,EAAE;QACZ,OAAOmB,MAAM,CAACnB,GAAG,CAAC;MACpB;IACF,CAAC,CAAC;EACJ;EAEA,MAAM8C,OAAO,GAAI;IACf,MAAM,IAAI3C,KAAK,CAAE,oDAAmD,CAAC;EACvE;EAEA,MAAM4C,UAAU,GAAI;IAClB,IAAI,CAACxE,cAAc,CAACyE,kBAAkB,EAAE;EAC1C;EAEA,MAAMH,WAAW;EAAA,EAAiB;IAChC,MAAM,IAAI1C,KAAK,CAAE,wDAAuD,CAAC;EAC3E;EAEA,MAAM8C,OAAO;EAAA,EAAc;IACzB,MAAM,IAAI9C,KAAK,CAAE,oDAAmD,CAAC;EACvE;EAEApB,SAAS,CAAEiB,GAAG,EAAEkD,GAAG,EAAEC,UAAU,EAAE;IAC/B,IAAIxD,eAAC,CAACmC,KAAK,CAACqB,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE7B,QAAQ,CAAC,EAAE;MACjC1E,eAAG,CAAC8B,IAAI,CAAE,kDAAiDwE,GAAI,4BAA2B,CAAC;MAC3F;IACF;IACA,IAAIvD,eAAC,CAACC,OAAO,CAAC,IAAI,CAACwD,yBAAyB,CAAC,IAAI,CAACD,UAAU,CAACE,aAAa,EAAE;MAC1EzG,eAAG,CAAC8B,IAAI,CAAE,kDAAiDwE,GAAI,8BAA6BjB,IAAI,CAACC,SAAS,CAACiB,UAAU,CAAE,EAAC,CAAC;MACzH;IACF;IAEA,IAAIA,UAAU,CAACE,aAAa,EAAE;MAC5BzG,eAAG,CAACC,KAAK,CAAE,uCAAsCqG,GAAI,OAAMC,UAAU,CAAC7B,QAAS,uCAAsC,CAAC;MACtH;IACF;IAEA,MAAM,CAAChC,QAAQ,EAAEC,SAAS,CAAC,GAAG,IAAI,CAAC6D,yBAAyB;IAE5DxG,eAAG,CAACC,KAAK,CAAE,2BAA0ByC,QAAS,eAAcC,SAAU,MAAK0C,IAAI,CAACC,SAAS,CAACiB,UAAU,CAAE,EAAC,CAAC;IACxG,IAAIxD,eAAC,CAAC2D,GAAG,CAAC,IAAI,CAACpF,OAAO,CAACoB,QAAQ,CAAC,EAAEC,SAAS,CAAC,EAAE;MAC5C3C,eAAG,CAACC,KAAK,CAAE,qDAAoD,IAAI,CAACqB,OAAO,CAACoB,QAAQ,CAAC,CAACC,SAAS,CAAE,+BAA8B,CAAC;IAClI;IACA,IAAI,CAACrB,OAAO,CAACgF,GAAG,CAAC,GAAG,IAAI,CAAChF,OAAO,CAACgF,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAChF,OAAO,CAACoB,QAAQ,CAAC,CAACC,SAAS,CAAC,GAAG4D,UAAU,CAAC7B,QAAQ;EACzD;EAEArC,YAAY,CAAEe,GAAG,EAAEkD,GAAG,EAAEK,WAAW,EAAEC,WAAW,EAAE;IAChD5G,eAAG,CAACC,KAAK,CAAE,2BAA0BqG,GAAI,mBAAkBK,WAAY,mBAAkBC,WAAY,GAAE,CAAC;IACxG,IAAI,CAAC,IAAI,CAACtF,OAAO,CAACgF,GAAG,CAAC,EAAE;MACtBtG,eAAG,CAAC8B,IAAI,CAAE,+BAA8BwE,GAAI,wBAAuB,CAAC;MACpE;IACF;IAEA,IAAI,CAAChF,OAAO,CAACgF,GAAG,CAAC,CAACO,WAAW,GAAG;MAC9BF,WAAW;MACXC;IACF,CAAC;EACH;EAEAtE,YAAY,CAAEc,GAAG,EAAEkD,GAAG,EAAEC,UAAU,EAAE;IAAA;IAClC,IAAIxD,eAAC,CAACmC,KAAK,CAACqB,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE7B,QAAQ,CAAC,EAAE;MACjC1E,eAAG,CAACC,KAAK,CAAE,kEAAiE,CAAC;MAC7E;IACF;IAEAD,eAAG,CAACC,KAAK,CAAE,6BAA4BqG,GAAI,MAAKC,UAAU,CAAC7B,QAAS,EAAC,CAAC;;IAGtE,IAAI,0BAAI,CAACpD,OAAO,CAACgF,GAAG,CAAC,+EAAjB,kBAAmBO,WAAW,0DAA9B,sBAAgCF,WAAW,MAAKJ,UAAU,CAAC7B,QAAQ,EAAE;MACvE,MAAM;QAACiC,WAAW;QAAEC;MAAW,CAAC,GAAG,IAAI,CAACtF,OAAO,CAACgF,GAAG,CAAC,CAACO,WAAW;MAChE,OAAO,IAAI,CAACvF,OAAO,CAACgF,GAAG,CAAC,CAACO,WAAW;;MAGpC,MAAMvF,OAAO,GAAG,IAAI,CAACA,OAAO,CAACgF,GAAG,CAAC;MACjC,KAAK,MAAM,CAACQ,IAAI,EAAEpC,QAAQ,CAAC,IAAI3B,eAAC,CAACgE,OAAO,CAACzF,OAAO,CAAC,EAAE;QACjD,IAAIoD,QAAQ,KAAKiC,WAAW,EAAE;UAC5B3G,eAAG,CAACC,KAAK,CAAE,qCAAoCqG,GAAI,mBAAkBK,WAAY,mBAAkBC,WAAY,aAAY,CAAC;UAC5HtF,OAAO,CAACwF,IAAI,CAAC,GAAGF,WAAW;UAC3B;QACF;MACF;MACA5G,eAAG,CAAC8B,IAAI,CAAE,+BAA8BwE,GAAI,yEAAwE,CAAC;MACrHtG,eAAG,CAAC8B,IAAI,CAAE,gBAAe6E,WAAY,mBAAkBC,WAAY,wBAAuBvB,IAAI,CAACC,SAAS,CAAChE,OAAO,CAAE,EAAC,CAAC;IACtH;;IAGA,MAAMA,OAAO,GAAG,IAAI,CAACA,OAAO,CAACgF,GAAG,CAAC;IACjC,KAAK,MAAM,CAACQ,IAAI,EAAEpC,QAAQ,CAAC,IAAI3B,eAAC,CAACgE,OAAO,CAACzF,OAAO,CAAC,EAAE;MACjD,IAAIoD,QAAQ,KAAK6B,UAAU,CAAC7B,QAAQ,EAAE;QACpC,OAAOpD,OAAO,CAACwF,IAAI,CAAC;QACpB;MACF;IACF;IACA9G,eAAG,CAACC,KAAK,CAAE,WAAUsG,UAAU,CAAC7B,QAAS,sBAAqB4B,GAAI,8BAA6B,CAAC;EAClG;EAEAzD,SAAS,CAAEH,QAAQ,EAAEC,SAAS,EAAE;IAC9B,OAAO,CAAC,IAAI,CAACrB,OAAO,CAACoB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAEC,SAAS,CAAC;EAClD;EAEA,MAAMqE,UAAU,CAAEtE,QAAQ,EAAEC,SAAS,EAAE;IACrC,IAAI,CAAC6D,yBAAyB,GAAG,CAAC9D,QAAQ,EAAEC,SAAS,CAAC;IACtD,IAAI,CAACpC,oBAAoB,GAAG,KAAK;;IAKjC,MAAM0G,QAAQ,GAAG;MACfvE,QAAQ;MACRC;IACF,CAAC;;IAGD,KAAK,MAAMuE,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;MACnC,MAAM,IAAI,CAAC1D,IAAI,CAAC,iBAAiB,EAAE2D,MAAM,CAACC,MAAM,CAAC;QAC/CF;MACF,CAAC,EAAED,QAAQ,CAAC,EAAE,KAAK,CAAC;IACtB;IAEA,MAAM,IAAI,CAACzD,IAAI,CAAC,cAAc,EAAEyD,QAAQ,CAAC;IACzCjH,eAAG,CAACC,KAAK,CAAC,gBAAgB,CAAC;IAE3B,IAAI,IAAI,CAACP,aAAa,IAAII,aAAI,CAACC,eAAe,CAAC,IAAI,CAACH,eAAe,EAAE,GAAG,EAAEH,6BAA6B,CAAC,EAAE;MACxG,MAAM,IAAI,CAAC+D,IAAI,CAAC,eAAe,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACnD;IAEA,IAAI,CAAC1G,oBAAoB,GAAG,IAAI;IAEhC,IAAI,IAAI,CAACM,sBAAsB,EAAE;MAC/B,MAAM,IAAI,CAACwG,kBAAkB,CAAC3E,QAAQ,EAAEC,SAAS,CAAC;IACpD,CAAC,MAAM;MACL,MAAM,IAAI,CAAC2E,cAAc,CAAC5E,QAAQ,EAAEC,SAAS,CAAC;IAChD;EACF;;EAKA,MAAM2E,cAAc,CAAE5E,QAAQ,EAAEC,SAAS,EAAE;IACzC,MAAMsE,QAAQ,GAAG;MACfvE,QAAQ;MACRC;IACF,CAAC;IAED,MAAM,IAAI,CAACa,IAAI,CAAC,kBAAkB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACpD,MAAM,IAAI,CAACzD,IAAI,CAAC,aAAa,EAAEyD,QAAQ,EAAE,KAAK,CAAC;;IAG/C,MAAM,IAAI,CAACzD,IAAI,CAAC,gBAAgB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IAClD,MAAM,IAAI,CAACzD,IAAI,CAAC,gBAAgB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IAClD,MAAM,IAAI,CAACzD,IAAI,CAAC,aAAa,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IAC/C,MAAM,IAAI,CAACzD,IAAI,CAAC,iBAAiB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACnD,MAAM,IAAI,CAACzD,IAAI,CAAC,gBAAgB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IAClD,MAAM,IAAI,CAACzD,IAAI,CAAC,uBAAuB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;EAC3D;;EAMA,MAAMI,kBAAkB,CAAE3E,QAAQ,EAAEC,SAAS,EAAE;IAC7C,MAAMsE,QAAQ,GAAG;MACfvE,QAAQ;MACRC;IACF,CAAC;IAED,MAAM,IAAI,CAACa,IAAI,CAAC,kBAAkB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACpD,MAAM,IAAI,CAACzD,IAAI,CAAC,aAAa,EAAEyD,QAAQ,EAAE,KAAK,CAAC;;IAG/C,MAAM,IAAI,CAACzD,IAAI,CAAC,sBAAsB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACxD,MAAM,IAAI,CAACzD,IAAI,CAAC,gBAAgB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IAClD,MAAM,IAAI,CAACzD,IAAI,CAAC,oCAAoC,EAAE2D,MAAM,CAACC,MAAM,CAAC;MAClEG,QAAQ,EAAE;IACZ,CAAC,EAAEN,QAAQ,CAAC,EAAE,KAAK,CAAC;IACpB,MAAM,IAAI,CAACzD,IAAI,CAAC,mBAAmB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACrD,MAAM,IAAI,CAACzD,IAAI,CAAC,iBAAiB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACnD,MAAM,IAAI,CAACzD,IAAI,CAAC,kBAAkB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACpD,MAAM,IAAI,CAACzD,IAAI,CAAC,YAAY,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IAC9C,MAAM,IAAI,CAACzD,IAAI,CAAC,gBAAgB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IAClD,MAAM,IAAI,CAACzD,IAAI,CAAC,aAAa,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IAC/C,MAAM,IAAI,CAACzD,IAAI,CAAC,eAAe,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACjD,MAAM,IAAI,CAACzD,IAAI,CAAC,yBAAyB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IAC3D,MAAM,IAAI,CAACzD,IAAI,CAAC,yCAAyC,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IAC3E,MAAM,IAAI,CAACzD,IAAI,CAAC,yBAAyB,EAAE2D,MAAM,CAACC,MAAM,CAAC;MACvDI,WAAW,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK;IACnD,CAAC,EAAEP,QAAQ,CAAC,EAAE,KAAK,CAAC;IACpB,MAAM,IAAI,CAACzD,IAAI,CAAC,gCAAgC,EAAE2D,MAAM,CAACC,MAAM,CAAC;MAC9DF,OAAO,EAAE;IACX,CAAC,EAAED,QAAQ,CAAC,EAAE,KAAK,CAAC;IACpB,MAAM,IAAI,CAACzD,IAAI,CAAC,iBAAiB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACnD,MAAM,IAAI,CAACzD,IAAI,CAAC,+BAA+B,EAAE2D,MAAM,CAACC,MAAM,CAAC;MAC7DK,MAAM,EAAE;IACV,CAAC,EAAER,QAAQ,CAAC,EAAE,KAAK,CAAC;IACpB,MAAM,IAAI,CAACzD,IAAI,CAAC,+BAA+B,EAAE2D,MAAM,CAACC,MAAM,CAAC;MAC7DM,KAAK,EAAE;IACT,CAAC,EAAET,QAAQ,CAAC,EAAE,KAAK,CAAC;IACpB,MAAM,IAAI,CAACzD,IAAI,CAAC,+BAA+B,EAAE2D,MAAM,CAACC,MAAM,CAAC;MAC7DF,OAAO,EAAE;IACX,CAAC,EAAED,QAAQ,CAAC,EAAE,KAAK,CAAC;IACpB,MAAM,IAAI,CAACzD,IAAI,CAAC,kCAAkC,EAAE2D,MAAM,CAACC,MAAM,CAAC;MAChEO,KAAK,EAAE;IACT,CAAC,EAAEV,QAAQ,CAAC,EAAE,KAAK,CAAC;IACpB,MAAM,IAAI,CAACzD,IAAI,CAAC,qCAAqC,EAAE2D,MAAM,CAACC,MAAM,CAAC;MACnEQ,WAAW,EAAE;IACf,CAAC,EAAEX,QAAQ,CAAC,EAAE,KAAK,CAAC;IAEpB,MAAM,IAAI,CAACzD,IAAI,CAAC,kBAAkB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACpD,MAAM,IAAI,CAACzD,IAAI,CAAC,eAAe,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACjD,MAAM,IAAI,CAACzD,IAAI,CAAC,eAAe,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACjD,MAAM,IAAI,CAACzD,IAAI,CAAC,gBAAgB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IAClD,MAAM,IAAI,CAACzD,IAAI,CAAC,iBAAiB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;IACnD,MAAMY,eAAe,GAAG,MAAM,IAAI,CAACrE,IAAI,CAAC,4BAA4B,EAAEyD,QAAQ,CAAC;IAC/E,KAAK,MAAMa,MAAM,IAAI,CAACD,eAAe,CAACE,QAAQ,IAAI,EAAE,EAAEC,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACH,MAAM,CAAC,EAAE;MAClF,MAAM,IAAI,CAACtE,IAAI,CAAC,gCAAgC,EAAE2D,MAAM,CAACC,MAAM,CAAC;QAC9DU,MAAM;QACNI,KAAK,EAAE;MACT,CAAC,EAAEjB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACtB;IAEA,MAAM,IAAI,CAACzD,IAAI,CAAC,uBAAuB,EAAEyD,QAAQ,EAAE,KAAK,CAAC;EAC3D;EAEA,MAAMkB,SAAS,CAAEzF,QAAQ,EAAE;IACzB,OAAO,MAAM,IAAI2B,iBAAC,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MAItC,MAAM6D,WAAW,GAAG,CAAChF,GAAG,EAAEiF,IAAI,KAAK;QACjC,IAAIjF,GAAG,EAAE;UACP,OAAOmB,MAAM,CAACnB,GAAG,CAAC;QACpB;QAEA,MAAMkF,WAAW,GAAGD,IAAI,CAACE,+BAA+B;QACxD,MAAMC,eAAe,GAAGH,IAAI,CAACI,2BAA2B;;QAIxD,IAAIH,WAAW,IAAIE,eAAe,KAAKF,WAAW,EAAE;UAClDtI,eAAG,CAACC,KAAK,CAAE,6DAA4D,GAC5D,YAAWuI,eAAgB,eAAcF,WAAY,EAAC,CAAC;QACpE;QAEA/D,MAAM,CAAC,IAAIhB,KAAK,CAAC,+BAA+B,CAAC,CAAC;MACpD,CAAC;MACD,IAAI,CAAC5B,cAAc,CAACgE,mBAAmB,CAAC,4BAA4B,EAAEyC,WAAW,CAAC;;MAGlF,OAAO,CAAC,YAAY;QAClB,IAAIM,QAAQ,EAAEC,iBAAiB;QAC/B,IAAI;UACD,CAACA,iBAAiB,EAAED,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAClF,IAAI,CAAC,cAAc,EAAE;YAC/Dd;UACF,CAAC,CAAC;QACJ,CAAC,CAAC,OAAOU,GAAG,EAAE;UACZpD,eAAG,CAAC8B,IAAI,CAAE,6BAA4BsB,GAAG,CAACC,OAAQ,EAAC,CAAC;UACpDkB,MAAM,CAACnB,GAAG,CAAC;QACb;;QAIA,IAAIL,eAAC,CAACC,OAAO,CAAC0F,QAAQ,CAAC,EAAE;UACvB,IAAI3C,GAAG,GAAG,gCAAgC;UAC1C/F,eAAG,CAACC,KAAK,CAAC8F,GAAG,CAAC;UACdxB,MAAM,CAAC,IAAIhB,KAAK,CAACwC,GAAG,CAAC,CAAC;QACxB,CAAC,MAAM;UACLzB,OAAO,CAAC,CAACqE,iBAAiB,EAAED,QAAQ,CAAC,CAAC;QACxC;MACF,CAAC,GAAG;IACN,CAAC,CAAC;EACJ;EAEAnG,yBAAyB,CAAEa,GAAG,EAAEwF,OAAO,EAAE;IAIvC,IAAI,CAACxH,QAAQ,CAACyH,IAAI,CAACD,OAAO,CAAC/D,EAAE,CAAC;EAChC;EAEArC,kBAAkB,GAAI;IAEpBxC,eAAG,CAACC,KAAK,CAAE,iCAAgC,CAAC;EAC9C;EAEA6I,cAAc,CAAE1F,GAAG,EAAE2F,UAAU,EAAE;IAE/B/I,eAAG,CAACC,KAAK,CAAE,kBAAiBoF,IAAI,CAACC,SAAS,CAACyD,UAAU,CAAE,EAAC,CAAC;EAC3D;AACF;AAAC"}
|
|
@@ -1,90 +1,65 @@
|
|
|
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"));
|
|
13
|
-
|
|
14
10
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
15
|
-
|
|
16
11
|
var _support = require("appium/support");
|
|
17
|
-
|
|
18
12
|
var _events = _interopRequireDefault(require("events"));
|
|
19
|
-
|
|
20
13
|
class RpcMessageHandler extends _events.default {
|
|
21
14
|
constructor(isTargetBased = false) {
|
|
22
15
|
super();
|
|
23
16
|
this.isTargetBased = isTargetBased;
|
|
24
17
|
}
|
|
25
|
-
|
|
26
18
|
get isTargetBased() {
|
|
27
19
|
return this._isTargetBased;
|
|
28
20
|
}
|
|
29
|
-
|
|
30
21
|
set isTargetBased(isTargetBased) {
|
|
31
22
|
this._isTargetBased = !!isTargetBased;
|
|
32
23
|
}
|
|
33
|
-
|
|
34
24
|
async handleMessage(plist) {
|
|
35
25
|
const selector = plist.__selector;
|
|
36
|
-
|
|
37
26
|
if (!selector) {
|
|
38
27
|
_logger.default.debug('Got an invalid plist');
|
|
39
|
-
|
|
40
28
|
return;
|
|
41
29
|
}
|
|
42
|
-
|
|
43
30
|
const argument = plist.__argument;
|
|
44
|
-
|
|
45
31
|
switch (selector) {
|
|
46
32
|
case '_rpc_reportSetup:':
|
|
47
33
|
this.emit('_rpc_reportSetup:', null, argument.WIRSimulatorNameKey, argument.WIRSimulatorBuildKey, argument.WIRSimulatorProductVersionKey);
|
|
48
34
|
break;
|
|
49
|
-
|
|
50
35
|
case '_rpc_reportConnectedApplicationList:':
|
|
51
36
|
this.emit('_rpc_reportConnectedApplicationList:', null, argument.WIRApplicationDictionaryKey);
|
|
52
37
|
break;
|
|
53
|
-
|
|
54
38
|
case '_rpc_applicationSentListing:':
|
|
55
39
|
this.emit('_rpc_forwardGetListing:', null, argument.WIRApplicationIdentifierKey, argument.WIRListingKey);
|
|
56
40
|
break;
|
|
57
|
-
|
|
58
41
|
case '_rpc_applicationConnected:':
|
|
59
42
|
this.emit('_rpc_applicationConnected:', null, argument);
|
|
60
43
|
break;
|
|
61
|
-
|
|
62
44
|
case '_rpc_applicationDisconnected:':
|
|
63
45
|
this.emit('_rpc_applicationDisconnected:', null, argument);
|
|
64
46
|
break;
|
|
65
|
-
|
|
66
47
|
case '_rpc_applicationUpdated:':
|
|
67
48
|
this.emit('_rpc_applicationUpdated:', null, argument);
|
|
68
49
|
break;
|
|
69
|
-
|
|
70
50
|
case '_rpc_reportConnectedDriverList:':
|
|
71
51
|
this.emit('_rpc_reportConnectedDriverList:', null, argument);
|
|
72
52
|
break;
|
|
73
|
-
|
|
74
53
|
case '_rpc_reportCurrentState:':
|
|
75
54
|
this.emit('_rpc_reportCurrentState:', null, argument);
|
|
76
55
|
break;
|
|
77
|
-
|
|
78
56
|
case '_rpc_applicationSentData:':
|
|
79
57
|
await this.handleDataMessage(plist);
|
|
80
58
|
break;
|
|
81
|
-
|
|
82
59
|
default:
|
|
83
60
|
_logger.default.debug(`Debugger got a message for '${selector}' and have no ` + `handler, doing nothing.`);
|
|
84
|
-
|
|
85
61
|
}
|
|
86
62
|
}
|
|
87
|
-
|
|
88
63
|
parseDataKey(plist) {
|
|
89
64
|
try {
|
|
90
65
|
return JSON.parse(plist.__argument.WIRMessageDataKey.toString('utf8'));
|
|
@@ -92,83 +67,65 @@ class RpcMessageHandler extends _events.default {
|
|
|
92
67
|
_logger.default.error(`Unparseable message data: ${_lodash.default.truncate(JSON.stringify(plist), {
|
|
93
68
|
length: 100
|
|
94
69
|
})}`);
|
|
95
|
-
|
|
96
70
|
throw new Error(`Unable to parse message data: ${err.message}`);
|
|
97
71
|
}
|
|
98
72
|
}
|
|
99
|
-
|
|
100
73
|
async dispatchDataMessage(msgId, method, params, result, error) {
|
|
101
74
|
if (!_lodash.default.isEmpty(msgId)) {
|
|
102
75
|
_logger.default.debug(`Handling message (id: '${msgId}')`);
|
|
103
76
|
}
|
|
104
|
-
|
|
105
77
|
if (msgId) {
|
|
106
78
|
if (this.listenerCount(msgId)) {
|
|
107
79
|
var _result;
|
|
108
|
-
|
|
109
80
|
if (_lodash.default.has((_result = result) === null || _result === void 0 ? void 0 : _result.result, 'value')) {
|
|
110
81
|
result = result.result.value;
|
|
111
82
|
}
|
|
112
|
-
|
|
113
83
|
this.emit(msgId, error, result);
|
|
114
84
|
} else {
|
|
115
85
|
_logger.default.error(`Web Inspector returned data for message '${msgId}' ` + `but we were not waiting for that message! ` + `result: '${JSON.stringify(result)}'; ` + `error: '${JSON.stringify(error)}'`);
|
|
116
86
|
}
|
|
117
|
-
|
|
118
87
|
return;
|
|
119
88
|
}
|
|
120
|
-
|
|
121
89
|
let eventNames = [method];
|
|
122
90
|
let args = [params];
|
|
123
91
|
|
|
124
92
|
switch (method) {
|
|
125
93
|
case 'Page.frameStoppedLoading':
|
|
126
94
|
eventNames.push('Page.frameNavigated');
|
|
127
|
-
|
|
128
95
|
case 'Page.frameNavigated':
|
|
129
96
|
args = [`'${method}' event`];
|
|
130
97
|
break;
|
|
131
|
-
|
|
132
98
|
case 'Timeline.eventRecorded':
|
|
133
99
|
args = [params || params.record];
|
|
134
100
|
break;
|
|
135
|
-
|
|
136
101
|
case 'Console.messageAdded':
|
|
137
102
|
args = [params.message];
|
|
138
103
|
break;
|
|
139
|
-
|
|
140
104
|
case 'Runtime.executionContextCreated':
|
|
141
105
|
args = [params.context];
|
|
142
106
|
break;
|
|
143
|
-
|
|
144
107
|
default:
|
|
145
108
|
break;
|
|
146
109
|
}
|
|
147
|
-
|
|
148
110
|
if (_lodash.default.startsWith(method, 'Network.')) {
|
|
149
111
|
eventNames.push('NetworkEvent');
|
|
150
112
|
args.push(method);
|
|
151
113
|
}
|
|
152
|
-
|
|
153
114
|
if (_lodash.default.startsWith(method, 'Console.')) {
|
|
154
115
|
eventNames.push('ConsoleEvent');
|
|
155
116
|
args.push(method);
|
|
156
117
|
}
|
|
157
|
-
|
|
158
118
|
for (const name of eventNames) {
|
|
159
119
|
this.emit(name, error, ...args);
|
|
160
120
|
}
|
|
161
121
|
}
|
|
162
|
-
|
|
163
122
|
async handleDataMessage(plist) {
|
|
164
123
|
var _result2;
|
|
165
|
-
|
|
166
124
|
const dataKey = this.parseDataKey(plist);
|
|
167
125
|
let msgId = (dataKey.id || '').toString();
|
|
168
126
|
let result = dataKey.result;
|
|
169
127
|
let method = dataKey.method;
|
|
170
128
|
let params;
|
|
171
|
-
|
|
172
129
|
if (method === 'Target.targetCreated') {
|
|
173
130
|
const app = plist.__argument.WIRApplicationIdentifierKey;
|
|
174
131
|
const targetInfo = dataKey.params.targetInfo;
|
|
@@ -188,14 +145,12 @@ class RpcMessageHandler extends _events.default {
|
|
|
188
145
|
this.emit('Target.targetDestroyed', null, app, targetInfo);
|
|
189
146
|
return;
|
|
190
147
|
}
|
|
191
|
-
|
|
192
148
|
if (!dataKey.error && this.isTargetBased) {
|
|
193
149
|
if (dataKey.method !== 'Target.dispatchMessageFromTarget') {
|
|
194
150
|
return;
|
|
195
151
|
}
|
|
196
152
|
|
|
197
153
|
let message;
|
|
198
|
-
|
|
199
154
|
try {
|
|
200
155
|
message = JSON.parse(dataKey.params.message);
|
|
201
156
|
msgId = message.id;
|
|
@@ -204,7 +159,6 @@ class RpcMessageHandler extends _events.default {
|
|
|
204
159
|
params = result.params;
|
|
205
160
|
} catch (err) {
|
|
206
161
|
_logger.default.error(`Unexpected message format from Web Inspector:`);
|
|
207
|
-
|
|
208
162
|
this.warn(_support.util.jsonStringify(plist));
|
|
209
163
|
throw err;
|
|
210
164
|
}
|
|
@@ -213,20 +167,13 @@ class RpcMessageHandler extends _events.default {
|
|
|
213
167
|
}
|
|
214
168
|
|
|
215
169
|
let error = dataKey.error || null;
|
|
216
|
-
|
|
217
170
|
if ((_result2 = result) !== null && _result2 !== void 0 && _result2.wasThrown) {
|
|
218
171
|
var _result3, _result3$result, _result4, _result4$result, _result5, _result5$result, _result6, _result6$result;
|
|
219
|
-
|
|
220
172
|
const message = (_result3 = result) !== null && _result3 !== void 0 && (_result3$result = _result3.result) !== null && _result3$result !== void 0 && _result3$result.value || (_result4 = result) !== null && _result4 !== void 0 && (_result4$result = _result4.result) !== null && _result4$result !== void 0 && _result4$result.description ? ((_result5 = result) === null || _result5 === void 0 ? void 0 : (_result5$result = _result5.result) === null || _result5$result === void 0 ? void 0 : _result5$result.value) || ((_result6 = result) === null || _result6 === void 0 ? void 0 : (_result6$result = _result6.result) === null || _result6$result === void 0 ? void 0 : _result6$result.description) : 'Error occurred in handling data message';
|
|
221
173
|
error = new Error(message);
|
|
222
174
|
}
|
|
223
|
-
|
|
224
175
|
await this.dispatchDataMessage(msgId, method, params, result, error);
|
|
225
176
|
}
|
|
226
|
-
|
|
227
177
|
}
|
|
228
|
-
|
|
229
|
-
exports.default = RpcMessageHandler;require('source-map-support').install();
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3JwYy9ycGMtbWVzc2FnZS1oYW5kbGVyLmpzIiwibmFtZXMiOlsiUnBjTWVzc2FnZUhhbmRsZXIiLCJFdmVudEVtaXR0ZXJzIiwiY29uc3RydWN0b3IiLCJpc1RhcmdldEJhc2VkIiwiX2lzVGFyZ2V0QmFzZWQiLCJoYW5kbGVNZXNzYWdlIiwicGxpc3QiLCJzZWxlY3RvciIsIl9fc2VsZWN0b3IiLCJsb2ciLCJkZWJ1ZyIsImFyZ3VtZW50IiwiX19hcmd1bWVudCIsImVtaXQiLCJXSVJTaW11bGF0b3JOYW1lS2V5IiwiV0lSU2ltdWxhdG9yQnVpbGRLZXkiLCJXSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleSIsIldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSIsIldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsIldJUkxpc3RpbmdLZXkiLCJoYW5kbGVEYXRhTWVzc2FnZSIsInBhcnNlRGF0YUtleSIsIkpTT04iLCJwYXJzZSIsIldJUk1lc3NhZ2VEYXRhS2V5IiwidG9TdHJpbmciLCJlcnIiLCJlcnJvciIsIl8iLCJ0cnVuY2F0ZSIsInN0cmluZ2lmeSIsImxlbmd0aCIsIkVycm9yIiwibWVzc2FnZSIsImRpc3BhdGNoRGF0YU1lc3NhZ2UiLCJtc2dJZCIsIm1ldGhvZCIsInBhcmFtcyIsInJlc3VsdCIsImlzRW1wdHkiLCJsaXN0ZW5lckNvdW50IiwiaGFzIiwidmFsdWUiLCJldmVudE5hbWVzIiwiYXJncyIsInB1c2giLCJyZWNvcmQiLCJjb250ZXh0Iiwic3RhcnRzV2l0aCIsIm5hbWUiLCJkYXRhS2V5IiwiaWQiLCJhcHAiLCJ0YXJnZXRJbmZvIiwib2xkVGFyZ2V0SWQiLCJuZXdUYXJnZXRJZCIsInRhcmdldElkIiwid2FybiIsInV0aWwiLCJqc29uU3RyaW5naWZ5Iiwid2FzVGhyb3duIiwiZGVzY3JpcHRpb24iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvcnBjL3JwYy1tZXNzYWdlLWhhbmRsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgRXZlbnRFbWl0dGVycyBmcm9tICdldmVudHMnO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJwY01lc3NhZ2VIYW5kbGVyIGV4dGVuZHMgRXZlbnRFbWl0dGVycyB7XG4gIGNvbnN0cnVjdG9yIChpc1RhcmdldEJhc2VkID0gZmFsc2UpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5pc1RhcmdldEJhc2VkID0gaXNUYXJnZXRCYXNlZDtcbiAgfVxuXG4gIGdldCBpc1RhcmdldEJhc2VkICgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNUYXJnZXRCYXNlZDtcbiAgfVxuXG4gIHNldCBpc1RhcmdldEJhc2VkIChpc1RhcmdldEJhc2VkKSB7XG4gICAgdGhpcy5faXNUYXJnZXRCYXNlZCA9ICEhaXNUYXJnZXRCYXNlZDtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZU1lc3NhZ2UgKHBsaXN0KSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBwbGlzdC5fX3NlbGVjdG9yO1xuICAgIGlmICghc2VsZWN0b3IpIHtcbiAgICAgIGxvZy5kZWJ1ZygnR290IGFuIGludmFsaWQgcGxpc3QnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhcmd1bWVudCA9IHBsaXN0Ll9fYXJndW1lbnQ7XG4gICAgc3dpdGNoIChzZWxlY3Rvcikge1xuICAgICAgY2FzZSAnX3JwY19yZXBvcnRTZXR1cDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfcmVwb3J0U2V0dXA6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUlNpbXVsYXRvck5hbWVLZXksXG4gICAgICAgICAgYXJndW1lbnQuV0lSU2ltdWxhdG9yQnVpbGRLZXksXG4gICAgICAgICAgYXJndW1lbnQuV0lSU2ltdWxhdG9yUHJvZHVjdFZlcnNpb25LZXlcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydENvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfcmVwb3J0Q29ubmVjdGVkQXBwbGljYXRpb25MaXN0OicsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBhcmd1bWVudC5XSVJBcHBsaWNhdGlvbkRpY3Rpb25hcnlLZXlcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX2FwcGxpY2F0aW9uU2VudExpc3Rpbmc6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX2ZvcndhcmRHZXRMaXN0aW5nOicsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBhcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXksXG4gICAgICAgICAgYXJndW1lbnQuV0lSTGlzdGluZ0tleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19hcHBsaWNhdGlvbkRpc2Nvbm5lY3RlZDonLCBudWxsLCBhcmd1bWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19hcHBsaWNhdGlvblVwZGF0ZWQ6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX2FwcGxpY2F0aW9uVXBkYXRlZDonLCBudWxsLCBhcmd1bWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19yZXBvcnRDb25uZWN0ZWREcml2ZXJMaXN0Oic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDb25uZWN0ZWREcml2ZXJMaXN0OicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydEN1cnJlbnRTdGF0ZTonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfcmVwb3J0Q3VycmVudFN0YXRlOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX2FwcGxpY2F0aW9uU2VudERhdGE6JzpcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVEYXRhTWVzc2FnZShwbGlzdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbG9nLmRlYnVnKGBEZWJ1Z2dlciBnb3QgYSBtZXNzYWdlIGZvciAnJHtzZWxlY3Rvcn0nIGFuZCBoYXZlIG5vIGAgK1xuICAgICAgICAgIGBoYW5kbGVyLCBkb2luZyBub3RoaW5nLmApO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlRGF0YUtleSAocGxpc3QpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UocGxpc3QuX19hcmd1bWVudC5XSVJNZXNzYWdlRGF0YUtleS50b1N0cmluZygndXRmOCcpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5lcnJvcihgVW5wYXJzZWFibGUgbWVzc2FnZSBkYXRhOiAke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkocGxpc3QpLCB7bGVuZ3RoOiAxMDB9KX1gKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIG1lc3NhZ2UgZGF0YTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkaXNwYXRjaERhdGFNZXNzYWdlIChtc2dJZCwgbWV0aG9kLCBwYXJhbXMsIHJlc3VsdCwgZXJyb3IpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgaWYgKCFfLmlzRW1wdHkobXNnSWQpKSB7XG4gICAgICBsb2cuZGVidWcoYEhhbmRsaW5nIG1lc3NhZ2UgKGlkOiAnJHttc2dJZH0nKWApO1xuICAgIH1cblxuICAgIGlmIChtc2dJZCkge1xuICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudChtc2dJZCkpIHtcbiAgICAgICAgaWYgKF8uaGFzKHJlc3VsdD8ucmVzdWx0LCAndmFsdWUnKSkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXN1bHQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0KG1zZ0lkLCBlcnJvciwgcmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5lcnJvcihgV2ViIEluc3BlY3RvciByZXR1cm5lZCBkYXRhIGZvciBtZXNzYWdlICcke21zZ0lkfScgYCArXG4gICAgICAgICAgYGJ1dCB3ZSB3ZXJlIG5vdCB3YWl0aW5nIGZvciB0aGF0IG1lc3NhZ2UhIGAgK1xuICAgICAgICAgIGByZXN1bHQ6ICcke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9JzsgYCArXG4gICAgICAgICAgYGVycm9yOiAnJHtKU09OLnN0cmluZ2lmeShlcnJvcil9J2ApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBldmVudE5hbWVzID0gW21ldGhvZF07XG4gICAgbGV0IGFyZ3MgPSBbcGFyYW1zXTtcblxuICAgIC8vIHNvbWUgZXZlbnRzIGhhdmUgZGlmZmVyZW50IG5hbWVzLCBvciB0aGUgYXJndW1lbnRzIGFyZSBtYXBwZWQgZnJvbSB0aGVcbiAgICAvLyBwYXJhbWV0ZXJzIHJlY2VpdmVkXG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgJ1BhZ2UuZnJhbWVTdG9wcGVkTG9hZGluZyc6XG4gICAgICAgIGV2ZW50TmFtZXMucHVzaCgnUGFnZS5mcmFtZU5hdmlnYXRlZCcpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWZhbGx0aHJvdWdoXG4gICAgICBjYXNlICdQYWdlLmZyYW1lTmF2aWdhdGVkJzpcbiAgICAgICAgYXJncyA9IFtgJyR7bWV0aG9kfScgZXZlbnRgXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdUaW1lbGluZS5ldmVudFJlY29yZGVkJzpcbiAgICAgICAgYXJncyA9IFtwYXJhbXMgfHwgcGFyYW1zLnJlY29yZF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ29uc29sZS5tZXNzYWdlQWRkZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcy5tZXNzYWdlXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdSdW50aW1lLmV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkJzpcbiAgICAgICAgYXJncyA9IFtwYXJhbXMuY29udGV4dF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gcGFzc1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoXy5zdGFydHNXaXRoKG1ldGhvZCwgJ05ldHdvcmsuJykpIHtcbiAgICAgIC8vIGFnZ3JlZ2F0ZSBOZXR3b3JrIGV2ZW50cywgYW5kIGFkZCBvcmlnaW5hbCBtZXRob2QgbmFtZSB0byB0aGUgYXJndW1lbnRzXG4gICAgICBldmVudE5hbWVzLnB1c2goJ05ldHdvcmtFdmVudCcpO1xuICAgICAgYXJncy5wdXNoKG1ldGhvZCk7XG4gICAgfVxuICAgIGlmIChfLnN0YXJ0c1dpdGgobWV0aG9kLCAnQ29uc29sZS4nKSkge1xuICAgICAgLy8gYWdncmVnYXRlIE5ldHdvcmsgZXZlbnRzLCBhbmQgYWRkIG9yaWdpbmFsIG1ldGhvZCBuYW1lIHRvIHRoZSBhcmd1bWVudHNcbiAgICAgIGV2ZW50TmFtZXMucHVzaCgnQ29uc29sZUV2ZW50Jyk7XG4gICAgICBhcmdzLnB1c2gobWV0aG9kKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgZXZlbnROYW1lcykge1xuICAgICAgdGhpcy5lbWl0KG5hbWUsIGVycm9yLCAuLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBoYW5kbGVEYXRhTWVzc2FnZSAocGxpc3QpIHtcbiAgICBjb25zdCBkYXRhS2V5ID0gdGhpcy5wYXJzZURhdGFLZXkocGxpc3QpO1xuICAgIGxldCBtc2dJZCA9IChkYXRhS2V5LmlkIHx8ICcnKS50b1N0cmluZygpO1xuICAgIGxldCByZXN1bHQgPSBkYXRhS2V5LnJlc3VsdDtcblxuICAgIGxldCBtZXRob2QgPSBkYXRhS2V5Lm1ldGhvZDtcbiAgICBsZXQgcGFyYW1zO1xuXG4gICAgaWYgKG1ldGhvZCA9PT0gJ1RhcmdldC50YXJnZXRDcmVhdGVkJykge1xuICAgICAgLy8gdGhpcyBpcyBpbiByZXNwb25zZSB0byBhIGBfcnBjX2ZvcndhcmRTb2NrZXRTZXR1cDpgIGNhbGxcbiAgICAgIC8vIHRhcmdldEluZm86IHsgdGFyZ2V0SWQ6ICdwYWdlLTEnLCB0eXBlOiAncGFnZScgfVxuICAgICAgY29uc3QgYXBwID0gcGxpc3QuX19hcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICBjb25zdCB0YXJnZXRJbmZvID0gZGF0YUtleS5wYXJhbXMudGFyZ2V0SW5mbztcbiAgICAgIHRoaXMuZW1pdCgnVGFyZ2V0LnRhcmdldENyZWF0ZWQnLCBudWxsLCBhcHAsIHRhcmdldEluZm8pO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAnVGFyZ2V0LmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0Jykge1xuICAgICAgY29uc3QgYXBwID0gcGxpc3QuX19hcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICBjb25zdCBvbGRUYXJnZXRJZCA9IGRhdGFLZXkucGFyYW1zLm9sZFRhcmdldElkO1xuICAgICAgY29uc3QgbmV3VGFyZ2V0SWQgPSBkYXRhS2V5LnBhcmFtcy5uZXdUYXJnZXRJZDtcbiAgICAgIHRoaXMuZW1pdCgnVGFyZ2V0LmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0JywgbnVsbCwgYXBwLCBvbGRUYXJnZXRJZCwgbmV3VGFyZ2V0SWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcpIHtcbiAgICAgIGNvbnN0IGFwcCA9IHBsaXN0Ll9fYXJndW1lbnQuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICAgICAgY29uc3QgdGFyZ2V0SW5mbyA9IGRhdGFLZXkucGFyYW1zLnRhcmdldEluZm8gfHwge3RhcmdldElkOiBkYXRhS2V5LnBhcmFtcy50YXJnZXRJZH07XG4gICAgICB0aGlzLmVtaXQoJ1RhcmdldC50YXJnZXREZXN0cm95ZWQnLCBudWxsLCBhcHAsIHRhcmdldEluZm8pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghZGF0YUtleS5lcnJvciAmJiB0aGlzLmlzVGFyZ2V0QmFzZWQpIHtcbiAgICAgIGlmIChkYXRhS2V5Lm1ldGhvZCAhPT0gJ1RhcmdldC5kaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0Jykge1xuICAgICAgICAvLyB0aGlzIHNvcnQgb2YgbWVzc2FnZSwgYXQgdGhpcyBwb2ludCwgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnRcbiAgICAgICAgLy8gdGhhdCB0aGUgb3JpZ2luYWwgbWVzc2FnZSB3YXMgcmVjZWl2ZWRcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBhdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgVGFyZ2V0LWJhc2VkIG1lc3NhZ2Ugd3JhcHBpbmcgYSBwcm90b2NvbCBtZXNzYWdlXG4gICAgICBsZXQgbWVzc2FnZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIG1lc3NhZ2UgPSBKU09OLnBhcnNlKGRhdGFLZXkucGFyYW1zLm1lc3NhZ2UpO1xuICAgICAgICBtc2dJZCA9IG1lc3NhZ2UuaWQ7XG4gICAgICAgIG1ldGhvZCA9IG1lc3NhZ2UubWV0aG9kO1xuICAgICAgICByZXN1bHQgPSBtZXNzYWdlLnJlc3VsdCB8fCBtZXNzYWdlO1xuICAgICAgICBwYXJhbXMgPSByZXN1bHQucGFyYW1zO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIGlmIHRoaXMgaGFwcGVucyB0aGVuIHNvbWUgYXNwZWN0IG9mIHRoZSBwcm90b2NvbCBpcyBtaXNzaW5nIHRvIHVzXG4gICAgICAgIC8vIHNvIHByaW50IHRoZSBlbnRpcmUgbWVzc2FnZSB0byBnZXQgdmlzaWJpaXR5IGludG8gd2hhdCBpcyBnb2luZyBvblxuICAgICAgICBsb2cuZXJyb3IoYFVuZXhwZWN0ZWQgbWVzc2FnZSBmb3JtYXQgZnJvbSBXZWIgSW5zcGVjdG9yOmApO1xuICAgICAgICB0aGlzLndhcm4odXRpbC5qc29uU3RyaW5naWZ5KHBsaXN0KSk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGFyYW1zID0gZGF0YUtleS5wYXJhbXM7XG4gICAgfVxuXG4gICAgLy8gd2UgY2FuIGdldCBhbiBlcnJvciwgb3Igd2UgY2FuIGdldCBhIHJlc3BvbnNlIHRoYXQgaXMgYW4gZXJyb3JcbiAgICBsZXQgZXJyb3IgPSBkYXRhS2V5LmVycm9yIHx8IG51bGw7XG4gICAgaWYgKHJlc3VsdD8ud2FzVGhyb3duKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gKHJlc3VsdD8ucmVzdWx0Py52YWx1ZSB8fCByZXN1bHQ/LnJlc3VsdD8uZGVzY3JpcHRpb24pXG4gICAgICAgID8gKHJlc3VsdD8ucmVzdWx0Py52YWx1ZSB8fCByZXN1bHQ/LnJlc3VsdD8uZGVzY3JpcHRpb24pXG4gICAgICAgIDogJ0Vycm9yIG9jY3VycmVkIGluIGhhbmRsaW5nIGRhdGEgbWVzc2FnZSc7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmRpc3BhdGNoRGF0YU1lc3NhZ2UobXNnSWQsIG1ldGhvZCwgcGFyYW1zLCByZXN1bHQsIGVycm9yKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoi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
|
|
178
|
+
exports.default = RpcMessageHandler;
|
|
179
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJScGNNZXNzYWdlSGFuZGxlciIsIkV2ZW50RW1pdHRlcnMiLCJjb25zdHJ1Y3RvciIsImlzVGFyZ2V0QmFzZWQiLCJfaXNUYXJnZXRCYXNlZCIsImhhbmRsZU1lc3NhZ2UiLCJwbGlzdCIsInNlbGVjdG9yIiwiX19zZWxlY3RvciIsImxvZyIsImRlYnVnIiwiYXJndW1lbnQiLCJfX2FyZ3VtZW50IiwiZW1pdCIsIldJUlNpbXVsYXRvck5hbWVLZXkiLCJXSVJTaW11bGF0b3JCdWlsZEtleSIsIldJUlNpbXVsYXRvclByb2R1Y3RWZXJzaW9uS2V5IiwiV0lSQXBwbGljYXRpb25EaWN0aW9uYXJ5S2V5IiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiV0lSTGlzdGluZ0tleSIsImhhbmRsZURhdGFNZXNzYWdlIiwicGFyc2VEYXRhS2V5IiwiSlNPTiIsInBhcnNlIiwiV0lSTWVzc2FnZURhdGFLZXkiLCJ0b1N0cmluZyIsImVyciIsImVycm9yIiwiXyIsInRydW5jYXRlIiwic3RyaW5naWZ5IiwibGVuZ3RoIiwiRXJyb3IiLCJtZXNzYWdlIiwiZGlzcGF0Y2hEYXRhTWVzc2FnZSIsIm1zZ0lkIiwibWV0aG9kIiwicGFyYW1zIiwicmVzdWx0IiwiaXNFbXB0eSIsImxpc3RlbmVyQ291bnQiLCJoYXMiLCJ2YWx1ZSIsImV2ZW50TmFtZXMiLCJhcmdzIiwicHVzaCIsInJlY29yZCIsImNvbnRleHQiLCJzdGFydHNXaXRoIiwibmFtZSIsImRhdGFLZXkiLCJpZCIsImFwcCIsInRhcmdldEluZm8iLCJvbGRUYXJnZXRJZCIsIm5ld1RhcmdldElkIiwidGFyZ2V0SWQiLCJ3YXJuIiwidXRpbCIsImpzb25TdHJpbmdpZnkiLCJ3YXNUaHJvd24iLCJkZXNjcmlwdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9ycGMvcnBjLW1lc3NhZ2UtaGFuZGxlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBFdmVudEVtaXR0ZXJzIGZyb20gJ2V2ZW50cyc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnBjTWVzc2FnZUhhbmRsZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXJzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgc2V0IGlzVGFyZ2V0QmFzZWQgKGlzVGFyZ2V0QmFzZWQpIHtcbiAgICB0aGlzLl9pc1RhcmdldEJhc2VkID0gISFpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlTWVzc2FnZSAocGxpc3QpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IHBsaXN0Ll9fc2VsZWN0b3I7XG4gICAgaWYgKCFzZWxlY3Rvcikge1xuICAgICAgbG9nLmRlYnVnKCdHb3QgYW4gaW52YWxpZCBwbGlzdCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZ3VtZW50ID0gcGxpc3QuX19hcmd1bWVudDtcbiAgICBzd2l0Y2ggKHNlbGVjdG9yKSB7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydFNldHVwOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRTZXR1cDonLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYXJndW1lbnQuV0lSU2ltdWxhdG9yTmFtZUtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JCdWlsZEtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q29ubmVjdGVkQXBwbGljYXRpb25MaXN0Oic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDb25uZWN0ZWRBcHBsaWNhdGlvbkxpc3Q6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50TGlzdGluZzonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJMaXN0aW5nS2V5XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25EaXNjb25uZWN0ZWQ6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX2FwcGxpY2F0aW9uVXBkYXRlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25VcGRhdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q3VycmVudFN0YXRlOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDdXJyZW50U3RhdGU6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50RGF0YTonOlxuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZURhdGFNZXNzYWdlKHBsaXN0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsb2cuZGVidWcoYERlYnVnZ2VyIGdvdCBhIG1lc3NhZ2UgZm9yICcke3NlbGVjdG9yfScgYW5kIGhhdmUgbm8gYCArXG4gICAgICAgICAgYGhhbmRsZXIsIGRvaW5nIG5vdGhpbmcuYCk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VEYXRhS2V5IChwbGlzdCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShwbGlzdC5fX2FyZ3VtZW50LldJUk1lc3NhZ2VEYXRhS2V5LnRvU3RyaW5nKCd1dGY4JykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKGBVbnBhcnNlYWJsZSBtZXNzYWdlIGRhdGE6ICR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShwbGlzdCksIHtsZW5ndGg6IDEwMH0pfWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgbWVzc2FnZSBkYXRhOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc3BhdGNoRGF0YU1lc3NhZ2UgKG1zZ0lkLCBtZXRob2QsIHBhcmFtcywgcmVzdWx0LCBlcnJvcikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICBpZiAoIV8uaXNFbXB0eShtc2dJZCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgSGFuZGxpbmcgbWVzc2FnZSAoaWQ6ICcke21zZ0lkfScpYCk7XG4gICAgfVxuXG4gICAgaWYgKG1zZ0lkKSB7XG4gICAgICBpZiAodGhpcy5saXN0ZW5lckNvdW50KG1zZ0lkKSkge1xuICAgICAgICBpZiAoXy5oYXMocmVzdWx0Py5yZXN1bHQsICd2YWx1ZScpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXQobXNnSWQsIGVycm9yLCByZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmVycm9yKGBXZWIgSW5zcGVjdG9yIHJldHVybmVkIGRhdGEgZm9yIG1lc3NhZ2UgJyR7bXNnSWR9JyBgICtcbiAgICAgICAgICBgYnV0IHdlIHdlcmUgbm90IHdhaXRpbmcgZm9yIHRoYXQgbWVzc2FnZSEgYCArXG4gICAgICAgICAgYHJlc3VsdDogJyR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX0nOyBgICtcbiAgICAgICAgICBgZXJyb3I6ICcke0pTT04uc3RyaW5naWZ5KGVycm9yKX0nYCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGV2ZW50TmFtZXMgPSBbbWV0aG9kXTtcbiAgICBsZXQgYXJncyA9IFtwYXJhbXNdO1xuXG4gICAgLy8gc29tZSBldmVudHMgaGF2ZSBkaWZmZXJlbnQgbmFtZXMsIG9yIHRoZSBhcmd1bWVudHMgYXJlIG1hcHBlZCBmcm9tIHRoZVxuICAgIC8vIHBhcmFtZXRlcnMgcmVjZWl2ZWRcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAnUGFnZS5mcmFtZVN0b3BwZWRMb2FkaW5nJzpcbiAgICAgICAgZXZlbnROYW1lcy5wdXNoKCdQYWdlLmZyYW1lTmF2aWdhdGVkJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgJ1BhZ2UuZnJhbWVOYXZpZ2F0ZWQnOlxuICAgICAgICBhcmdzID0gW2AnJHttZXRob2R9JyBldmVudGBdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1RpbWVsaW5lLmV2ZW50UmVjb3JkZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcyB8fCBwYXJhbXMucmVjb3JkXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDb25zb2xlLm1lc3NhZ2VBZGRlZCc6XG4gICAgICAgIGFyZ3MgPSBbcGFyYW1zLm1lc3NhZ2VdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1J1bnRpbWUuZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcy5jb250ZXh0XTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBwYXNzXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChfLnN0YXJ0c1dpdGgobWV0aG9kLCAnTmV0d29yay4nKSkge1xuICAgICAgLy8gYWdncmVnYXRlIE5ldHdvcmsgZXZlbnRzLCBhbmQgYWRkIG9yaWdpbmFsIG1ldGhvZCBuYW1lIHRvIHRoZSBhcmd1bWVudHNcbiAgICAgIGV2ZW50TmFtZXMucHVzaCgnTmV0d29ya0V2ZW50Jyk7XG4gICAgICBhcmdzLnB1c2gobWV0aG9kKTtcbiAgICB9XG4gICAgaWYgKF8uc3RhcnRzV2l0aChtZXRob2QsICdDb25zb2xlLicpKSB7XG4gICAgICAvLyBhZ2dyZWdhdGUgTmV0d29yayBldmVudHMsIGFuZCBhZGQgb3JpZ2luYWwgbWV0aG9kIG5hbWUgdG8gdGhlIGFyZ3VtZW50c1xuICAgICAgZXZlbnROYW1lcy5wdXNoKCdDb25zb2xlRXZlbnQnKTtcbiAgICAgIGFyZ3MucHVzaChtZXRob2QpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBldmVudE5hbWVzKSB7XG4gICAgICB0aGlzLmVtaXQobmFtZSwgZXJyb3IsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhbmRsZURhdGFNZXNzYWdlIChwbGlzdCkge1xuICAgIGNvbnN0IGRhdGFLZXkgPSB0aGlzLnBhcnNlRGF0YUtleShwbGlzdCk7XG4gICAgbGV0IG1zZ0lkID0gKGRhdGFLZXkuaWQgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgbGV0IHJlc3VsdCA9IGRhdGFLZXkucmVzdWx0O1xuXG4gICAgbGV0IG1ldGhvZCA9IGRhdGFLZXkubWV0aG9kO1xuICAgIGxldCBwYXJhbXM7XG5cbiAgICBpZiAobWV0aG9kID09PSAnVGFyZ2V0LnRhcmdldENyZWF0ZWQnKSB7XG4gICAgICAvLyB0aGlzIGlzIGluIHJlc3BvbnNlIHRvIGEgYF9ycGNfZm9yd2FyZFNvY2tldFNldHVwOmAgY2FsbFxuICAgICAgLy8gdGFyZ2V0SW5mbzogeyB0YXJnZXRJZDogJ3BhZ2UtMScsIHR5cGU6ICdwYWdlJyB9XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IHRhcmdldEluZm8gPSBkYXRhS2V5LnBhcmFtcy50YXJnZXRJbmZvO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnKSB7XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IG9sZFRhcmdldElkID0gZGF0YUtleS5wYXJhbXMub2xkVGFyZ2V0SWQ7XG4gICAgICBjb25zdCBuZXdUYXJnZXRJZCA9IGRhdGFLZXkucGFyYW1zLm5ld1RhcmdldElkO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnLCBudWxsLCBhcHAsIG9sZFRhcmdldElkLCBuZXdUYXJnZXRJZCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJykge1xuICAgICAgY29uc3QgYXBwID0gcGxpc3QuX19hcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICBjb25zdCB0YXJnZXRJbmZvID0gZGF0YUtleS5wYXJhbXMudGFyZ2V0SW5mbyB8fCB7dGFyZ2V0SWQ6IGRhdGFLZXkucGFyYW1zLnRhcmdldElkfTtcbiAgICAgIHRoaXMuZW1pdCgnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhS2V5LmVycm9yICYmIHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgaWYgKGRhdGFLZXkubWV0aG9kICE9PSAnVGFyZ2V0LmRpc3BhdGNoTWVzc2FnZUZyb21UYXJnZXQnKSB7XG4gICAgICAgIC8vIHRoaXMgc29ydCBvZiBtZXNzYWdlLCBhdCB0aGlzIHBvaW50LCBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudFxuICAgICAgICAvLyB0aGF0IHRoZSBvcmlnaW5hbCBtZXNzYWdlIHdhcyByZWNlaXZlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBUYXJnZXQtYmFzZWQgbWVzc2FnZSB3cmFwcGluZyBhIHByb3RvY29sIG1lc3NhZ2VcbiAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbWVzc2FnZSA9IEpTT04ucGFyc2UoZGF0YUtleS5wYXJhbXMubWVzc2FnZSk7XG4gICAgICAgIG1zZ0lkID0gbWVzc2FnZS5pZDtcbiAgICAgICAgbWV0aG9kID0gbWVzc2FnZS5tZXRob2Q7XG4gICAgICAgIHJlc3VsdCA9IG1lc3NhZ2UucmVzdWx0IHx8IG1lc3NhZ2U7XG4gICAgICAgIHBhcmFtcyA9IHJlc3VsdC5wYXJhbXM7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIHRoZW4gc29tZSBhc3BlY3Qgb2YgdGhlIHByb3RvY29sIGlzIG1pc3NpbmcgdG8gdXNcbiAgICAgICAgLy8gc28gcHJpbnQgdGhlIGVudGlyZSBtZXNzYWdlIHRvIGdldCB2aXNpYmlpdHkgaW50byB3aGF0IGlzIGdvaW5nIG9uXG4gICAgICAgIGxvZy5lcnJvcihgVW5leHBlY3RlZCBtZXNzYWdlIGZvcm1hdCBmcm9tIFdlYiBJbnNwZWN0b3I6YCk7XG4gICAgICAgIHRoaXMud2Fybih1dGlsLmpzb25TdHJpbmdpZnkocGxpc3QpKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMgPSBkYXRhS2V5LnBhcmFtcztcbiAgICB9XG5cbiAgICAvLyB3ZSBjYW4gZ2V0IGFuIGVycm9yLCBvciB3ZSBjYW4gZ2V0IGEgcmVzcG9uc2UgdGhhdCBpcyBhbiBlcnJvclxuICAgIGxldCBlcnJvciA9IGRhdGFLZXkuZXJyb3IgfHwgbnVsbDtcbiAgICBpZiAocmVzdWx0Py53YXNUaHJvd24pIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgPyAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgOiAnRXJyb3Igb2NjdXJyZWQgaW4gaGFuZGxpbmcgZGF0YSBtZXNzYWdlJztcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2hEYXRhTWVzc2FnZShtc2dJZCwgbWV0aG9kLCBwYXJhbXMsIHJlc3VsdCwgZXJyb3IpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHZSxNQUFNQSxpQkFBaUIsU0FBU0MsZUFB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-message-handler.js","names":["RpcMessageHandler","EventEmitters","constructor","isTargetBased","_isTargetBased","handleMessage","plist","selector","__selector","log","debug","argument","__argument","emit","WIRSimulatorNameKey","WIRSimulatorBuildKey","WIRSimulatorProductVersionKey","WIRApplicationDictionaryKey","WIRApplicationIdentifierKey","WIRListingKey","handleDataMessage","parseDataKey","JSON","parse","WIRMessageDataKey","toString","err","error","_","truncate","stringify","length","Error","message","dispatchDataMessage","msgId","method","params","result","isEmpty","listenerCount","has","value","eventNames","args","push","record","context","startsWith","name","dataKey","id","app","targetInfo","oldTargetId","newTargetId","targetId","warn","util","jsonStringify","wasThrown","description"],"sources":["../../../lib/rpc/rpc-message-handler.js"],"sourcesContent":["import log from '../logger';\nimport _ from 'lodash';\nimport { util } from 'appium/support';\nimport EventEmitters from 'events';\n\n\nexport default class RpcMessageHandler extends EventEmitters {\n constructor (isTargetBased = false) {\n super();\n\n this.isTargetBased = isTargetBased;\n }\n\n get isTargetBased () {\n return this._isTargetBased;\n }\n\n set isTargetBased (isTargetBased) {\n this._isTargetBased = !!isTargetBased;\n }\n\n async handleMessage (plist) {\n const selector = plist.__selector;\n if (!selector) {\n log.debug('Got an invalid plist');\n return;\n }\n\n const argument = plist.__argument;\n switch (selector) {\n case '_rpc_reportSetup:':\n this.emit('_rpc_reportSetup:',\n null,\n argument.WIRSimulatorNameKey,\n argument.WIRSimulatorBuildKey,\n argument.WIRSimulatorProductVersionKey\n );\n break;\n case '_rpc_reportConnectedApplicationList:':\n this.emit('_rpc_reportConnectedApplicationList:',\n null,\n argument.WIRApplicationDictionaryKey\n );\n break;\n case '_rpc_applicationSentListing:':\n this.emit('_rpc_forwardGetListing:',\n null,\n argument.WIRApplicationIdentifierKey,\n argument.WIRListingKey\n );\n break;\n case '_rpc_applicationConnected:':\n this.emit('_rpc_applicationConnected:', null, argument);\n break;\n case '_rpc_applicationDisconnected:':\n this.emit('_rpc_applicationDisconnected:', null, argument);\n break;\n case '_rpc_applicationUpdated:':\n this.emit('_rpc_applicationUpdated:', null, argument);\n break;\n case '_rpc_reportConnectedDriverList:':\n this.emit('_rpc_reportConnectedDriverList:', null, argument);\n break;\n case '_rpc_reportCurrentState:':\n this.emit('_rpc_reportCurrentState:', null, argument);\n break;\n case '_rpc_applicationSentData:':\n await this.handleDataMessage(plist);\n break;\n default:\n log.debug(`Debugger got a message for '${selector}' and have no ` +\n `handler, doing nothing.`);\n }\n }\n\n parseDataKey (plist) {\n try {\n return JSON.parse(plist.__argument.WIRMessageDataKey.toString('utf8'));\n } catch (err) {\n log.error(`Unparseable message data: ${_.truncate(JSON.stringify(plist), {length: 100})}`);\n throw new Error(`Unable to parse message data: ${err.message}`);\n }\n }\n\n async dispatchDataMessage (msgId, method, params, result, error) { // eslint-disable-line require-await\n if (!_.isEmpty(msgId)) {\n log.debug(`Handling message (id: '${msgId}')`);\n }\n\n if (msgId) {\n if (this.listenerCount(msgId)) {\n if (_.has(result?.result, 'value')) {\n result = result.result.value;\n }\n this.emit(msgId, error, result);\n } else {\n log.error(`Web Inspector returned data for message '${msgId}' ` +\n `but we were not waiting for that message! ` +\n `result: '${JSON.stringify(result)}'; ` +\n `error: '${JSON.stringify(error)}'`);\n }\n return;\n }\n\n let eventNames = [method];\n let args = [params];\n\n // some events have different names, or the arguments are mapped from the\n // parameters received\n switch (method) {\n case 'Page.frameStoppedLoading':\n eventNames.push('Page.frameNavigated');\n // eslint-disable-line no-fallthrough\n case 'Page.frameNavigated':\n args = [`'${method}' event`];\n break;\n case 'Timeline.eventRecorded':\n args = [params || params.record];\n break;\n case 'Console.messageAdded':\n args = [params.message];\n break;\n case 'Runtime.executionContextCreated':\n args = [params.context];\n break;\n default:\n // pass\n break;\n }\n\n if (_.startsWith(method, 'Network.')) {\n // aggregate Network events, and add original method name to the arguments\n eventNames.push('NetworkEvent');\n args.push(method);\n }\n if (_.startsWith(method, 'Console.')) {\n // aggregate Network events, and add original method name to the arguments\n eventNames.push('ConsoleEvent');\n args.push(method);\n }\n\n for (const name of eventNames) {\n this.emit(name, error, ...args);\n }\n }\n\n async handleDataMessage (plist) {\n const dataKey = this.parseDataKey(plist);\n let msgId = (dataKey.id || '').toString();\n let result = dataKey.result;\n\n let method = dataKey.method;\n let params;\n\n if (method === 'Target.targetCreated') {\n // this is in response to a `_rpc_forwardSocketSetup:` call\n // targetInfo: { targetId: 'page-1', type: 'page' }\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const targetInfo = dataKey.params.targetInfo;\n this.emit('Target.targetCreated', null, app, targetInfo);\n return;\n } else if (method === 'Target.didCommitProvisionalTarget') {\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const oldTargetId = dataKey.params.oldTargetId;\n const newTargetId = dataKey.params.newTargetId;\n this.emit('Target.didCommitProvisionalTarget', null, app, oldTargetId, newTargetId);\n return;\n } else if (method === 'Target.targetDestroyed') {\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const targetInfo = dataKey.params.targetInfo || {targetId: dataKey.params.targetId};\n this.emit('Target.targetDestroyed', null, app, targetInfo);\n return;\n }\n\n if (!dataKey.error && this.isTargetBased) {\n if (dataKey.method !== 'Target.dispatchMessageFromTarget') {\n // this sort of message, at this point, is just an acknowledgement\n // that the original message was received\n return;\n }\n\n // at this point, we have a Target-based message wrapping a protocol message\n let message;\n try {\n message = JSON.parse(dataKey.params.message);\n msgId = message.id;\n method = message.method;\n result = message.result || message;\n params = result.params;\n } catch (err) {\n // if this happens then some aspect of the protocol is missing to us\n // so print the entire message to get visibiity into what is going on\n log.error(`Unexpected message format from Web Inspector:`);\n this.warn(util.jsonStringify(plist));\n throw err;\n }\n } else {\n params = dataKey.params;\n }\n\n // we can get an error, or we can get a response that is an error\n let error = dataKey.error || null;\n if (result?.wasThrown) {\n const message = (result?.result?.value || result?.result?.description)\n ? (result?.result?.value || result?.result?.description)\n : 'Error occurred in handling data message';\n error = new Error(message);\n }\n\n await this.dispatchDataMessage(msgId, method, params, result, error);\n }\n}\n"],"mappings":"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"}
|