appium-remote-debugger 9.1.11 → 9.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/build/index.js +1 -1
  3. package/build/lib/atoms.js +1 -1
  4. package/build/lib/atoms.js.map +1 -1
  5. package/build/lib/logger.js +1 -1
  6. package/build/lib/logger.js.map +1 -1
  7. package/build/lib/mixins/connect.js +1 -1
  8. package/build/lib/mixins/connect.js.map +1 -1
  9. package/build/lib/mixins/events.js +1 -1
  10. package/build/lib/mixins/events.js.map +1 -1
  11. package/build/lib/mixins/execute.js +1 -1
  12. package/build/lib/mixins/execute.js.map +1 -1
  13. package/build/lib/mixins/index.js +1 -1
  14. package/build/lib/mixins/index.js.map +1 -1
  15. package/build/lib/mixins/message-handlers.js +1 -1
  16. package/build/lib/mixins/message-handlers.js.map +1 -1
  17. package/build/lib/mixins/navigate.js +1 -1
  18. package/build/lib/mixins/navigate.js.map +1 -1
  19. package/build/lib/protocol/index.js +16 -3
  20. package/build/lib/protocol/index.js.map +1 -1
  21. package/build/lib/remote-debugger-real-device.js +1 -1
  22. package/build/lib/remote-debugger-real-device.js.map +1 -1
  23. package/build/lib/remote-debugger.js +18 -3
  24. package/build/lib/remote-debugger.js.map +1 -1
  25. package/build/lib/rpc/index.js +1 -1
  26. package/build/lib/rpc/index.js.map +1 -1
  27. package/build/lib/rpc/remote-messages.js +1 -1
  28. package/build/lib/rpc/remote-messages.js.map +1 -1
  29. package/build/lib/rpc/rpc-client-real-device.js +1 -1
  30. package/build/lib/rpc/rpc-client-real-device.js.map +1 -1
  31. package/build/lib/rpc/rpc-client-simulator.js +1 -1
  32. package/build/lib/rpc/rpc-client-simulator.js.map +1 -1
  33. package/build/lib/rpc/rpc-client.js +1 -1
  34. package/build/lib/rpc/rpc-client.js.map +1 -1
  35. package/build/lib/rpc/rpc-message-handler.js +1 -1
  36. package/build/lib/rpc/rpc-message-handler.js.map +1 -1
  37. package/build/lib/utils.js +1 -1
  38. package/build/lib/utils.js.map +1 -1
  39. package/lib/protocol/index.js +16 -2
  40. package/lib/remote-debugger.js +20 -2
  41. package/package.json +2 -2
@@ -1 +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":";;;;;;;;AAAA;AACA;AACA;AACA;AAGe,MAAMA,iBAAiB,SAASC,eAAa,CAAC;EAC3DC,WAAW,CAAEC,aAAa,GAAG,KAAK,EAAE;IAClC,KAAK,EAAE;IAEP,IAAI,CAACA,aAAa,GAAGA,aAAa;EACpC;EAEA,IAAIA,aAAa,GAAI;IACnB,OAAO,IAAI,CAACC,cAAc;EAC5B;EAEA,IAAID,aAAa,CAAEA,aAAa,EAAE;IAChC,IAAI,CAACC,cAAc,GAAG,CAAC,CAACD,aAAa;EACvC;EAEA,MAAME,aAAa,CAAEC,KAAK,EAAE;IAC1B,MAAMC,QAAQ,GAAGD,KAAK,CAACE,UAAU;IACjC,IAAI,CAACD,QAAQ,EAAE;MACbE,eAAG,CAACC,KAAK,CAAC,sBAAsB,CAAC;MACjC;IACF;IAEA,MAAMC,QAAQ,GAAGL,KAAK,CAACM,UAAU;IACjC,QAAQL,QAAQ;MACd,KAAK,mBAAmB;QACtB,IAAI,CAACM,IAAI,CAAC,mBAAmB,EAC3B,IAAI,EACJF,QAAQ,CAACG,mBAAmB,EAC5BH,QAAQ,CAACI,oBAAoB,EAC7BJ,QAAQ,CAACK,6BAA6B,CACvC;QACD;MACF,KAAK,sCAAsC;QACzC,IAAI,CAACH,IAAI,CAAC,sCAAsC,EAC9C,IAAI,EACJF,QAAQ,CAACM,2BAA2B,CACrC;QACD;MACF,KAAK,8BAA8B;QACjC,IAAI,CAACJ,IAAI,CAAC,yBAAyB,EACjC,IAAI,EACJF,QAAQ,CAACO,2BAA2B,EACpCP,QAAQ,CAACQ,aAAa,CACvB;QACD;MACF,KAAK,4BAA4B;QAC/B,IAAI,CAACN,IAAI,CAAC,4BAA4B,EAAE,IAAI,EAAEF,QAAQ,CAAC;QACvD;MACF,KAAK,+BAA+B;QAClC,IAAI,CAACE,IAAI,CAAC,+BAA+B,EAAE,IAAI,EAAEF,QAAQ,CAAC;QAC1D;MACF,KAAK,0BAA0B;QAC7B,IAAI,CAACE,IAAI,CAAC,0BAA0B,EAAE,IAAI,EAAEF,QAAQ,CAAC;QACrD;MACF,KAAK,iCAAiC;QACpC,IAAI,CAACE,IAAI,CAAC,iCAAiC,EAAE,IAAI,EAAEF,QAAQ,CAAC;QAC5D;MACF,KAAK,0BAA0B;QAC7B,IAAI,CAACE,IAAI,CAAC,0BAA0B,EAAE,IAAI,EAAEF,QAAQ,CAAC;QACrD;MACF,KAAK,2BAA2B;QAC9B,MAAM,IAAI,CAACS,iBAAiB,CAACd,KAAK,CAAC;QACnC;MACF;QACEG,eAAG,CAACC,KAAK,CAAE,+BAA8BH,QAAS,gBAAe,GAC9D,yBAAwB,CAAC;IAAC;EAEnC;EAEAc,YAAY,CAAEf,KAAK,EAAE;IACnB,IAAI;MACF,OAAOgB,IAAI,CAACC,KAAK,CAACjB,KAAK,CAACM,UAAU,CAACY,iBAAiB,CAACC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZjB,eAAG,CAACkB,KAAK,CAAE,6BAA4BC,eAAC,CAACC,QAAQ,CAACP,IAAI,CAACQ,SAAS,CAACxB,KAAK,CAAC,EAAE;QAACyB,MAAM,EAAE;MAAG,CAAC,CAAE,EAAC,CAAC;MAC1F,MAAM,IAAIC,KAAK,CAAE,iCAAgCN,GAAG,CAACO,OAAQ,EAAC,CAAC;IACjE;EACF;EAEA,MAAMC,mBAAmB,CAAEC,KAAK,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEX,KAAK,EAAE;IAC/D,IAAI,CAACC,eAAC,CAACW,OAAO,CAACJ,KAAK,CAAC,EAAE;MACrB1B,eAAG,CAACC,KAAK,CAAE,0BAAyByB,KAAM,IAAG,CAAC;IAChD;IAEA,IAAIA,KAAK,EAAE;MACT,IAAI,IAAI,CAACK,aAAa,CAACL,KAAK,CAAC,EAAE;QAAA;QAC7B,IAAIP,eAAC,CAACa,GAAG,YAACH,MAAM,4CAAN,QAAQA,MAAM,EAAE,OAAO,CAAC,EAAE;UAClCA,MAAM,GAAGA,MAAM,CAACA,MAAM,CAACI,KAAK;QAC9B;QACA,IAAI,CAAC7B,IAAI,CAACsB,KAAK,EAAER,KAAK,EAAEW,MAAM,CAAC;MACjC,CAAC,MAAM;QACL7B,eAAG,CAACkB,KAAK,CAAE,4CAA2CQ,KAAM,IAAG,GAC5D,4CAA2C,GAC3C,YAAWb,IAAI,CAACQ,SAAS,CAACQ,MAAM,CAAE,KAAI,GACtC,WAAUhB,IAAI,CAACQ,SAAS,CAACH,KAAK,CAAE,GAAE,CAAC;MACxC;MACA;IACF;IAEA,IAAIgB,UAAU,GAAG,CAACP,MAAM,CAAC;IACzB,IAAIQ,IAAI,GAAG,CAACP,MAAM,CAAC;IAInB,QAAQD,MAAM;MACZ,KAAK,0BAA0B;QAC7BO,UAAU,CAACE,IAAI,CAAC,qBAAqB,CAAC;MAExC,KAAK,qBAAqB;QACxBD,IAAI,GAAG,CAAE,IAAGR,MAAO,SAAQ,CAAC;QAC5B;MACF,KAAK,wBAAwB;QAC3BQ,IAAI,GAAG,CAACP,MAAM,IAAIA,MAAM,CAACS,MAAM,CAAC;QAChC;MACF,KAAK,sBAAsB;QACzBF,IAAI,GAAG,CAACP,MAAM,CAACJ,OAAO,CAAC;QACvB;MACF,KAAK,iCAAiC;QACpCW,IAAI,GAAG,CAACP,MAAM,CAACU,OAAO,CAAC;QACvB;MACF;QAEE;IAAM;IAGV,IAAInB,eAAC,CAACoB,UAAU,CAACZ,MAAM,EAAE,UAAU,CAAC,EAAE;MAEpCO,UAAU,CAACE,IAAI,CAAC,cAAc,CAAC;MAC/BD,IAAI,CAACC,IAAI,CAACT,MAAM,CAAC;IACnB;IACA,IAAIR,eAAC,CAACoB,UAAU,CAACZ,MAAM,EAAE,UAAU,CAAC,EAAE;MAEpCO,UAAU,CAACE,IAAI,CAAC,cAAc,CAAC;MAC/BD,IAAI,CAACC,IAAI,CAACT,MAAM,CAAC;IACnB;IAEA,KAAK,MAAMa,IAAI,IAAIN,UAAU,EAAE;MAC7B,IAAI,CAAC9B,IAAI,CAACoC,IAAI,EAAEtB,KAAK,EAAE,GAAGiB,IAAI,CAAC;IACjC;EACF;EAEA,MAAMxB,iBAAiB,CAAEd,KAAK,EAAE;IAAA;IAC9B,MAAM4C,OAAO,GAAG,IAAI,CAAC7B,YAAY,CAACf,KAAK,CAAC;IACxC,IAAI6B,KAAK,GAAG,CAACe,OAAO,CAACC,EAAE,IAAI,EAAE,EAAE1B,QAAQ,EAAE;IACzC,IAAIa,MAAM,GAAGY,OAAO,CAACZ,MAAM;IAE3B,IAAIF,MAAM,GAAGc,OAAO,CAACd,MAAM;IAC3B,IAAIC,MAAM;IAEV,IAAID,MAAM,KAAK,sBAAsB,EAAE;MAGrC,MAAMgB,GAAG,GAAG9C,KAAK,CAACM,UAAU,CAACM,2BAA2B;MACxD,MAAMmC,UAAU,GAAGH,OAAO,CAACb,MAAM,CAACgB,UAAU;MAC5C,IAAI,CAACxC,IAAI,CAAC,sBAAsB,EAAE,IAAI,EAAEuC,GAAG,EAAEC,UAAU,CAAC;MACxD;IACF,CAAC,MAAM,IAAIjB,MAAM,KAAK,mCAAmC,EAAE;MACzD,MAAMgB,GAAG,GAAG9C,KAAK,CAACM,UAAU,CAACM,2BAA2B;MACxD,MAAMoC,WAAW,GAAGJ,OAAO,CAACb,MAAM,CAACiB,WAAW;MAC9C,MAAMC,WAAW,GAAGL,OAAO,CAACb,MAAM,CAACkB,WAAW;MAC9C,IAAI,CAAC1C,IAAI,CAAC,mCAAmC,EAAE,IAAI,EAAEuC,GAAG,EAAEE,WAAW,EAAEC,WAAW,CAAC;MACnF;IACF,CAAC,MAAM,IAAInB,MAAM,KAAK,wBAAwB,EAAE;MAC9C,MAAMgB,GAAG,GAAG9C,KAAK,CAACM,UAAU,CAACM,2BAA2B;MACxD,MAAMmC,UAAU,GAAGH,OAAO,CAACb,MAAM,CAACgB,UAAU,IAAI;QAACG,QAAQ,EAAEN,OAAO,CAACb,MAAM,CAACmB;MAAQ,CAAC;MACnF,IAAI,CAAC3C,IAAI,CAAC,wBAAwB,EAAE,IAAI,EAAEuC,GAAG,EAAEC,UAAU,CAAC;MAC1D;IACF;IAEA,IAAI,CAACH,OAAO,CAACvB,KAAK,IAAI,IAAI,CAACxB,aAAa,EAAE;MACxC,IAAI+C,OAAO,CAACd,MAAM,KAAK,kCAAkC,EAAE;QAGzD;MACF;MAGA,IAAIH,OAAO;MACX,IAAI;QACFA,OAAO,GAAGX,IAAI,CAACC,KAAK,CAAC2B,OAAO,CAACb,MAAM,CAACJ,OAAO,CAAC;QAC5CE,KAAK,GAAGF,OAAO,CAACkB,EAAE;QAClBf,MAAM,GAAGH,OAAO,CAACG,MAAM;QACvBE,MAAM,GAAGL,OAAO,CAACK,MAAM,IAAIL,OAAO;QAClCI,MAAM,GAAGC,MAAM,CAACD,MAAM;MACxB,CAAC,CAAC,OAAOX,GAAG,EAAE;QAGZjB,eAAG,CAACkB,KAAK,CAAE,+CAA8C,CAAC;QAC1D,IAAI,CAAC8B,IAAI,CAACC,aAAI,CAACC,aAAa,CAACrD,KAAK,CAAC,CAAC;QACpC,MAAMoB,GAAG;MACX;IACF,CAAC,MAAM;MACLW,MAAM,GAAGa,OAAO,CAACb,MAAM;IACzB;IAGA,IAAIV,KAAK,GAAGuB,OAAO,CAACvB,KAAK,IAAI,IAAI;IACjC,gBAAIW,MAAM,qCAAN,SAAQsB,SAAS,EAAE;MAAA;MACrB,MAAM3B,OAAO,GAAI,YAAAK,MAAM,wDAAN,SAAQA,MAAM,4CAAd,gBAAgBI,KAAK,gBAAIJ,MAAM,wDAAN,SAAQA,MAAM,4CAAd,gBAAgBuB,WAAW,GAChE,aAAAvB,MAAM,gEAAN,SAAQA,MAAM,oDAAd,gBAAgBI,KAAK,kBAAIJ,MAAM,gEAAN,SAAQA,MAAM,oDAAd,gBAAgBuB,WAAW,IACrD,yCAAyC;MAC7ClC,KAAK,GAAG,IAAIK,KAAK,CAACC,OAAO,CAAC;IAC5B;IAEA,MAAM,IAAI,CAACC,mBAAmB,CAACC,KAAK,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEX,KAAK,CAAC;EACtE;AACF;AAAC"}
1
+ {"version":3,"file":"rpc-message-handler.js","names":["_logger","_interopRequireDefault","require","_lodash","_support","_events","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","_result","has","value","eventNames","args","push","record","context","startsWith","name","_result2","dataKey","id","app","targetInfo","oldTargetId","newTargetId","targetId","warn","util","jsonStringify","wasThrown","_result3","_result3$result","_result4","_result4$result","_result5","_result5$result","_result6","_result6$result","description","exports","default"],"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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"}
@@ -185,4 +185,4 @@ const getModuleRoot = _lodash.default.memoize(function getModuleRoot() {
185
185
  return root;
186
186
  });
