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.
Files changed (44) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/README.md +1 -13
  3. package/build/index.js +2 -9
  4. package/build/lib/atoms.js +2 -25
  5. package/build/lib/atoms.js.map +1 -0
  6. package/build/lib/logger.js +2 -8
  7. package/build/lib/logger.js.map +1 -0
  8. package/build/lib/mixins/connect.js +6 -72
  9. package/build/lib/mixins/connect.js.map +1 -0
  10. package/build/lib/mixins/events.js +2 -6
  11. package/build/lib/mixins/events.js.map +1 -0
  12. package/build/lib/mixins/execute.js +4 -37
  13. package/build/lib/mixins/execute.js.map +1 -0
  14. package/build/lib/mixins/index.js +2 -12
  15. package/build/lib/mixins/index.js.map +1 -0
  16. package/build/lib/mixins/message-handlers.js +2 -36
  17. package/build/lib/mixins/message-handlers.js.map +1 -0
  18. package/build/lib/mixins/navigate.js +5 -55
  19. package/build/lib/mixins/navigate.js.map +1 -0
  20. package/build/lib/protocol/index.js +21 -10
  21. package/build/lib/protocol/index.js.map +1 -0
  22. package/build/lib/remote-debugger-real-device.js +2 -12
  23. package/build/lib/remote-debugger-real-device.js.map +1 -0
  24. package/build/lib/remote-debugger.js +3 -64
  25. package/build/lib/remote-debugger.js.map +1 -0
  26. package/build/lib/rpc/index.js +2 -8
  27. package/build/lib/rpc/index.js.map +1 -0
  28. package/build/lib/rpc/remote-messages.js +6 -31
  29. package/build/lib/rpc/remote-messages.js.map +1 -0
  30. package/build/lib/rpc/rpc-client-real-device.js +2 -19
  31. package/build/lib/rpc/rpc-client-real-device.js.map +1 -0
  32. package/build/lib/rpc/rpc-client-simulator.js +5 -33
  33. package/build/lib/rpc/rpc-client-simulator.js.map +1 -0
  34. package/build/lib/rpc/rpc-client.js +14 -112
  35. package/build/lib/rpc/rpc-client.js.map +1 -0
  36. package/build/lib/rpc/rpc-message-handler.js +2 -55
  37. package/build/lib/rpc/rpc-message-handler.js.map +1 -0
  38. package/build/lib/utils.js +10 -47
  39. package/build/lib/utils.js.map +1 -0
  40. package/package.json +49 -25
  41. package/scripts/build-atoms.js +6 -0
  42. package/scripts/build-selenium.js +3 -0
  43. package/scripts/common.js +194 -0
  44. 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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"}