187
187
  exports.getModuleRoot = getModuleRoot;
188
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNT0RVTEVfTkFNRSIsIldFQl9DT05URU5UX0JVTkRMRV9JRCIsIldFQl9DT05URU5UX1BST0NFU1NfQlVORExFX0lEIiwiU0FGQVJJX1ZJRVdfUFJPQ0VTU19CVU5ETEVfSUQiLCJTQUZBUklfVklFV19CVU5ETEVfSUQiLCJXSUxEQ0FSRF9CVU5ETEVfSUQiLCJJTkFDVElWRV9BUFBfQ09ERSIsIkFDQ0VQVEVEX1BBR0VfVFlQRVMiLCJSRVNQT05TRV9MT0dfTEVOR1RIIiwiYXBwSW5mb0Zyb21EaWN0IiwiZGljdCIsImlkIiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiaXNQcm94eSIsIl8iLCJpc1N0cmluZyIsIldJUklzQXBwbGljYXRpb25Qcm94eUtleSIsInRvTG93ZXJDYXNlIiwiaXNBdXRvbWF0aW9uRW5hYmxlZCIsIldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IiwiaGFzIiwiV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSIsImVudHJ5IiwibmFtZSIsIldJUkFwcGxpY2F0aW9uTmFtZUtleSIsImJ1bmRsZUlkIiwiV0lSQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5IiwiaG9zdElkIiwiV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsImlzQWN0aXZlIiwiV0lSSXNBcHBsaWNhdGlvbkFjdGl2ZUtleSIsInBhZ2VBcnJheUZyb21EaWN0IiwicGFnZURpY3QiLCJuZXdQYWdlQXJyYXkiLCJ2YWx1ZXMiLCJpc1VuZGVmaW5lZCIsIldJUlR5cGVLZXkiLCJpbmNsdWRlcyIsInB1c2giLCJXSVJQYWdlSWRlbnRpZmllcktleSIsInRpdGxlIiwiV0lSVGl0bGVLZXkiLCJ1cmwiLCJXSVJVUkxLZXkiLCJpc0tleSIsIldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5IiwiZ2V0RGVidWdnZXJBcHBLZXkiLCJhcHBEaWN0IiwiYXBwSWQiLCJrZXkiLCJkYXRhIiwidG9QYWlycyIsImxvZyIsImRlYnVnIiwicHJveHlBcHBJZCIsImFwcElkRm9yQnVuZGxlIiwiZW5kc1dpdGgiLCJnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cyIsImJ1bmRsZUlkcyIsInByb3hpZWRBcHBJZHMiLCJwb3NzaWJsZUJ1bmRsZUlkcyIsInVuaXEiLCJqb2luIiwiY2hlY2tQYXJhbXMiLCJwYXJhbXMiLCJlcnJvcnMiLCJmaWx0ZXIiLCJ2YWx1ZSIsImlzTmlsIiwibWFwIiwicGFyYW0iLCJsZW5ndGgiLCJFcnJvciIsInV0aWwiLCJwbHVyYWxpemUiLCJzaW1wbGVTdHJpbmdpZnkiLCJtdWx0aWxpbmUiLCJKU09OIiwic3RyaW5naWZ5IiwiY2xlYW5WYWx1ZSIsImNsb25lIiwicHJvcGVydHkiLCJkZWZlcnJlZFByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZSIsIkIiLCJyZXMiLCJyZWoiLCJjb252ZXJ0UmVzdWx0IiwidHJ1bmNhdGUiLCJwYXJzZSIsImVyciIsImlzT2JqZWN0Iiwic3RhdHVzIiwiZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUiLCJtZXNzYWdlIiwiZ2V0TW9kdWxlUm9vdCIsIm1lbW9pemUiLCJyb290Iiwibm9kZSIsImdldE1vZHVsZVJvb3RTeW5jIiwiX19maWxlbmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCwgbm9kZSB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IE1PRFVMRV9OQU1FID0gJ2FwcGl1bS1yZW1vdGUtZGVidWdnZXInO1xuXG5jb25zdCBXRUJfQ09OVEVOVF9CVU5ETEVfSUQgPSAnY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50JztcbmNvbnN0IFdFQl9DT05URU5UX1BST0NFU1NfQlVORExFX0lEID0gJ3Byb2Nlc3MtY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50JztcbmNvbnN0IFNBRkFSSV9WSUVXX1BST0NFU1NfQlVORExFX0lEID0gJ3Byb2Nlc3MtU2FmYXJpVmlld1NlcnZpY2UnO1xuY29uc3QgU0FGQVJJX1ZJRVdfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5TYWZhcmlWaWV3U2VydmljZSc7XG5jb25zdCBXSUxEQ0FSRF9CVU5ETEVfSUQgPSAnKic7XG5cbmNvbnN0IElOQUNUSVZFX0FQUF9DT0RFID0gMDtcblxuLy8gdmFsdWVzIGZvciB0aGUgcGFnZSBgV0lSVHlwZUtleWAgZW50cnlcbmNvbnN0IEFDQ0VQVEVEX1BBR0VfVFlQRVMgPSBbXG4gICdXSVJUeXBlV2ViJywgLy8gdXAgdG8gaU9TIDExLjNcbiAgJ1dJUlR5cGVXZWJQYWdlJywgLy8gaU9TIDExLjRcbiAgJ1dJUlR5cGVQYWdlJywgLy8gaU9TIDExLjQgd2Vidmlld1xuXTtcblxuY29uc3QgUkVTUE9OU0VfTE9HX0xFTkdUSCA9IDEwMDtcblxuLypcbiAqIFRha2VzIGEgZGljdGlvbmFyeSBmcm9tIHRoZSByZW1vdGUgZGVidWdnZXIgYW5kIG1ha2VzIGEgbW9yZSBtYW5hZ2VhYmxlXG4gKiBkaWN0aW9uYXJ5IHdob3NlIGtleXMgYXJlIHVuZGVyc3RhbmRhYmxlXG4gKi9cbmZ1bmN0aW9uIGFwcEluZm9Gcm9tRGljdCAoZGljdCkge1xuICBjb25zdCBpZCA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICBjb25zdCBpc1Byb3h5ID0gXy5pc1N0cmluZyhkaWN0LldJUklzQXBwbGljYXRpb25Qcm94eUtleSlcbiAgICA/IGRpY3QuV0lSSXNBcHBsaWNhdGlvblByb3h5S2V5LnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xuICAgIDogZGljdC5XSVJJc0FwcGxpY2F0aW9uUHJveHlLZXk7XG4gIC8vIGF1dG9tYXRpb24gZW5hYmxlZCBjYW4gYmUgZWl0aGVyIGZyb20gdGhlIGtleXNcbiAgLy8gICAtIFdJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IChib29sZWFuKVxuICAvLyAgIC0gV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSAoc3RyaW5nIG9yIGJvb2xlYW4pXG4gIGxldCBpc0F1dG9tYXRpb25FbmFibGVkID0gISFkaWN0LldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5O1xuICBpZiAoXy5oYXMoZGljdCwgJ1dJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXknKSkge1xuICAgIGlmIChfLmlzU3RyaW5nKGRpY3QuV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSkpIHtcbiAgICAgIGlzQXV0b21hdGlvbkVuYWJsZWQgPSBkaWN0LldJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXkgPT09ICdXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5VW5rbm93bidcbiAgICAgICAgPyAnVW5rbm93bidcbiAgICAgICAgOiBkaWN0LldJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXkgPT09ICdXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5QXZhaWxhYmxlJztcbiAgICB9IGVsc2Uge1xuICAgICAgaXNBdXRvbWF0aW9uRW5hYmxlZCA9ICEhZGljdC5XSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5S2V5O1xuICAgIH1cbiAgfVxuICBjb25zdCBlbnRyeSA9IHtcbiAgICBpZCxcbiAgICBpc1Byb3h5LFxuICAgIG5hbWU6IGRpY3QuV0lSQXBwbGljYXRpb25OYW1lS2V5LFxuICAgIGJ1bmRsZUlkOiBkaWN0LldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSxcbiAgICBob3N0SWQ6IGRpY3QuV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICBpc0FjdGl2ZTogZGljdC5XSVJJc0FwcGxpY2F0aW9uQWN0aXZlS2V5ICE9PSBJTkFDVElWRV9BUFBfQ09ERSxcbiAgICBpc0F1dG9tYXRpb25FbmFibGVkLFxuICB9O1xuXG4gIHJldHVybiBbaWQsIGVudHJ5XTtcbn1cblxuLypcbiAqIFRha2UgYSBkaWN0aW9uYXJ5IGZyb20gdGhlIHJlbW90ZSBkZWJ1Z2dlciBhbmQgbWFrZXMgYSBtb3JlIG1hbmFnZWFibGVcbiAqIGRpY3Rpb25hcnkgb2YgcGFnZXMgYXZhaWxhYmxlLlxuICovXG5mdW5jdGlvbiBwYWdlQXJyYXlGcm9tRGljdCAocGFnZURpY3QpIHtcbiAgaWYgKHBhZ2VEaWN0LmlkKSB7XG4gICAgLy8gdGhlIHBhZ2UgaXMgYWxyZWFkeSB0cmFuc2xhdGVkLCBzbyB3cmFwIGluIGFuIGFycmF5IGFuZCBwYXNzIGJhY2tcbiAgICByZXR1cm4gW3BhZ2VEaWN0XTtcbiAgfVxuICBsZXQgbmV3UGFnZUFycmF5ID0gW107XG4gIGZvciAoY29uc3QgZGljdCBvZiBfLnZhbHVlcyhwYWdlRGljdCkpIHtcbiAgICAvLyBjb3VudCBvbmx5IFdJUlR5cGVXZWIgcGFnZXMgYW5kIGlnbm9yZSBhbGwgb3RoZXJzIChXSVJUeXBlSmF2YVNjcmlwdCBldGMpXG4gICAgaWYgKF8uaXNVbmRlZmluZWQoZGljdC5XSVJUeXBlS2V5KSB8fCBBQ0NFUFRFRF9QQUdFX1RZUEVTLmluY2x1ZGVzKGRpY3QuV0lSVHlwZUtleSkpIHtcbiAgICAgIG5ld1BhZ2VBcnJheS5wdXNoKHtcbiAgICAgICAgaWQ6IGRpY3QuV0lSUGFnZUlkZW50aWZpZXJLZXksXG4gICAgICAgIHRpdGxlOiBkaWN0LldJUlRpdGxlS2V5LFxuICAgICAgICB1cmw6IGRpY3QuV0lSVVJMS2V5LFxuICAgICAgICBpc0tleTogIV8uaXNVbmRlZmluZWQoZGljdC5XSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld1BhZ2VBcnJheTtcbn1cblxuLypcbiAqIEdpdmVuIGEgYnVuZGxlIGlkLCBmaW5kcyB0aGUgY29ycmVjdCByZW1vdGUgZGVidWdnZXIgYXBwIHRoYXQgaXNcbiAqIGNvbm5lY3RlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0RGVidWdnZXJBcHBLZXkgKGJ1bmRsZUlkLCBhcHBEaWN0KSB7XG4gIGxldCBhcHBJZDtcbiAgZm9yIChjb25zdCBba2V5LCBkYXRhXSBvZiBfLnRvUGFpcnMoYXBwRGljdCkpIHtcbiAgICBpZiAoZGF0YS5idW5kbGVJZCA9PT0gYnVuZGxlSWQpIHtcbiAgICAgIGFwcElkID0ga2V5O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIC8vIG5vdyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgcGljayBhIHByb3h5IGZvciB0aGlzIGluc3RlYWRcbiAgaWYgKGFwcElkKSB7XG4gICAgbG9nLmRlYnVnKGBGb3VuZCBhcHAgaWQga2V5ICcke2FwcElkfScgZm9yIGJ1bmRsZSAnJHtidW5kbGVJZH0nYCk7XG4gICAgbGV0IHByb3h5QXBwSWQ7XG4gICAgZm9yIChjb25zdCBba2V5LCBkYXRhXSBvZiBfLnRvUGFpcnMoYXBwRGljdCkpIHtcbiAgICAgIGlmIChkYXRhLmlzUHJveHkgJiYgZGF0YS5ob3N0SWQgPT09IGFwcElkKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgc2VwYXJhdGUgYnVuZGxlSWQgJyR7ZGF0YS5idW5kbGVJZH0nIGAgK1xuICAgICAgICAgICAgICAgICAgYGFjdGluZyBhcyBwcm94eSBmb3IgJyR7YnVuZGxlSWR9Jywgd2l0aCBhcHAgaWQgJyR7a2V5fSdgKTtcbiAgICAgICAgLy8gc2V0IHRoZSBhcHAgaWQuLi4gdGhlIGxhc3Qgb25lIHdpbGwgYmUgdXNlZCwgc28ganVzdCBrZWVwIHJlLWFzc2lnbmluZ1xuICAgICAgICBwcm94eUFwcElkID0ga2V5O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJveHlBcHBJZCkge1xuICAgICAgYXBwSWQgPSBwcm94eUFwcElkO1xuICAgICAgbG9nLmRlYnVnKGBVc2luZyBwcm94aWVkIGFwcCBpZCAnJHthcHBJZH0nYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFwcElkO1xufVxuXG5mdW5jdGlvbiBhcHBJZEZvckJ1bmRsZSAoYnVuZGxlSWQsIGFwcERpY3QpIHtcbiAgbGV0IGFwcElkO1xuICBmb3IgKGNvbnN0IFtrZXksIGRhdGFdIG9mIF8udG9QYWlycyhhcHBEaWN0KSkge1xuICAgIGlmIChkYXRhLmJ1bmRsZUlkLmVuZHNXaXRoKGJ1bmRsZUlkKSkge1xuICAgICAgYXBwSWQgPSBrZXk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBpZiBub3RoaW5nIGlzIGZvdW5kLCB0cnkgdG8gZ2V0IHRoZSBnZW5lcmljIGFwcFxuICBpZiAoIWFwcElkICYmIGJ1bmRsZUlkICE9PSBXRUJfQ09OVEVOVF9CVU5ETEVfSUQpIHtcbiAgICByZXR1cm4gYXBwSWRGb3JCdW5kbGUoV0VCX0NPTlRFTlRfQlVORExFX0lELCBhcHBEaWN0KTtcbiAgfVxuXG4gIHJldHVybiBhcHBJZDtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVEZWJ1Z2dlckFwcEtleXMgKGJ1bmRsZUlkcywgYXBwRGljdCkge1xuICBsZXQgcHJveGllZEFwcElkcyA9IFtdO1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIHBvc3NpYmxlIGJ1bmRsZSBpZGVudGlmaWVyc1xuICBjb25zdCBwb3NzaWJsZUJ1bmRsZUlkcyA9IF8udW5pcShbXG4gICAgV0VCX0NPTlRFTlRfQlVORExFX0lELFxuICAgIFdFQl9DT05URU5UX1BST0NFU1NfQlVORExFX0lELFxuICAgIFNBRkFSSV9WSUVXX1BST0NFU1NfQlVORExFX0lELFxuICAgIFNBRkFSSV9WSUVXX0JVTkRMRV9JRCxcbiAgICBXSUxEQ0FSRF9CVU5ETEVfSUQsXG4gICAgLi4uYnVuZGxlSWRzLFxuICBdKTtcbiAgbG9nLmRlYnVnKGBDaGVja2luZyBmb3IgYnVuZGxlIGlkZW50aWZpZXJzOiAke3Bvc3NpYmxlQnVuZGxlSWRzLmpvaW4oJywgJyl9YCk7XG4gIGZvciAoY29uc3QgYnVuZGxlSWQgb2YgcG9zc2libGVCdW5kbGVJZHMpIHtcbiAgICBjb25zdCBhcHBJZCA9IGFwcElkRm9yQnVuZGxlKGJ1bmRsZUlkLCBhcHBEaWN0KTtcblxuICAgIC8vIG5vdyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgcGljayBhIHByb3h5IGZvciB0aGlzIGluc3RlYWRcbiAgICBpZiAoYXBwSWQpIHtcbiAgICAgIHByb3hpZWRBcHBJZHMucHVzaChhcHBJZCk7XG4gICAgICBsb2cuZGVidWcoYEZvdW5kIGFwcCBpZCBrZXkgJyR7YXBwSWR9JyBmb3IgYnVuZGxlICcke2J1bmRsZUlkfSdgKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgZGF0YV0gb2YgXy50b1BhaXJzKGFwcERpY3QpKSB7XG4gICAgICAgIGlmIChkYXRhLmlzUHJveHkgJiYgZGF0YS5ob3N0SWQgPT09IGFwcElkKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBGb3VuZCBzZXBhcmF0ZSBidW5kbGVJZCAnJHtkYXRhLmJ1bmRsZUlkfScgYCArXG4gICAgICAgICAgICAgICAgICAgIGBhY3RpbmcgYXMgcHJveHkgZm9yICcke2J1bmRsZUlkfScsIHdpdGggYXBwIGlkICcke2tleX0nYCk7XG4gICAgICAgICAgcHJveGllZEFwcElkcy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gXy51bmlxKHByb3hpZWRBcHBJZHMpO1xufVxuXG5mdW5jdGlvbiBjaGVja1BhcmFtcyAocGFyYW1zKSB7XG4gIC8vIGNoZWNrIGlmIGFsbCBwYXJhbWV0ZXJzIGhhdmUgYSB2YWx1ZVxuICBjb25zdCBlcnJvcnMgPSBfLnRvUGFpcnMocGFyYW1zKVxuICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4gXy5pc05pbCh2YWx1ZSkpXG4gICAgLm1hcCgoW3BhcmFtXSkgPT4gcGFyYW0pO1xuICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyAke3V0aWwucGx1cmFsaXplKCdwYXJhbWV0ZXInLCBlcnJvcnMubGVuZ3RoKX06ICR7ZXJyb3JzLmpvaW4oJywgJyl9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2ltcGxlU3RyaW5naWZ5ICh2YWx1ZSwgbXVsdGlsaW5lID0gZmFsc2UpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIH1cblxuICAvLyB3ZSBnZXQgYmFjayBvYmplY3RzIHNvbWV0aW1lcyB3aXRoIHN0cmluZyB2ZXJzaW9ucyBvZiBmdW5jdGlvbnNcbiAgLy8gd2hpY2ggbXVkZHkgdGhlIGxvZ3NcbiAgbGV0IGNsZWFuVmFsdWUgPSBfLmNsb25lKHZhbHVlKTtcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbJ2NlaWwnLCAnY2xvbmUnLCAnZmxvb3InLCAncm91bmQnLCAnc2NhbGUnLCAndG9TdHJpbmcnXSkge1xuICAgIGRlbGV0ZSBjbGVhblZhbHVlW3Byb3BlcnR5XTtcbiAgfVxuICByZXR1cm4gbXVsdGlsaW5lID8gSlNPTi5zdHJpbmdpZnkoY2xlYW5WYWx1ZSwgbnVsbCwgMikgOiBKU09OLnN0cmluZ2lmeShjbGVhblZhbHVlKTtcbn1cblxuZnVuY3Rpb24gZGVmZXJyZWRQcm9taXNlICgpIHtcbiAgLy8gaHR0cDovL2JsdWViaXJkanMuY29tL2RvY3MvYXBpL2RlZmVycmVkLW1pZ3JhdGlvbi5odG1sXG4gIGxldCByZXNvbHZlO1xuICBsZXQgcmVqZWN0O1xuICBjb25zdCBwcm9taXNlID0gbmV3IEIoKHJlcywgcmVqKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wYXJhbS1uYW1lc1xuICAgIHJlc29sdmUgPSByZXM7XG4gICAgcmVqZWN0ID0gcmVqO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBwcm9taXNlLFxuICAgIHJlc29sdmUsXG4gICAgcmVqZWN0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRSZXN1bHQgKHJlcykge1xuICBpZiAoXy5pc1VuZGVmaW5lZChyZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgbm90IGdldCBPSyByZXN1bHQgZnJvbSByZW1vdGUgZGVidWdnZXIuIFJlc3VsdCB3YXM6ICR7Xy50cnVuY2F0ZShzaW1wbGVTdHJpbmdpZnkocmVzKSwge2xlbmd0aDogUkVTUE9OU0VfTE9HX0xFTkdUSH0pfWApO1xuICB9IGVsc2UgaWYgKF8uaXNTdHJpbmcocmVzKSkge1xuICAgIHRyeSB7XG4gICAgICByZXMgPSBKU09OLnBhcnNlKHJlcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyB3ZSBtaWdodCBnZXQgYSBzZXJpYWxpemVkIG9iamVjdCwgYnV0IHdlIG1pZ2h0IG5vdFxuICAgICAgLy8gaWYgd2UgZ2V0IGhlcmUsIGl0IGlzIGp1c3QgYSB2YWx1ZVxuICAgIH1cbiAgfSBlbHNlIGlmICghXy5pc09iamVjdChyZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZXN1bHQgaGFzIHVuZXhwZWN0ZWQgdHlwZTogKCR7dHlwZW9mIHJlc30pLmApO1xuICB9XG5cbiAgaWYgKHJlcy5zdGF0dXMgJiYgcmVzLnN0YXR1cyAhPT0gMCkge1xuICAgIC8vIHdlIGdvdCBzb21lIGZvcm0gb2YgZXJyb3IuXG4gICAgdGhyb3cgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUocmVzLnN0YXR1cywgcmVzLnZhbHVlLm1lc3NhZ2UgfHwgcmVzLnZhbHVlKTtcbiAgfVxuXG4gIC8vIHdpdGggZWl0aGVyIGhhdmUgYW4gb2JqZWN0IHdpdGggYSBgdmFsdWVgIHByb3BlcnR5IChldmVuIGlmIGBudWxsYCksXG4gIC8vIG9yIGEgcGxhaW4gb2JqZWN0XG4gIGNvbnN0IHZhbHVlID0gXy5oYXMocmVzLCAndmFsdWUnKSA/IHJlcy52YWx1ZSA6IHJlcztcblxuICAvLyBnZXQgcmlkIG9mIG5vaXN5IGZ1bmN0aW9ucyBvbiBvYmplY3RzXG4gIGlmIChfLmlzT2JqZWN0KHZhbHVlKSkge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgWydjZWlsJywgJ2Nsb25lJywgJ2Zsb29yJywgJ3JvdW5kJywgJ3NjYWxlJywgJ3RvU3RyaW5nJ10pIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtwcm9wZXJ0eV07XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IG1vZHVsZSdzIHJvb3QgZm9sZGVyXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZ1bGwgcGF0aCB0byBtb2R1bGUgcm9vdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjdXJyZW50IG1vZHVsZSByb290IGZvbGRlciBjYW5ub3QgYmUgZGV0ZXJtaW5lZFxuICovXG5jb25zdCBnZXRNb2R1bGVSb290ID0gXy5tZW1vaXplKGZ1bmN0aW9uIGdldE1vZHVsZVJvb3QgKCkge1xuICBjb25zdCByb290ID0gbm9kZS5nZXRNb2R1bGVSb290U3luYyhNT0RVTEVfTkFNRSwgX19maWxlbmFtZSk7XG4gIGlmICghcm9vdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSAke01PRFVMRV9OQU1FfSBOb2RlLmpzIG1vZHVsZWApO1xuICB9XG4gIHJldHVybiByb290O1xufSk7XG5cbmV4cG9ydCB7XG4gIGFwcEluZm9Gcm9tRGljdCwgcGFnZUFycmF5RnJvbURpY3QsIGdldERlYnVnZ2VyQXBwS2V5LFxuICBnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cywgY2hlY2tQYXJhbXMsIHNpbXBsZVN0cmluZ2lmeSwgZGVmZXJyZWRQcm9taXNlLFxuICBjb252ZXJ0UmVzdWx0LCBSRVNQT05TRV9MT0dfTEVOR1RILCBnZXRNb2R1bGVSb290LFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsV0FBVyxHQUFHLHdCQUF3QjtBQUU1QyxNQUFNQyxxQkFBcUIsR0FBRyw2QkFBNkI7QUFDM0QsTUFBTUMsNkJBQTZC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
188
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2JsdWViaXJkIiwiX2Jhc2VEcml2ZXIiLCJfc3VwcG9ydCIsIk1PRFVMRV9OQU1FIiwiV0VCX0NPTlRFTlRfQlVORExFX0lEIiwiV0VCX0NPTlRFTlRfUFJPQ0VTU19CVU5ETEVfSUQiLCJTQUZBUklfVklFV19QUk9DRVNTX0JVTkRMRV9JRCIsIlNBRkFSSV9WSUVXX0JVTkRMRV9JRCIsIldJTERDQVJEX0JVTkRMRV9JRCIsIklOQUNUSVZFX0FQUF9DT0RFIiwiQUNDRVBURURfUEFHRV9UWVBFUyIsIlJFU1BPTlNFX0xPR19MRU5HVEgiLCJleHBvcnRzIiwiYXBwSW5mb0Zyb21EaWN0IiwiZGljdCIsImlkIiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiaXNQcm94eSIsIl8iLCJpc1N0cmluZyIsIldJUklzQXBwbGljYXRpb25Qcm94eUtleSIsInRvTG93ZXJDYXNlIiwiaXNBdXRvbWF0aW9uRW5hYmxlZCIsIldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IiwiaGFzIiwiV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSIsImVudHJ5IiwibmFtZSIsIldJUkFwcGxpY2F0aW9uTmFtZUtleSIsImJ1bmRsZUlkIiwiV0lSQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5IiwiaG9zdElkIiwiV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsImlzQWN0aXZlIiwiV0lSSXNBcHBsaWNhdGlvbkFjdGl2ZUtleSIsInBhZ2VBcnJheUZyb21EaWN0IiwicGFnZURpY3QiLCJuZXdQYWdlQXJyYXkiLCJ2YWx1ZXMiLCJpc1VuZGVmaW5lZCIsIldJUlR5cGVLZXkiLCJpbmNsdWRlcyIsInB1c2giLCJXSVJQYWdlSWRlbnRpZmllcktleSIsInRpdGxlIiwiV0lSVGl0bGVLZXkiLCJ1cmwiLCJXSVJVUkxLZXkiLCJpc0tleSIsIldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5IiwiZ2V0RGVidWdnZXJBcHBLZXkiLCJhcHBEaWN0IiwiYXBwSWQiLCJrZXkiLCJkYXRhIiwidG9QYWlycyIsImxvZyIsImRlYnVnIiwicHJveHlBcHBJZCIsImFwcElkRm9yQnVuZGxlIiwiZW5kc1dpdGgiLCJnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cyIsImJ1bmRsZUlkcyIsInByb3hpZWRBcHBJZHMiLCJwb3NzaWJsZUJ1bmRsZUlkcyIsInVuaXEiLCJqb2luIiwiY2hlY2tQYXJhbXMiLCJwYXJhbXMiLCJlcnJvcnMiLCJmaWx0ZXIiLCJ2YWx1ZSIsImlzTmlsIiwibWFwIiwicGFyYW0iLCJsZW5ndGgiLCJFcnJvciIsInV0aWwiLCJwbHVyYWxpemUiLCJzaW1wbGVTdHJpbmdpZnkiLCJtdWx0aWxpbmUiLCJKU09OIiwic3RyaW5naWZ5IiwiY2xlYW5WYWx1ZSIsImNsb25lIiwicHJvcGVydHkiLCJkZWZlcnJlZFByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZSIsIkIiLCJyZXMiLCJyZWoiLCJjb252ZXJ0UmVzdWx0IiwidHJ1bmNhdGUiLCJwYXJzZSIsImVyciIsImlzT2JqZWN0Iiwic3RhdHVzIiwiZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUiLCJtZXNzYWdlIiwiZ2V0TW9kdWxlUm9vdCIsIm1lbW9pemUiLCJyb290Iiwibm9kZSIsImdldE1vZHVsZVJvb3RTeW5jIiwiX19maWxlbmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCwgbm9kZSB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IE1PRFVMRV9OQU1FID0gJ2FwcGl1bS1yZW1vdGUtZGVidWdnZXInO1xuXG5jb25zdCBXRUJfQ09OVEVOVF9CVU5ETEVfSUQgPSAnY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50JztcbmNvbnN0IFdFQl9DT05URU5UX1BST0NFU1NfQlVORExFX0lEID0gJ3Byb2Nlc3MtY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50JztcbmNvbnN0IFNBRkFSSV9WSUVXX1BST0NFU1NfQlVORExFX0lEID0gJ3Byb2Nlc3MtU2FmYXJpVmlld1NlcnZpY2UnO1xuY29uc3QgU0FGQVJJX1ZJRVdfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5TYWZhcmlWaWV3U2VydmljZSc7XG5jb25zdCBXSUxEQ0FSRF9CVU5ETEVfSUQgPSAnKic7XG5cbmNvbnN0IElOQUNUSVZFX0FQUF9DT0RFID0gMDtcblxuLy8gdmFsdWVzIGZvciB0aGUgcGFnZSBgV0lSVHlwZUtleWAgZW50cnlcbmNvbnN0IEFDQ0VQVEVEX1BBR0VfVFlQRVMgPSBbXG4gICdXSVJUeXBlV2ViJywgLy8gdXAgdG8gaU9TIDExLjNcbiAgJ1dJUlR5cGVXZWJQYWdlJywgLy8gaU9TIDExLjRcbiAgJ1dJUlR5cGVQYWdlJywgLy8gaU9TIDExLjQgd2Vidmlld1xuXTtcblxuY29uc3QgUkVTUE9OU0VfTE9HX0xFTkdUSCA9IDEwMDtcblxuLypcbiAqIFRha2VzIGEgZGljdGlvbmFyeSBmcm9tIHRoZSByZW1vdGUgZGVidWdnZXIgYW5kIG1ha2VzIGEgbW9yZSBtYW5hZ2VhYmxlXG4gKiBkaWN0aW9uYXJ5IHdob3NlIGtleXMgYXJlIHVuZGVyc3RhbmRhYmxlXG4gKi9cbmZ1bmN0aW9uIGFwcEluZm9Gcm9tRGljdCAoZGljdCkge1xuICBjb25zdCBpZCA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICBjb25zdCBpc1Byb3h5ID0gXy5pc1N0cmluZyhkaWN0LldJUklzQXBwbGljYXRpb25Qcm94eUtleSlcbiAgICA/IGRpY3QuV0lSSXNBcHBsaWNhdGlvblByb3h5S2V5LnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xuICAgIDogZGljdC5XSVJJc0FwcGxpY2F0aW9uUHJveHlLZXk7XG4gIC8vIGF1dG9tYXRpb24gZW5hYmxlZCBjYW4gYmUgZWl0aGVyIGZyb20gdGhlIGtleXNcbiAgLy8gICAtIFdJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IChib29sZWFuKVxuICAvLyAgIC0gV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSAoc3RyaW5nIG9yIGJvb2xlYW4pXG4gIGxldCBpc0F1dG9tYXRpb25FbmFibGVkID0gISFkaWN0LldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5O1xuICBpZiAoXy5oYXMoZGljdCwgJ1dJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXknKSkge1xuICAgIGlmIChfLmlzU3RyaW5nKGRpY3QuV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSkpIHtcbiAgICAgIGlzQXV0b21hdGlvbkVuYWJsZWQgPSBkaWN0LldJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXkgPT09ICdXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5VW5rbm93bidcbiAgICAgICAgPyAnVW5rbm93bidcbiAgICAgICAgOiBkaWN0LldJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXkgPT09ICdXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5QXZhaWxhYmxlJztcbiAgICB9IGVsc2Uge1xuICAgICAgaXNBdXRvbWF0aW9uRW5hYmxlZCA9ICEhZGljdC5XSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5S2V5O1xuICAgIH1cbiAgfVxuICBjb25zdCBlbnRyeSA9IHtcbiAgICBpZCxcbiAgICBpc1Byb3h5LFxuICAgIG5hbWU6IGRpY3QuV0lSQXBwbGljYXRpb25OYW1lS2V5LFxuICAgIGJ1bmRsZUlkOiBkaWN0LldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSxcbiAgICBob3N0SWQ6IGRpY3QuV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICBpc0FjdGl2ZTogZGljdC5XSVJJc0FwcGxpY2F0aW9uQWN0aXZlS2V5ICE9PSBJTkFDVElWRV9BUFBfQ09ERSxcbiAgICBpc0F1dG9tYXRpb25FbmFibGVkLFxuICB9O1xuXG4gIHJldHVybiBbaWQsIGVudHJ5XTtcbn1cblxuLypcbiAqIFRha2UgYSBkaWN0aW9uYXJ5IGZyb20gdGhlIHJlbW90ZSBkZWJ1Z2dlciBhbmQgbWFrZXMgYSBtb3JlIG1hbmFnZWFibGVcbiAqIGRpY3Rpb25hcnkgb2YgcGFnZXMgYXZhaWxhYmxlLlxuICovXG5mdW5jdGlvbiBwYWdlQXJyYXlGcm9tRGljdCAocGFnZURpY3QpIHtcbiAgaWYgKHBhZ2VEaWN0LmlkKSB7XG4gICAgLy8gdGhlIHBhZ2UgaXMgYWxyZWFkeSB0cmFuc2xhdGVkLCBzbyB3cmFwIGluIGFuIGFycmF5IGFuZCBwYXNzIGJhY2tcbiAgICByZXR1cm4gW3BhZ2VEaWN0XTtcbiAgfVxuICBsZXQgbmV3UGFnZUFycmF5ID0gW107XG4gIGZvciAoY29uc3QgZGljdCBvZiBfLnZhbHVlcyhwYWdlRGljdCkpIHtcbiAgICAvLyBjb3VudCBvbmx5IFdJUlR5cGVXZWIgcGFnZXMgYW5kIGlnbm9yZSBhbGwgb3RoZXJzIChXSVJUeXBlSmF2YVNjcmlwdCBldGMpXG4gICAgaWYgKF8uaXNVbmRlZmluZWQoZGljdC5XSVJUeXBlS2V5KSB8fCBBQ0NFUFRFRF9QQUdFX1RZUEVTLmluY2x1ZGVzKGRpY3QuV0lSVHlwZUtleSkpIHtcbiAgICAgIG5ld1BhZ2VBcnJheS5wdXNoKHtcbiAgICAgICAgaWQ6IGRpY3QuV0lSUGFnZUlkZW50aWZpZXJLZXksXG4gICAgICAgIHRpdGxlOiBkaWN0LldJUlRpdGxlS2V5LFxuICAgICAgICB1cmw6IGRpY3QuV0lSVVJMS2V5LFxuICAgICAgICBpc0tleTogIV8uaXNVbmRlZmluZWQoZGljdC5XSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld1BhZ2VBcnJheTtcbn1cblxuLypcbiAqIEdpdmVuIGEgYnVuZGxlIGlkLCBmaW5kcyB0aGUgY29ycmVjdCByZW1vdGUgZGVidWdnZXIgYXBwIHRoYXQgaXNcbiAqIGNvbm5lY3RlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0RGVidWdnZXJBcHBLZXkgKGJ1bmRsZUlkLCBhcHBEaWN0KSB7XG4gIGxldCBhcHBJZDtcbiAgZm9yIChjb25zdCBba2V5LCBkYXRhXSBvZiBfLnRvUGFpcnMoYXBwRGljdCkpIHtcbiAgICBpZiAoZGF0YS5idW5kbGVJZCA9PT0gYnVuZGxlSWQpIHtcbiAgICAgIGFwcElkID0ga2V5O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIC8vIG5vdyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgcGljayBhIHByb3h5IGZvciB0aGlzIGluc3RlYWRcbiAgaWYgKGFwcElkKSB7XG4gICAgbG9nLmRlYnVnKGBGb3VuZCBhcHAgaWQga2V5ICcke2FwcElkfScgZm9yIGJ1bmRsZSAnJHtidW5kbGVJZH0nYCk7XG4gICAgbGV0IHByb3h5QXBwSWQ7XG4gICAgZm9yIChjb25zdCBba2V5LCBkYXRhXSBvZiBfLnRvUGFpcnMoYXBwRGljdCkpIHtcbiAgICAgIGlmIChkYXRhLmlzUHJveHkgJiYgZGF0YS5ob3N0SWQgPT09IGFwcElkKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgc2VwYXJhdGUgYnVuZGxlSWQgJyR7ZGF0YS5idW5kbGVJZH0nIGAgK1xuICAgICAgICAgICAgICAgICAgYGFjdGluZyBhcyBwcm94eSBmb3IgJyR7YnVuZGxlSWR9Jywgd2l0aCBhcHAgaWQgJyR7a2V5fSdgKTtcbiAgICAgICAgLy8gc2V0IHRoZSBhcHAgaWQuLi4gdGhlIGxhc3Qgb25lIHdpbGwgYmUgdXNlZCwgc28ganVzdCBrZWVwIHJlLWFzc2lnbmluZ1xuICAgICAgICBwcm94eUFwcElkID0ga2V5O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJveHlBcHBJZCkge1xuICAgICAgYXBwSWQgPSBwcm94eUFwcElkO1xuICAgICAgbG9nLmRlYnVnKGBVc2luZyBwcm94aWVkIGFwcCBpZCAnJHthcHBJZH0nYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFwcElkO1xufVxuXG5mdW5jdGlvbiBhcHBJZEZvckJ1bmRsZSAoYnVuZGxlSWQsIGFwcERpY3QpIHtcbiAgbGV0IGFwcElkO1xuICBmb3IgKGNvbnN0IFtrZXksIGRhdGFdIG9mIF8udG9QYWlycyhhcHBEaWN0KSkge1xuICAgIGlmIChkYXRhLmJ1bmRsZUlkLmVuZHNXaXRoKGJ1bmRsZUlkKSkge1xuICAgICAgYXBwSWQgPSBrZXk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBpZiBub3RoaW5nIGlzIGZvdW5kLCB0cnkgdG8gZ2V0IHRoZSBnZW5lcmljIGFwcFxuICBpZiAoIWFwcElkICYmIGJ1bmRsZUlkICE9PSBXRUJfQ09OVEVOVF9CVU5ETEVfSUQpIHtcbiAgICByZXR1cm4gYXBwSWRGb3JCdW5kbGUoV0VCX0NPTlRFTlRfQlVORExFX0lELCBhcHBEaWN0KTtcbiAgfVxuXG4gIHJldHVybiBhcHBJZDtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVEZWJ1Z2dlckFwcEtleXMgKGJ1bmRsZUlkcywgYXBwRGljdCkge1xuICBsZXQgcHJveGllZEFwcElkcyA9IFtdO1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIHBvc3NpYmxlIGJ1bmRsZSBpZGVudGlmaWVyc1xuICBjb25zdCBwb3NzaWJsZUJ1bmRsZUlkcyA9IF8udW5pcShbXG4gICAgV0VCX0NPTlRFTlRfQlVORExFX0lELFxuICAgIFdFQl9DT05URU5UX1BST0NFU1NfQlVORExFX0lELFxuICAgIFNBRkFSSV9WSUVXX1BST0NFU1NfQlVORExFX0lELFxuICAgIFNBRkFSSV9WSUVXX0JVTkRMRV9JRCxcbiAgICBXSUxEQ0FSRF9CVU5ETEVfSUQsXG4gICAgLi4uYnVuZGxlSWRzLFxuICBdKTtcbiAgbG9nLmRlYnVnKGBDaGVja2luZyBmb3IgYnVuZGxlIGlkZW50aWZpZXJzOiAke3Bvc3NpYmxlQnVuZGxlSWRzLmpvaW4oJywgJyl9YCk7XG4gIGZvciAoY29uc3QgYnVuZGxlSWQgb2YgcG9zc2libGVCdW5kbGVJZHMpIHtcbiAgICBjb25zdCBhcHBJZCA9IGFwcElkRm9yQnVuZGxlKGJ1bmRsZUlkLCBhcHBEaWN0KTtcblxuICAgIC8vIG5vdyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgcGljayBhIHByb3h5IGZvciB0aGlzIGluc3RlYWRcbiAgICBpZiAoYXBwSWQpIHtcbiAgICAgIHByb3hpZWRBcHBJZHMucHVzaChhcHBJZCk7XG4gICAgICBsb2cuZGVidWcoYEZvdW5kIGFwcCBpZCBrZXkgJyR7YXBwSWR9JyBmb3IgYnVuZGxlICcke2J1bmRsZUlkfSdgKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgZGF0YV0gb2YgXy50b1BhaXJzKGFwcERpY3QpKSB7XG4gICAgICAgIGlmIChkYXRhLmlzUHJveHkgJiYgZGF0YS5ob3N0SWQgPT09IGFwcElkKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBGb3VuZCBzZXBhcmF0ZSBidW5kbGVJZCAnJHtkYXRhLmJ1bmRsZUlkfScgYCArXG4gICAgICAgICAgICAgICAgICAgIGBhY3RpbmcgYXMgcHJveHkgZm9yICcke2J1bmRsZUlkfScsIHdpdGggYXBwIGlkICcke2tleX0nYCk7XG4gICAgICAgICAgcHJveGllZEFwcElkcy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gXy51bmlxKHByb3hpZWRBcHBJZHMpO1xufVxuXG5mdW5jdGlvbiBjaGVja1BhcmFtcyAocGFyYW1zKSB7XG4gIC8vIGNoZWNrIGlmIGFsbCBwYXJhbWV0ZXJzIGhhdmUgYSB2YWx1ZVxuICBjb25zdCBlcnJvcnMgPSBfLnRvUGFpcnMocGFyYW1zKVxuICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4gXy5pc05pbCh2YWx1ZSkpXG4gICAgLm1hcCgoW3BhcmFtXSkgPT4gcGFyYW0pO1xuICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyAke3V0aWwucGx1cmFsaXplKCdwYXJhbWV0ZXInLCBlcnJvcnMubGVuZ3RoKX06ICR7ZXJyb3JzLmpvaW4oJywgJyl9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2ltcGxlU3RyaW5naWZ5ICh2YWx1ZSwgbXVsdGlsaW5lID0gZmFsc2UpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIH1cblxuICAvLyB3ZSBnZXQgYmFjayBvYmplY3RzIHNvbWV0aW1lcyB3aXRoIHN0cmluZyB2ZXJzaW9ucyBvZiBmdW5jdGlvbnNcbiAgLy8gd2hpY2ggbXVkZHkgdGhlIGxvZ3NcbiAgbGV0IGNsZWFuVmFsdWUgPSBfLmNsb25lKHZhbHVlKTtcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbJ2NlaWwnLCAnY2xvbmUnLCAnZmxvb3InLCAncm91bmQnLCAnc2NhbGUnLCAndG9TdHJpbmcnXSkge1xuICAgIGRlbGV0ZSBjbGVhblZhbHVlW3Byb3BlcnR5XTtcbiAgfVxuICByZXR1cm4gbXVsdGlsaW5lID8gSlNPTi5zdHJpbmdpZnkoY2xlYW5WYWx1ZSwgbnVsbCwgMikgOiBKU09OLnN0cmluZ2lmeShjbGVhblZhbHVlKTtcbn1cblxuZnVuY3Rpb24gZGVmZXJyZWRQcm9taXNlICgpIHtcbiAgLy8gaHR0cDovL2JsdWViaXJkanMuY29tL2RvY3MvYXBpL2RlZmVycmVkLW1pZ3JhdGlvbi5odG1sXG4gIGxldCByZXNvbHZlO1xuICBsZXQgcmVqZWN0O1xuICBjb25zdCBwcm9taXNlID0gbmV3IEIoKHJlcywgcmVqKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wYXJhbS1uYW1lc1xuICAgIHJlc29sdmUgPSByZXM7XG4gICAgcmVqZWN0ID0gcmVqO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBwcm9taXNlLFxuICAgIHJlc29sdmUsXG4gICAgcmVqZWN0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRSZXN1bHQgKHJlcykge1xuICBpZiAoXy5pc1VuZGVmaW5lZChyZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgbm90IGdldCBPSyByZXN1bHQgZnJvbSByZW1vdGUgZGVidWdnZXIuIFJlc3VsdCB3YXM6ICR7Xy50cnVuY2F0ZShzaW1wbGVTdHJpbmdpZnkocmVzKSwge2xlbmd0aDogUkVTUE9OU0VfTE9HX0xFTkdUSH0pfWApO1xuICB9IGVsc2UgaWYgKF8uaXNTdHJpbmcocmVzKSkge1xuICAgIHRyeSB7XG4gICAgICByZXMgPSBKU09OLnBhcnNlKHJlcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyB3ZSBtaWdodCBnZXQgYSBzZXJpYWxpemVkIG9iamVjdCwgYnV0IHdlIG1pZ2h0IG5vdFxuICAgICAgLy8gaWYgd2UgZ2V0IGhlcmUsIGl0IGlzIGp1c3QgYSB2YWx1ZVxuICAgIH1cbiAgfSBlbHNlIGlmICghXy5pc09iamVjdChyZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZXN1bHQgaGFzIHVuZXhwZWN0ZWQgdHlwZTogKCR7dHlwZW9mIHJlc30pLmApO1xuICB9XG5cbiAgaWYgKHJlcy5zdGF0dXMgJiYgcmVzLnN0YXR1cyAhPT0gMCkge1xuICAgIC8vIHdlIGdvdCBzb21lIGZvcm0gb2YgZXJyb3IuXG4gICAgdGhyb3cgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUocmVzLnN0YXR1cywgcmVzLnZhbHVlLm1lc3NhZ2UgfHwgcmVzLnZhbHVlKTtcbiAgfVxuXG4gIC8vIHdpdGggZWl0aGVyIGhhdmUgYW4gb2JqZWN0IHdpdGggYSBgdmFsdWVgIHByb3BlcnR5IChldmVuIGlmIGBudWxsYCksXG4gIC8vIG9yIGEgcGxhaW4gb2JqZWN0XG4gIGNvbnN0IHZhbHVlID0gXy5oYXMocmVzLCAndmFsdWUnKSA/IHJlcy52YWx1ZSA6IHJlcztcblxuICAvLyBnZXQgcmlkIG9mIG5vaXN5IGZ1bmN0aW9ucyBvbiBvYmplY3RzXG4gIGlmIChfLmlzT2JqZWN0KHZhbHVlKSkge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgWydjZWlsJywgJ2Nsb25lJywgJ2Zsb29yJywgJ3JvdW5kJywgJ3NjYWxlJywgJ3RvU3RyaW5nJ10pIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtwcm9wZXJ0eV07XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IG1vZHVsZSdzIHJvb3QgZm9sZGVyXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZ1bGwgcGF0aCB0byBtb2R1bGUgcm9vdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjdXJyZW50IG1vZHVsZSByb290IGZvbGRlciBjYW5ub3QgYmUgZGV0ZXJtaW5lZFxuICovXG5jb25zdCBnZXRNb2R1bGVSb290ID0gXy5tZW1vaXplKGZ1bmN0aW9uIGdldE1vZHVsZVJvb3QgKCkge1xuICBjb25zdCByb290ID0gbm9kZS5nZXRNb2R1bGVSb290U3luYyhNT0RVTEVfTkFNRSwgX19maWxlbmFtZSk7XG4gIGlmICghcm9vdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSAke01PRFVMRV9OQU1FfSBOb2RlLmpzIG1vZHVsZWApO1xuICB9XG4gIHJldHVybiByb290O1xufSk7XG5cbmV4cG9ydCB7XG4gIGFwcEluZm9Gcm9tRGljdCwgcGFnZUFycmF5RnJvbURpY3QsIGdldERlYnVnZ2VyQXBwS2V5LFxuICBnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cywgY2hlY2tQYXJhbXMsIHNpbXBsZVN0cmluZ2lmeSwgZGVmZXJyZWRQcm9taXNlLFxuICBjb252ZXJ0UmVzdWx0LCBSRVNQT05TRV9MT0dfTEVOR1RILCBnZXRNb2R1bGVSb290LFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["MODULE_NAME","WEB_CONTENT_BUNDLE_ID","WEB_CONTENT_PROCESS_BUNDLE_ID","SAFARI_VIEW_PROCESS_BUNDLE_ID","SAFARI_VIEW_BUNDLE_ID","WILDCARD_BUNDLE_ID","INACTIVE_APP_CODE","ACCEPTED_PAGE_TYPES","RESPONSE_LOG_LENGTH","appInfoFromDict","dict","id","WIRApplicationIdentifierKey","isProxy","_","isString","WIRIsApplicationProxyKey","toLowerCase","isAutomationEnabled","WIRRemoteAutomationEnabledKey","has","WIRAutomationAvailabilityKey","entry","name","WIRApplicationNameKey","bundleId","WIRApplicationBundleIdentifierKey","hostId","WIRHostApplicationIdentifierKey","isActive","WIRIsApplicationActiveKey","pageArrayFromDict","pageDict","newPageArray","values","isUndefined","WIRTypeKey","includes","push","WIRPageIdentifierKey","title","WIRTitleKey","url","WIRURLKey","isKey","WIRConnectionIdentifierKey","getDebuggerAppKey","appDict","appId","key","data","toPairs","log","debug","proxyAppId","appIdForBundle","endsWith","getPossibleDebuggerAppKeys","bundleIds","proxiedAppIds","possibleBundleIds","uniq","join","checkParams","params","errors","filter","value","isNil","map","param","length","Error","util","pluralize","simpleStringify","multiline","JSON","stringify","cleanValue","clone","property","deferredPromise","resolve","reject","promise","B","res","rej","convertResult","truncate","parse","err","isObject","status","errorFromMJSONWPStatusCode","message","getModuleRoot","memoize","root","node","getModuleRootSync","__filename"],"sources":["../../lib/utils.js"],"sourcesContent":["import log from './logger';\nimport _ from 'lodash';\nimport B from 'bluebird';\nimport { errorFromMJSONWPStatusCode } from '@appium/base-driver';\nimport { util, node } from '@appium/support';\n\nconst MODULE_NAME = 'appium-remote-debugger';\n\nconst WEB_CONTENT_BUNDLE_ID = 'com.apple.WebKit.WebContent';\nconst WEB_CONTENT_PROCESS_BUNDLE_ID = 'process-com.apple.WebKit.WebContent';\nconst SAFARI_VIEW_PROCESS_BUNDLE_ID = 'process-SafariViewService';\nconst SAFARI_VIEW_BUNDLE_ID = 'com.apple.SafariViewService';\nconst WILDCARD_BUNDLE_ID = '*';\n\nconst INACTIVE_APP_CODE = 0;\n\n// values for the page `WIRTypeKey` entry\nconst ACCEPTED_PAGE_TYPES = [\n 'WIRTypeWeb', // up to iOS 11.3\n 'WIRTypeWebPage', // iOS 11.4\n 'WIRTypePage', // iOS 11.4 webview\n];\n\nconst RESPONSE_LOG_LENGTH = 100;\n\n/*\n * Takes a dictionary from the remote debugger and makes a more manageable\n * dictionary whose keys are understandable\n */\nfunction appInfoFromDict (dict) {\n const id = dict.WIRApplicationIdentifierKey;\n const isProxy = _.isString(dict.WIRIsApplicationProxyKey)\n ? dict.WIRIsApplicationProxyKey.toLowerCase() === 'true'\n : dict.WIRIsApplicationProxyKey;\n // automation enabled can be either from the keys\n // - WIRRemoteAutomationEnabledKey (boolean)\n // - WIRAutomationAvailabilityKey (string or boolean)\n let isAutomationEnabled = !!dict.WIRRemoteAutomationEnabledKey;\n if (_.has(dict, 'WIRAutomationAvailabilityKey')) {\n if (_.isString(dict.WIRAutomationAvailabilityKey)) {\n isAutomationEnabled = dict.WIRAutomationAvailabilityKey === 'WIRAutomationAvailabilityUnknown'\n ? 'Unknown'\n : dict.WIRAutomationAvailabilityKey === 'WIRAutomationAvailabilityAvailable';\n } else {\n isAutomationEnabled = !!dict.WIRAutomationAvailabilityKey;\n }\n }\n const entry = {\n id,\n isProxy,\n name: dict.WIRApplicationNameKey,\n bundleId: dict.WIRApplicationBundleIdentifierKey,\n hostId: dict.WIRHostApplicationIdentifierKey,\n isActive: dict.WIRIsApplicationActiveKey !== INACTIVE_APP_CODE,\n isAutomationEnabled,\n };\n\n return [id, entry];\n}\n\n/*\n * Take a dictionary from the remote debugger and makes a more manageable\n * dictionary of pages available.\n */\nfunction pageArrayFromDict (pageDict) {\n if (pageDict.id) {\n // the page is already translated, so wrap in an array and pass back\n return [pageDict];\n }\n let newPageArray = [];\n for (const dict of _.values(pageDict)) {\n // count only WIRTypeWeb pages and ignore all others (WIRTypeJavaScript etc)\n if (_.isUndefined(dict.WIRTypeKey) || ACCEPTED_PAGE_TYPES.includes(dict.WIRTypeKey)) {\n newPageArray.push({\n id: dict.WIRPageIdentifierKey,\n title: dict.WIRTitleKey,\n url: dict.WIRURLKey,\n isKey: !_.isUndefined(dict.WIRConnectionIdentifierKey),\n });\n }\n }\n return newPageArray;\n}\n\n/*\n * Given a bundle id, finds the correct remote debugger app that is\n * connected.\n */\nfunction getDebuggerAppKey (bundleId, appDict) {\n let appId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.bundleId === bundleId) {\n appId = key;\n break;\n }\n }\n // now we need to determine if we should pick a proxy for this instead\n if (appId) {\n log.debug(`Found app id key '${appId}' for bundle '${bundleId}'`);\n let proxyAppId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.isProxy && data.hostId === appId) {\n log.debug(`Found separate bundleId '${data.bundleId}' ` +\n `acting as proxy for '${bundleId}', with app id '${key}'`);\n // set the app id... the last one will be used, so just keep re-assigning\n proxyAppId = key;\n }\n }\n if (proxyAppId) {\n appId = proxyAppId;\n log.debug(`Using proxied app id '${appId}'`);\n }\n }\n\n return appId;\n}\n\nfunction appIdForBundle (bundleId, appDict) {\n let appId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.bundleId.endsWith(bundleId)) {\n appId = key;\n break;\n }\n }\n\n // if nothing is found, try to get the generic app\n if (!appId && bundleId !== WEB_CONTENT_BUNDLE_ID) {\n return appIdForBundle(WEB_CONTENT_BUNDLE_ID, appDict);\n }\n\n return appId;\n}\n\nfunction getPossibleDebuggerAppKeys (bundleIds, appDict) {\n let proxiedAppIds = [];\n\n // go through the possible bundle identifiers\n const possibleBundleIds = _.uniq([\n WEB_CONTENT_BUNDLE_ID,\n WEB_CONTENT_PROCESS_BUNDLE_ID,\n SAFARI_VIEW_PROCESS_BUNDLE_ID,\n SAFARI_VIEW_BUNDLE_ID,\n WILDCARD_BUNDLE_ID,\n ...bundleIds,\n ]);\n log.debug(`Checking for bundle identifiers: ${possibleBundleIds.join(', ')}`);\n for (const bundleId of possibleBundleIds) {\n const appId = appIdForBundle(bundleId, appDict);\n\n // now we need to determine if we should pick a proxy for this instead\n if (appId) {\n proxiedAppIds.push(appId);\n log.debug(`Found app id key '${appId}' for bundle '${bundleId}'`);\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.isProxy && data.hostId === appId) {\n log.debug(`Found separate bundleId '${data.bundleId}' ` +\n `acting as proxy for '${bundleId}', with app id '${key}'`);\n proxiedAppIds.push(key);\n }\n }\n }\n }\n\n return _.uniq(proxiedAppIds);\n}\n\nfunction checkParams (params) {\n // check if all parameters have a value\n const errors = _.toPairs(params)\n .filter(([, value]) => _.isNil(value))\n .map(([param]) => param);\n if (errors.length) {\n throw new Error(`Missing ${util.pluralize('parameter', errors.length)}: ${errors.join(', ')}`);\n }\n}\n\nfunction simpleStringify (value, multiline = false) {\n if (!value) {\n return JSON.stringify(value);\n }\n\n // we get back objects sometimes with string versions of functions\n // which muddy the logs\n let cleanValue = _.clone(value);\n for (const property of ['ceil', 'clone', 'floor', 'round', 'scale', 'toString']) {\n delete cleanValue[property];\n }\n return multiline ? JSON.stringify(cleanValue, null, 2) : JSON.stringify(cleanValue);\n}\n\nfunction deferredPromise () {\n // http://bluebirdjs.com/docs/api/deferred-migration.html\n let resolve;\n let reject;\n const promise = new B((res, rej) => { // eslint-disable-line promise/param-names\n resolve = res;\n reject = rej;\n });\n return {\n promise,\n resolve,\n reject\n };\n}\n\nfunction convertResult (res) {\n if (_.isUndefined(res)) {\n throw new Error(`Did not get OK result from remote debugger. Result was: ${_.truncate(simpleStringify(res), {length: RESPONSE_LOG_LENGTH})}`);\n } else if (_.isString(res)) {\n try {\n res = JSON.parse(res);\n } catch (err) {\n // we might get a serialized object, but we might not\n // if we get here, it is just a value\n }\n } else if (!_.isObject(res)) {\n throw new Error(`Result has unexpected type: (${typeof res}).`);\n }\n\n if (res.status && res.status !== 0) {\n // we got some form of error.\n throw errorFromMJSONWPStatusCode(res.status, res.value.message || res.value);\n }\n\n // with either have an object with a `value` property (even if `null`),\n // or a plain object\n const value = _.has(res, 'value') ? res.value : res;\n\n // get rid of noisy functions on objects\n if (_.isObject(value)) {\n for (const property of ['ceil', 'clone', 'floor', 'round', 'scale', 'toString']) {\n delete value[property];\n }\n }\n return value;\n}\n\n/**\n * Calculates the path to the current module's root folder\n *\n * @returns {string} The full path to module root\n * @throws {Error} If the current module root folder cannot be determined\n */\nconst getModuleRoot = _.memoize(function getModuleRoot () {\n const root = node.getModuleRootSync(MODULE_NAME, __filename);\n if (!root) {\n throw new Error(`Cannot find the root folder of the ${MODULE_NAME} Node.js module`);\n }\n return root;\n});\n\nexport {\n appInfoFromDict, pageArrayFromDict, getDebuggerAppKey,\n getPossibleDebuggerAppKeys, checkParams, simpleStringify, deferredPromise,\n convertResult, RESPONSE_LOG_LENGTH, getModuleRoot,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["_logger","_interopRequireDefault","require","_lodash","_bluebird","_baseDriver","_support","MODULE_NAME","WEB_CONTENT_BUNDLE_ID","WEB_CONTENT_PROCESS_BUNDLE_ID","SAFARI_VIEW_PROCESS_BUNDLE_ID","SAFARI_VIEW_BUNDLE_ID","WILDCARD_BUNDLE_ID","INACTIVE_APP_CODE","ACCEPTED_PAGE_TYPES","RESPONSE_LOG_LENGTH","exports","appInfoFromDict","dict","id","WIRApplicationIdentifierKey","isProxy","_","isString","WIRIsApplicationProxyKey","toLowerCase","isAutomationEnabled","WIRRemoteAutomationEnabledKey","has","WIRAutomationAvailabilityKey","entry","name","WIRApplicationNameKey","bundleId","WIRApplicationBundleIdentifierKey","hostId","WIRHostApplicationIdentifierKey","isActive","WIRIsApplicationActiveKey","pageArrayFromDict","pageDict","newPageArray","values","isUndefined","WIRTypeKey","includes","push","WIRPageIdentifierKey","title","WIRTitleKey","url","WIRURLKey","isKey","WIRConnectionIdentifierKey","getDebuggerAppKey","appDict","appId","key","data","toPairs","log","debug","proxyAppId","appIdForBundle","endsWith","getPossibleDebuggerAppKeys","bundleIds","proxiedAppIds","possibleBundleIds","uniq","join","checkParams","params","errors","filter","value","isNil","map","param","length","Error","util","pluralize","simpleStringify","multiline","JSON","stringify","cleanValue","clone","property","deferredPromise","resolve","reject","promise","B","res","rej","convertResult","truncate","parse","err","isObject","status","errorFromMJSONWPStatusCode","message","getModuleRoot","memoize","root","node","getModuleRootSync","__filename"],"sources":["../../lib/utils.js"],"sourcesContent":["import log from './logger';\nimport _ from 'lodash';\nimport B from 'bluebird';\nimport { errorFromMJSONWPStatusCode } from '@appium/base-driver';\nimport { util, node } from '@appium/support';\n\nconst MODULE_NAME = 'appium-remote-debugger';\n\nconst WEB_CONTENT_BUNDLE_ID = 'com.apple.WebKit.WebContent';\nconst WEB_CONTENT_PROCESS_BUNDLE_ID = 'process-com.apple.WebKit.WebContent';\nconst SAFARI_VIEW_PROCESS_BUNDLE_ID = 'process-SafariViewService';\nconst SAFARI_VIEW_BUNDLE_ID = 'com.apple.SafariViewService';\nconst WILDCARD_BUNDLE_ID = '*';\n\nconst INACTIVE_APP_CODE = 0;\n\n// values for the page `WIRTypeKey` entry\nconst ACCEPTED_PAGE_TYPES = [\n 'WIRTypeWeb', // up to iOS 11.3\n 'WIRTypeWebPage', // iOS 11.4\n 'WIRTypePage', // iOS 11.4 webview\n];\n\nconst RESPONSE_LOG_LENGTH = 100;\n\n/*\n * Takes a dictionary from the remote debugger and makes a more manageable\n * dictionary whose keys are understandable\n */\nfunction appInfoFromDict (dict) {\n const id = dict.WIRApplicationIdentifierKey;\n const isProxy = _.isString(dict.WIRIsApplicationProxyKey)\n ? dict.WIRIsApplicationProxyKey.toLowerCase() === 'true'\n : dict.WIRIsApplicationProxyKey;\n // automation enabled can be either from the keys\n // - WIRRemoteAutomationEnabledKey (boolean)\n // - WIRAutomationAvailabilityKey (string or boolean)\n let isAutomationEnabled = !!dict.WIRRemoteAutomationEnabledKey;\n if (_.has(dict, 'WIRAutomationAvailabilityKey')) {\n if (_.isString(dict.WIRAutomationAvailabilityKey)) {\n isAutomationEnabled = dict.WIRAutomationAvailabilityKey === 'WIRAutomationAvailabilityUnknown'\n ? 'Unknown'\n : dict.WIRAutomationAvailabilityKey === 'WIRAutomationAvailabilityAvailable';\n } else {\n isAutomationEnabled = !!dict.WIRAutomationAvailabilityKey;\n }\n }\n const entry = {\n id,\n isProxy,\n name: dict.WIRApplicationNameKey,\n bundleId: dict.WIRApplicationBundleIdentifierKey,\n hostId: dict.WIRHostApplicationIdentifierKey,\n isActive: dict.WIRIsApplicationActiveKey !== INACTIVE_APP_CODE,\n isAutomationEnabled,\n };\n\n return [id, entry];\n}\n\n/*\n * Take a dictionary from the remote debugger and makes a more manageable\n * dictionary of pages available.\n */\nfunction pageArrayFromDict (pageDict) {\n if (pageDict.id) {\n // the page is already translated, so wrap in an array and pass back\n return [pageDict];\n }\n let newPageArray = [];\n for (const dict of _.values(pageDict)) {\n // count only WIRTypeWeb pages and ignore all others (WIRTypeJavaScript etc)\n if (_.isUndefined(dict.WIRTypeKey) || ACCEPTED_PAGE_TYPES.includes(dict.WIRTypeKey)) {\n newPageArray.push({\n id: dict.WIRPageIdentifierKey,\n title: dict.WIRTitleKey,\n url: dict.WIRURLKey,\n isKey: !_.isUndefined(dict.WIRConnectionIdentifierKey),\n });\n }\n }\n return newPageArray;\n}\n\n/*\n * Given a bundle id, finds the correct remote debugger app that is\n * connected.\n */\nfunction getDebuggerAppKey (bundleId, appDict) {\n let appId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.bundleId === bundleId) {\n appId = key;\n break;\n }\n }\n // now we need to determine if we should pick a proxy for this instead\n if (appId) {\n log.debug(`Found app id key '${appId}' for bundle '${bundleId}'`);\n let proxyAppId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.isProxy && data.hostId === appId) {\n log.debug(`Found separate bundleId '${data.bundleId}' ` +\n `acting as proxy for '${bundleId}', with app id '${key}'`);\n // set the app id... the last one will be used, so just keep re-assigning\n proxyAppId = key;\n }\n }\n if (proxyAppId) {\n appId = proxyAppId;\n log.debug(`Using proxied app id '${appId}'`);\n }\n }\n\n return appId;\n}\n\nfunction appIdForBundle (bundleId, appDict) {\n let appId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.bundleId.endsWith(bundleId)) {\n appId = key;\n break;\n }\n }\n\n // if nothing is found, try to get the generic app\n if (!appId && bundleId !== WEB_CONTENT_BUNDLE_ID) {\n return appIdForBundle(WEB_CONTENT_BUNDLE_ID, appDict);\n }\n\n return appId;\n}\n\nfunction getPossibleDebuggerAppKeys (bundleIds, appDict) {\n let proxiedAppIds = [];\n\n // go through the possible bundle identifiers\n const possibleBundleIds = _.uniq([\n WEB_CONTENT_BUNDLE_ID,\n WEB_CONTENT_PROCESS_BUNDLE_ID,\n SAFARI_VIEW_PROCESS_BUNDLE_ID,\n SAFARI_VIEW_BUNDLE_ID,\n WILDCARD_BUNDLE_ID,\n ...bundleIds,\n ]);\n log.debug(`Checking for bundle identifiers: ${possibleBundleIds.join(', ')}`);\n for (const bundleId of possibleBundleIds) {\n const appId = appIdForBundle(bundleId, appDict);\n\n // now we need to determine if we should pick a proxy for this instead\n if (appId) {\n proxiedAppIds.push(appId);\n log.debug(`Found app id key '${appId}' for bundle '${bundleId}'`);\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.isProxy && data.hostId === appId) {\n log.debug(`Found separate bundleId '${data.bundleId}' ` +\n `acting as proxy for '${bundleId}', with app id '${key}'`);\n proxiedAppIds.push(key);\n }\n }\n }\n }\n\n return _.uniq(proxiedAppIds);\n}\n\nfunction checkParams (params) {\n // check if all parameters have a value\n const errors = _.toPairs(params)\n .filter(([, value]) => _.isNil(value))\n .map(([param]) => param);\n if (errors.length) {\n throw new Error(`Missing ${util.pluralize('parameter', errors.length)}: ${errors.join(', ')}`);\n }\n}\n\nfunction simpleStringify (value, multiline = false) {\n if (!value) {\n return JSON.stringify(value);\n }\n\n // we get back objects sometimes with string versions of functions\n // which muddy the logs\n let cleanValue = _.clone(value);\n for (const property of ['ceil', 'clone', 'floor', 'round', 'scale', 'toString']) {\n delete cleanValue[property];\n }\n return multiline ? JSON.stringify(cleanValue, null, 2) : JSON.stringify(cleanValue);\n}\n\nfunction deferredPromise () {\n // http://bluebirdjs.com/docs/api/deferred-migration.html\n let resolve;\n let reject;\n const promise = new B((res, rej) => { // eslint-disable-line promise/param-names\n resolve = res;\n reject = rej;\n });\n return {\n promise,\n resolve,\n reject\n };\n}\n\nfunction convertResult (res) {\n if (_.isUndefined(res)) {\n throw new Error(`Did not get OK result from remote debugger. Result was: ${_.truncate(simpleStringify(res), {length: RESPONSE_LOG_LENGTH})}`);\n } else if (_.isString(res)) {\n try {\n res = JSON.parse(res);\n } catch (err) {\n // we might get a serialized object, but we might not\n // if we get here, it is just a value\n }\n } else if (!_.isObject(res)) {\n throw new Error(`Result has unexpected type: (${typeof res}).`);\n }\n\n if (res.status && res.status !== 0) {\n // we got some form of error.\n throw errorFromMJSONWPStatusCode(res.status, res.value.message || res.value);\n }\n\n // with either have an object with a `value` property (even if `null`),\n // or a plain object\n const value = _.has(res, 'value') ? res.value : res;\n\n // get rid of noisy functions on objects\n if (_.isObject(value)) {\n for (const property of ['ceil', 'clone', 'floor', 'round', 'scale', 'toString']) {\n delete value[property];\n }\n }\n return value;\n}\n\n/**\n * Calculates the path to the current module's root folder\n *\n * @returns {string} The full path to module root\n * @throws {Error} If the current module root folder cannot be determined\n */\nconst getModuleRoot = _.memoize(function getModuleRoot () {\n const root = node.getModuleRootSync(MODULE_NAME, __filename);\n if (!root) {\n throw new Error(`Cannot find the root folder of the ${MODULE_NAME} Node.js module`);\n }\n return root;\n});\n\nexport {\n appInfoFromDict, pageArrayFromDict, getDebuggerAppKey,\n getPossibleDebuggerAppKeys, checkParams, simpleStringify, deferredPromise,\n convertResult, RESPONSE_LOG_LENGTH, getModuleRoot,\n};\n"],"mappings":"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"}
@@ -132,12 +132,26 @@ const COMMANDS = {
132
132
  //#region PAGE DOMAIN
133
133
  'Page.enable': [],
134
134
  'Page.disable': [],
135
- 'Page.reload': [],
135
+ 'Page.reload': ['ignoreCache', 'revalidateAllResources'],
136
136
  'Page.navigate': ['url'],
137
137
  'Page.overrideUserAgent': ['value'],
138
- 'Page.getCookies': ['urls'],
138
+ 'Page.overrideSetting': ['setting', 'value'],
139
+ 'Page.overrideUserPreference': ['name', 'value'],
140
+ 'Page.getCookies': [],
141
+ 'Page.setCookie': ['cookie'],
139
142
  'Page.deleteCookie': ['cookieName', 'url'],
140
143
  'Page.getResourceTree': [],
144
+ 'Page.getResourceContent': ['frameId', 'url'],
145
+ 'Page.searchInResource': ['frameId', 'url', 'query', 'caseSensitive', 'isRegex', 'requestId'],
146
+ 'Page.searchInResources': ['text', 'caseSensitive', 'isRegex'],
147
+ 'Page.setShowRulers': ['result'],
148
+ 'Page.setShowPaintRects': ['result'],
149
+ 'Page.setEmulatedMedia': ['media'],
150
+ 'Page.snapshotNode': ['nodeId'],
151
+ 'Page.snapshotRect': ['x', 'y', 'with', 'height', 'coordinateSystem'],
152
+ 'Page.archive': ['data'],
153
+ 'Page.setScreenSizeOverride': ['width', 'height'],
154
+
141
155
  //#endregion
142
156
 
143
157
  // https://github.com/WebKit/WebKit/blob/main/Source/JavaScriptCore/inspector/protocol/Runtime.json
@@ -208,12 +208,30 @@ class RemoteDebugger extends EventEmitter {
208
208
  return this._allowNavigationWithoutReload;
209
209
  }
210
210
 
211
- async getCookies (urls) {
211
+ // Potentially this does not work for mobile safari
212
+ async overrideUserAgent (value) {
213
+ log.debug('Setting overrideUserAgent');
214
+ return await this.rpcClient.send('Page.overrideUserAgent', {
215
+ appIdKey: this.appIdKey,
216
+ pageIdKey: this.pageIdKey,
217
+ value
218
+ });
219
+ }
220
+
221
+ async getCookies () {
212
222
  log.debug('Getting cookies');
213
223
  return await this.rpcClient.send('Page.getCookies', {
224
+ appIdKey: this.appIdKey,
225
+ pageIdKey: this.pageIdKey
226
+ });
227
+ }
228
+
229
+ async setCookie (cookie) {
230
+ log.debug('Setting cookie');
231
+ return await this.rpcClient.send('Page.setCookie', {
214
232
  appIdKey: this.appIdKey,
215
233
  pageIdKey: this.pageIdKey,
216
- urls,
234
+ cookie
217
235
  });
218
236
  }
219
237
 
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "keywords": [
5
5
  "appium"
6
6
  ],
7
- "version": "9.1.11",
7
+ "version": "9.1.13",
8
8
  "author": "Appium Contributors",
9
9
  "license": "Apache-2.0",
10
10
  "repository": {
@@ -104,7 +104,7 @@
104
104
  "pre-commit": "^1.1.3",
105
105
  "prettier": "^2.7.1",
106
106
  "serve-static": "^1.14.1",
107
- "semantic-release": "^19.0.2",
107
+ "semantic-release": "^20.0.2",
108
108
  "sinon": "^15.0.0"
109
109
  }
110
110
  }