diff --git a/agent/package-lock.json b/agent/package-lock.json index 89414c05..5cd09428 100644 --- a/agent/package-lock.json +++ b/agent/package-lock.json @@ -11,13 +11,13 @@ "dependencies": { "frida-java-bridge": "^6", "frida-objc-bridge": "^7", - "frida-screenshot": "^3", + "frida-screenshot": "^5", "macho": "^1" }, "devDependencies": { - "@types/frida-gum": "^18", - "@types/node": "^17", - "frida-compile": "^10", + "@types/frida-gum": "18.7.0", + "@types/node": "^18.14.0", + "frida-compile": "16.4.1", "tslint": "^6" } }, @@ -118,241 +118,349 @@ "node": ">=4" } }, - "node_modules/@frida/mold-source-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@frida/mold-source-map/-/mold-source-map-1.0.0.tgz", - "integrity": "sha512-7nJ2ghCVTe5hxzSVN9bRxMeP/L8eAaViMGfKM7+Bc3sfv1UIJ49yrSlvy8wv8VTwNCTicUTXNlsvglvSKvhUZQ==", + "node_modules/@frida/assert": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@frida/assert/-/assert-3.0.2.tgz", + "integrity": "sha512-JXJq5SbXGrM5EkjrZKfRmB29zOoEOix02NC6A5TSJ+C1GE/X051EinJJsuOO2pEOx7KZwpvAHvS0WXW0+levKg==", + "dev": true + }, + "node_modules/@frida/base64-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@frida/base64-js/-/base64-js-2.0.3.tgz", + "integrity": "sha512-2w0F+1TynOTCZ/v7du9LdHPWwq0lJhazjo2fF9upMyQmA1zHetT14fLuQ1v/6T0qPgyeEGkiSrybstU8EsgeUA==", "dev": true, - "dependencies": { - "convert-source-map": "^1.1.0", - "through": "^2.3.8" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/@frida/uglifyify": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@frida/uglifyify/-/uglifyify-7.0.1.tgz", - "integrity": "sha512-i+80AKujltgBzl6Y8s6R4VwJrAG6KL5g0yX+aTsD4i74UbSE8JJg5YwIKh8Je80F+F9LlVg6GjLXMwupZ588Bw==", + "node_modules/@frida/buffer": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@frida/buffer/-/buffer-7.0.4.tgz", + "integrity": "sha512-RxQ1lZRRiCJj7nhcCiD8xeJx0NsLpGGnjqsmTg7jShGmbnVFMN5W7+J+3gqdPSQhc/IxNBIWc6zRXVp4+qnYHg==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "convert-source-map": "^1.6.0", - "minimatch": "^3.0.4", - "terser": "^5.3.1", - "through": "^2.3.8" - }, - "engines": { - "node": ">=4.0.0" + "base64-js": "^1.5.1", + "ieee754": "^1.2.1" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "node_modules/@frida/crosspath": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@frida/crosspath/-/crosspath-3.0.0.tgz", + "integrity": "sha512-bNdO1spIPD2P40XtK89N49oZpJhstdlnkJZcD4yJ17jrdkm9Ctu0sd9MIEX6Z8Tm8ydhVJBAOMEKl9/R27onAQ==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@types/node": "^17.0.36" }, "engines": { - "node": ">=6.0.0" + "node": ">=14.9.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } + "node_modules/@frida/crosspath/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "node_modules/@frida/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@frida/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-WXTkVjESvX8TIVXIynJJv9BKSIdQP0Iis04StIXknkDi1ULdMlrypA9p5C4KW1H6GCkNsVnKbybpzsulYCTvag==", + "dev": true + }, + "node_modules/@frida/diagnostics_channel": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/diagnostics_channel/-/diagnostics_channel-1.0.0.tgz", + "integrity": "sha512-mYX1jp/5Bpk24tHArJNx65iCk7qSuV8YJkdU0gFNVtJUXxfV8BG5WuPa4mL+ynxsbWWpsg/cwKZbLAepYKTdQQ==", + "dev": true + }, + "node_modules/@frida/events": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@frida/events/-/events-4.0.4.tgz", + "integrity": "sha512-qJVQ6VWHf9sjUKuiJzoCAC00frbpcwxeYfvQ+PP9LU/d70j+QvjWgYe98Qa3ekLaBU6r/AvWm8ThKCDUCLWrQQ==", "dev": true, "engines": { - "node": ">=6.0.0" + "node": ">=0.8.x" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "node_modules/@frida/http": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@frida/http/-/http-4.0.2.tgz", + "integrity": "sha512-cvkc7ex7GmVXVOWqtjXKBWUUbYEBgpNRKZbEEoMeI8KiIs8zejKwg+N7rx7296Ao+EP3+xcUr4wBVr3xLaUVfQ==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "http-parser-js": "^0.5.3" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "node_modules/@frida/http-parser-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/http-parser-js/-/http-parser-js-1.0.0.tgz", + "integrity": "sha512-2nMrNXt/OeTlWbqnE8AH4Sfz4I2+BGoN206dzKEyC/g2svtn83Xu+zuv/V3TkwrA27s26Mcy84ZwsXeNlqNxUQ==", "dev": true }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "node_modules/@frida/https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/https/-/https-1.0.0.tgz", + "integrity": "sha512-OiqQ6qsALcWOktRLq07oJ0i6sH8eX6MXb/MdZS1qVKDRf6wchH4Pjn6fiLB+pt/OlYbggk+DOfpHwSdjTwuHMQ==", + "dev": true + }, + "node_modules/@frida/ieee754": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@frida/ieee754/-/ieee754-2.0.2.tgz", + "integrity": "sha512-wlcUebnne4ENN7GDr5pTH598ZDLMVOsh0FjenxeVOe6u7ewZkz9gGRnLnZKJAm9kl5G6XhdxhI0cSXVQK/rQUw==", "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/@types/frida-gum": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@types/frida-gum/-/frida-gum-18.3.1.tgz", - "integrity": "sha512-8lD4UQZa7V9+eQ9wfBAf+iLk/bq+u998podeXYTeWQu03sacSF70XL+WcYmhvAkNMF3OS9nkb4VtfRd8Ly7a3A==", + "node_modules/@frida/net": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@frida/net/-/net-4.0.2.tgz", + "integrity": "sha512-qQRe7hQ+ZfCcG/SE3P1TRqQ9bmuK/T7wPCYaT4z56rBPWAxsaQbQHpX4fR6OrFaSDr7X0xJLsTbdIp9hGhhLZg==", "dev": true }, - "node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "node_modules/@frida/os": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@frida/os/-/os-1.0.2.tgz", + "integrity": "sha512-3ISAiGNiyIya3QN2EHBCz1wqP0enTdSxP99wUeroeh8+AQRmgoOr/5TRnrVry8pe378anay3fmV/tdUMMSkehQ==", "dev": true }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } + "node_modules/@frida/path": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@frida/path/-/path-2.0.3.tgz", + "integrity": "sha512-2RQy36QatoC846fzBhBhV8sXMsSOBGoYvwTHeaE1zUdz7F4RNScP4QEekTTooBYWYX/XjiF36KQpYAzc9OYFtg==", + "dev": true + }, + "node_modules/@frida/process": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@frida/process/-/process-1.2.1.tgz", + "integrity": "sha512-nvCu22DstFW2ttGFtOKekHM7vnjbZm+XgtvavOt427GNT6uV7k0JYK9tnMbcLMRWv57DG6udAmuJlWs8Paq1ag==", + "dev": true + }, + "node_modules/@frida/punycode": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@frida/punycode/-/punycode-3.0.0.tgz", + "integrity": "sha512-XVSDY2KamDs1D5/fTVgHcOSNxdU4kTboxzqJMBbTjcQC7XScIT9c0EfbwKCq7Kci6gWQdsHSCr7lU+9Oc4KAdg==", + "dev": true + }, + "node_modules/@frida/querystring": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/querystring/-/querystring-1.0.0.tgz", + "integrity": "sha512-15m1fOZPmoO/vWlgPJrG/J9/BJDz6a2/JpVGpS8ynNzo+fBhTznaStX5nHxUs24mVTqh/OqLo0EiYJM5WWHXxg==", + "dev": true + }, + "node_modules/@frida/readable-stream": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@frida/readable-stream/-/readable-stream-4.1.3.tgz", + "integrity": "sha512-ntGUFmi+CryRGRJIK13a/VST2Ad19uivbln8Xd92vKPAARq+6vMIASDyZIqyl5BLRccfiyCHdYgrgQ6RI5rUig==", + "dev": true + }, + "node_modules/@frida/reserved-words": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/reserved-words/-/reserved-words-1.0.0.tgz", + "integrity": "sha512-2yG/XxJlsGlk/mm6eZTb4OAaQEhkTI2qaFfZFtAsrA/XuCpuMWkS4y/guyBlsRu4hAuhK2HPmNM8+OLLK1zM9Q==", + "dev": true }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "node_modules/@frida/stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@frida/stream/-/stream-1.0.2.tgz", + "integrity": "sha512-4OuaC1ztmEKgTq3WeBhsy8Oq+AwW9n9cYnvLklcC9jwD93AEwgbWpecLlxJCVuALvTMdhKPg0nQVfyGYP/i9Bw==", "dev": true, "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" + "@frida/readable-stream": "^4.1.3" } }, - "node_modules/acorn-node/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/@frida/string_decoder": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@frida/string_decoder/-/string_decoder-2.0.0.tgz", + "integrity": "sha512-in371tYZMHQiW9HF5MS3JDw6Ao6tyBoq34UWy2rzOswYyMG1rpizh85ofi/yVkxDiaqybEZefxzkVittpPGT6g==", + "dev": true + }, + "node_modules/@frida/terser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/terser/-/terser-1.0.0.tgz", + "integrity": "sha512-59h9WuNzD1Rx/zwoWqQ/FW/4Y/Q3R91Eng2hEwdHapqiTDvtKbZ08F6CynCR7ZVinrh4tLYsF46AtVPTz1ys9g==", "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, "bin": { - "acorn": "bin/acorn" + "terser": "bin/terser" }, "engines": { - "node": ">=0.4.0" + "node": ">=10" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } + "node_modules/@frida/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/@frida/timers": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@frida/timers/-/timers-3.0.0.tgz", + "integrity": "sha512-3b+0igv10aT8TMxefrTAd06rActqbxJLY2Xkkq9vYcPBffB/yHszl0NYIp/5ko8WC3ecDYPU6bQiY6fjs72zTA==", + "dev": true + }, + "node_modules/@frida/tty": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/tty/-/tty-1.0.0.tgz", + "integrity": "sha512-p/kjLnKYxEAB1MdYP8+5rKv9CsHzyA+0jg9BcGETzjQVKHHcroHDULRxDYUh+DC7qs6cpX8QdDQh9E+a6ydgsQ==", + "dev": true }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@frida/url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@frida/url/-/url-1.0.2.tgz", + "integrity": "sha512-ZKunbKJHMr8w2Eb/5K1avy0MzK1B998S17wYXNv3RmzBGxMm8S5T0F3qEpRxkU7/72P8m4izyQU87fWl+FjQsQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@frida/punycode": "^3.0.0", + "@frida/querystring": "^1.0.0" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "node_modules/@frida/util": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@frida/util/-/util-1.0.3.tgz", + "integrity": "sha512-htcG3uDiRXv89ERVNNYhfase39kJ2X75ZARfrYcYEtJLFEsSk0nemM1YnEIR4CjrHvdvkWHrwgKkS+acOyoNEg==", + "dev": true + }, + "node_modules/@frida/vm": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@frida/vm/-/vm-2.0.0.tgz", + "integrity": "sha512-7fsjLWscZT5odNIBtg6qbLNI+vAk1xmii6H5W2kaYkMYt0vRohQEcDSUWacA+eaWlu5SvMjZI82Yibj/3G9pJw==", "dev": true }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">= 8" + "node": ">=6.0.0" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "node_modules/@types/frida-gum": { + "version": "18.7.0", + "resolved": "https://registry.npmjs.org/@types/frida-gum/-/frida-gum-18.7.0.tgz", + "integrity": "sha512-HhBomXE23fLDAWXEKi3BjJLrlH9wAv9IEQNfO/PaYHQNNbh0Bi06gx6JbXTspVpbqlbVqkWAuU7n6HaS9B6yXA==", "dev": true }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "node_modules/@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", "dev": true, "dependencies": { - "inherits": "2.0.1" + "undici-types": "~5.26.4" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, - "engines": { - "node": ">= 0.4" + "bin": { + "acorn": "bin/acorn" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" } }, "node_modules/balanced-match": { @@ -381,30 +489,6 @@ } ] }, - "node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -415,2260 +499,396 @@ "concat-map": "0.0.1" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", "dev": true, - "dependencies": { - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "JSONStream": "^1.0.3", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" - }, - "bin": { - "browser-pack": "bin/cmd.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/browser-pack/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "engines": { + "node": ">=16" } }, - "node_modules/browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "dev": true, - "dependencies": { - "resolve": "^1.17.0" - } + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, - "node_modules/browserify": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", - "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "dependencies": { - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.1", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^3.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.2.1", - "JSONStream": "^1.0.3", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "^1.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum-object": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^3.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.12.0", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "browserify": "bin/cmd.js" - }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "node": ">=0.3.1" } }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserify/node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/browserify/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true - }, - "node_modules/cached-path-relative": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", - "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", - "dev": true - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/endian-reader": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/endian-reader/-/endian-reader-0.1.0.tgz", + "integrity": "sha512-5e4iguVyduiJiqb+EFF7fJ2HBx38WQjlILgOOReIO73vCuZ4EwSwp7HmEzbL4jN8BdKAnH67eoeEF0JC5DUjow==" }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.8.0" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "node": ">=4" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" + "node_modules/frida-compile": { + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/frida-compile/-/frida-compile-16.4.1.tgz", + "integrity": "sha512-xI9HNtUFpHxuKBGXaL6XJAYH1zWTvNJDrHRnz1hp0oS24iPHt6c01Jmm3qljZek3oQWn8HhvfNvrzfgbsKzoBQ==", + "dev": true, + "dependencies": { + "@frida/assert": "^3.0.1", + "@frida/base64-js": "^2.0.3", + "@frida/buffer": "^7.0.4", + "@frida/crosspath": "^3.0.0", + "@frida/crypto": "^1.0.1", + "@frida/diagnostics_channel": "^1.0.0", + "@frida/events": "^4.0.4", + "@frida/http": "^4.0.2", + "@frida/http-parser-js": "^1.0.0", + "@frida/https": "^1.0.0", + "@frida/ieee754": "^2.0.2", + "@frida/net": "^4.0.1", + "@frida/os": "^1.0.0", + "@frida/path": "^2.0.3", + "@frida/process": "^1.2.1", + "@frida/punycode": "^3.0.0", + "@frida/querystring": "^1.0.0", + "@frida/readable-stream": "^4.1.3", + "@frida/reserved-words": "^1.0.0", + "@frida/stream": "^1.0.2", + "@frida/string_decoder": "^2.0.0", + "@frida/terser": "^1.0.0", + "@frida/timers": "^3.0.0", + "@frida/tty": "^1.0.0", + "@frida/url": "^1.0.2", + "@frida/util": "^1.0.3", + "@frida/vm": "^2.0.0", + "commander": "^11.1.0", + "frida-fs": "^5.2.3", + "typed-emitter": "^2.1.0" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", - "dev": true, - "dependencies": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" - } - }, - "node_modules/combine-source-map/node_modules/convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", - "dev": true - }, - "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, - "engines": { - "node": ">= 6" + "bin": { + "frida-compile": "dist/cli.js" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "node_modules/frida-fs": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/frida-fs/-/frida-fs-5.2.5.tgz", + "integrity": "sha512-Eyb4OqUlcv1/Eq7Q+B9IZmYZIgIM2YjqDojrjmAGzPSSXBuUKwSkuObQcQ8Dup9JTOMIUcSII9/I8DaTe6LFKw==", "dev": true }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "engines": [ - "node >= 6.0" - ], + "node_modules/frida-java-bridge": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/frida-java-bridge/-/frida-java-bridge-6.2.3.tgz", + "integrity": "sha512-wT/jrhtB86CPkDoQcyPPMcNKTD7Ynxenrha0TL8dAoFJq1Vgww88DvNzJxZ+C5FxtEm2Rf7NLWYy/BK7UZ4Leg==", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" + "jssha": "^3.1.2" } }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } + "node_modules/frida-objc-bridge": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/frida-objc-bridge/-/frida-objc-bridge-7.0.2.tgz", + "integrity": "sha512-IyKShbGf3bNxKxIavevCDBctg1Q+QAaFSMn9o1qOdY3ubRoeF3OGjs8Kjg47Dn1wu3fI/TywBfuWn2bHYRhYWA==" }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true + "node_modules/frida-screenshot": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/frida-screenshot/-/frida-screenshot-5.0.0.tgz", + "integrity": "sha512-43SVs5VsU6ALT48ImitPKNNec+EljX+GQEm2HFjbJv5YqLM5qNqd4EvbIAgnbzPG5kKBwKjDv9Nt9kfvnERbfQ==" }, - "node_modules/constants-browserify": { + "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" - } - }, - "node_modules/dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", - "dev": true - }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deps-sort": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", - "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", - "dev": true, - "dependencies": { - "JSONStream": "^1.0.3", - "shasum-object": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" }, - "bin": { - "deps-sort": "bin/cmd.js" - } - }, - "node_modules/deps-sort/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" + "function-bind": "^1.1.1" }, "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" + "node": ">= 0.4.0" } }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, - "node_modules/endian-reader": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/endian-reader/-/endian-reader-0.1.0.tgz", - "integrity": "sha512-5e4iguVyduiJiqb+EFF7fJ2HBx38WQjlILgOOReIO73vCuZ4EwSwp7HmEzbL4jN8BdKAnH67eoeEF0JC5DUjow==" - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/frida-any-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/frida-any-promise/-/frida-any-promise-2.0.0.tgz", - "integrity": "sha512-UbQZMmq7JybTSLBBhsoBfR6R0ydi4t7l0D9ttD4MGUKOxrNlUzCJEw0vw+ubSLok9MNXTZ63MBrPUNJRKhAnrg==", - "dev": true - }, - "node_modules/frida-buffer": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/frida-buffer/-/frida-buffer-1.0.7.tgz", - "integrity": "sha512-7/7SuGI411k7JuQPIjETS07oa9h95E39kA8ky3/8D2ybL7XhVR1s6LPo/q8ew6zeWYQ1x52ZHhJGyoOAfWUJBA==", - "dev": true, - "dependencies": { - "buffer": "^5.3.0" - } - }, - "node_modules/frida-buffer/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/frida-compile": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/frida-compile/-/frida-compile-10.2.5.tgz", - "integrity": "sha512-bM3b9OD6jEPlh3nxRoT5Gr2G8azba/YgtN1d9zngmU4K9vmclTq0RhjoREnLAoS2C740YIsDLQq+il0OouTbUg==", - "dev": true, - "dependencies": { - "@frida/mold-source-map": "^1.0.0", - "@frida/uglifyify": "^7.0.1", - "acorn": "^8.5.0", - "bignumber.js": "^9.0.0", - "browserify": "^17.0.0", - "chalk": "^4.1.0", - "chokidar": "^3.0.0", - "commander": "^6.1.0", - "concat-stream": "^2.0.0", - "frida-any-promise": "^2.0.0", - "frida-buffer": "^1.0.7", - "frida-fs": "^3.0.0", - "frida-http": "^3.0.0", - "frida-net": "^3.0.1", - "frida-process": "^3.0.1", - "node-notifier": "^8.0.1", - "through2": "^4.0.2", - "tsify": "^5.0.2", - "typescript": "^4.0.2" - }, - "bin": { - "frida-compile": "bin/compile.js" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/frida-fs": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/frida-fs/-/frida-fs-3.0.2.tgz", - "integrity": "sha512-+axrlmRW7/+qfcoLYhTpa8g2CmJBNwFcSE/srm6R+GsXHdXnadWSKSS985GCu7a96SvnHMny9D0JmF6NjdDmYA==", - "dev": true - }, - "node_modules/frida-http": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/frida-http/-/frida-http-3.0.0.tgz", - "integrity": "sha512-3jyuQx6vEMcmbnmSR4QzzdcLERhrjR90Gjg/wtYD7wUxZMwMxasfFeqmcLQ+exLNTwD+dI9HquGByuSn3h+9rw==", - "dev": true, - "dependencies": { - "http-parser-js": "^0.5.1" - } - }, - "node_modules/frida-java-bridge": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/frida-java-bridge/-/frida-java-bridge-6.2.3.tgz", - "integrity": "sha512-wT/jrhtB86CPkDoQcyPPMcNKTD7Ynxenrha0TL8dAoFJq1Vgww88DvNzJxZ+C5FxtEm2Rf7NLWYy/BK7UZ4Leg==", - "dependencies": { - "jssha": "^3.1.2" - } - }, - "node_modules/frida-net": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/frida-net/-/frida-net-3.0.1.tgz", - "integrity": "sha512-N4wu2120FZQC9YZsKWoGnfGlSwVPI9VcQW48kYccuYKhXfMWTnKnDZRA3MJ7sxMMX4zrOkihe9vtHw1aoBCqAg==", - "dev": true, - "dependencies": { - "ipaddr.js": "^1.9.1" - } - }, - "node_modules/frida-objc-bridge": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/frida-objc-bridge/-/frida-objc-bridge-7.0.2.tgz", - "integrity": "sha512-IyKShbGf3bNxKxIavevCDBctg1Q+QAaFSMn9o1qOdY3ubRoeF3OGjs8Kjg47Dn1wu3fI/TywBfuWn2bHYRhYWA==" - }, - "node_modules/frida-process": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/frida-process/-/frida-process-3.0.1.tgz", - "integrity": "sha512-TigqmU3Y4XNkJi1bYIC6lT3dUSVRMzyjguIvlHs8XH9+39ykRztgoARJd6vH2+n58OeQFs03MlQiW/KI5q6jVQ==", - "dev": true - }, - "node_modules/frida-screenshot": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/frida-screenshot/-/frida-screenshot-3.0.3.tgz", - "integrity": "sha512-Gvq14j+XhaPxqQF8FTRmOUV4hzM5XvnXk5D/kNLAsugMjUH3qjsZ6O/gUWPikLU2OzYZBcaEdle58Di3hhth9g==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", - "dev": true - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", - "dev": true, - "dependencies": { - "source-map": "~0.5.3" - } - }, - "node_modules/insert-module-globals": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", - "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", - "dev": true, - "dependencies": { - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "JSONStream": "^1.0.3", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" - }, - "bin": { - "insert-module-globals": "bin/cmd.js" - } - }, - "node_modules/insert-module-globals/node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/insert-module-globals/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/jssha": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.3.0.tgz", - "integrity": "sha512-w9OtT4ALL+fbbwG3gw7erAO0jvS5nfvrukGPMWIAoea359B26ALXGpzy4YJSp9yGnpUvuvOw1nSjSoHDfWSr1w==", - "engines": { - "node": "*" - } - }, - "node_modules/labeled-stream-splicer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", - "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "stream-splicer": "^2.0.0" - } - }, - "node_modules/lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/macho": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/macho/-/macho-1.4.0.tgz", - "integrity": "sha512-PT3YMEKYogCeVYEA2bCFRZASNyn/JaOhjq6eV8SzBQ3RFia7XU8ASQCgGx+f3RnJFHT+xavLP+Qds48jQb0J5Q==", - "dependencies": { - "endian-reader": "^0.1.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "node_modules/module-deps": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", - "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", - "dev": true, - "dependencies": { - "browser-resolve": "^2.0.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.2.0", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "JSONStream": "^1.0.3", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "module-deps": "bin/cmd.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/module-deps/node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/module-deps/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/node-notifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", - "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", - "dev": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", - "dev": true, - "dependencies": { - "path-platform": "~0.11.15" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/read-only-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shasum-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", - "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", - "dev": true, - "dependencies": { - "fast-safe-stringify": "^2.0.7" - } - }, - "node_modules/shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dev": true, - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-browserify/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, - "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/stream-http/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "node_modules/stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { - "is-utf8": "^0.2.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, + "node_modules/jssha": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.3.0.tgz", + "integrity": "sha512-w9OtT4ALL+fbbwG3gw7erAO0jvS5nfvrukGPMWIAoea359B26ALXGpzy4YJSp9yGnpUvuvOw1nSjSoHDfWSr1w==", "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", - "dev": true, + "node_modules/macho": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/macho/-/macho-1.4.0.tgz", + "integrity": "sha512-PT3YMEKYogCeVYEA2bCFRZASNyn/JaOhjq6eV8SzBQ3RFia7XU8ASQCgGx+f3RnJFHT+xavLP+Qds48jQb0J5Q==", "dependencies": { - "minimist": "^1.1.0" + "endian-reader": "^0.1.0" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", - "dev": true, - "dependencies": { - "acorn-node": "^1.2.0" - } - }, - "node_modules/terser": { - "version": "5.16.5", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz", - "integrity": "sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==", + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" + "minimist": "^1.2.6" }, "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" + "mkdirp": "bin/cmd.js" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { - "readable-stream": "3" + "wrappy": "1" } }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "dependencies": { - "process": "~0.11.0" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=0.6.0" + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, + "optional": true, "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "tslib": "^2.1.0" } }, - "node_modules/tsconfig": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz", - "integrity": "sha512-Cq65A3kVp6BbsUgg9DRHafaGmbMb9EhAc7fjWvudNWKjkbWrt43FnrtZt6awshH1R0ocfF2Z0uxock3lVqEgOg==", + "node_modules/rxjs/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true, - "dependencies": { - "any-promise": "^1.3.0", - "parse-json": "^2.2.0", - "strip-bom": "^2.0.0", - "strip-json-comments": "^2.0.0" - } + "optional": true }, - "node_modules/tsify": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/tsify/-/tsify-5.0.4.tgz", - "integrity": "sha512-XAZtQ5OMPsJFclkZ9xMZWkSNyMhMxEPsz3D2zu79yoKorH9j/DT4xCloJeXk5+cDhosEibu4bseMVjyPOAyLJA==", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "convert-source-map": "^1.1.0", - "fs.realpath": "^1.0.0", - "object-assign": "^4.1.0", - "semver": "^6.1.0", - "through2": "^2.0.0", - "tsconfig": "^5.0.3" - }, "engines": { - "node": ">=0.12" - }, - "peerDependencies": { - "browserify": ">= 10.x", - "typescript": ">= 2.8" + "node": ">=0.10.0" } }, - "node_modules/tsify/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/tsify/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/tslib": { @@ -2797,23 +1017,21 @@ "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" } }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true + "node_modules/typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", + "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", + "dev": true, + "optionalDependencies": { + "rxjs": "*" + } }, "node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2822,136 +1040,17 @@ "node": ">=4.2.0" } }, - "node_modules/umd": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", - "dev": true, - "bin": { - "umd": "bin/cli.js" - } - }, - "node_modules/undeclared-identifiers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.3.0", - "dash-ast": "^1.0.0", - "get-assigned-identifiers": "^1.2.0", - "simple-concat": "^1.0.0", - "xtend": "^4.0.1" - }, - "bin": { - "undeclared-identifiers": "bin.js" - } - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } } diff --git a/agent/package.json b/agent/package.json index a6bf748e..e692d06a 100644 --- a/agent/package.json +++ b/agent/package.json @@ -30,13 +30,13 @@ "dependencies": { "frida-java-bridge": "^6", "frida-objc-bridge": "^7", - "frida-screenshot": "^3", + "frida-screenshot": "^5", "macho": "^1" }, "devDependencies": { "@types/frida-gum": "^18", - "@types/node": "^17", - "frida-compile": "^10", + "@types/node": "^18", + "frida-compile": "^16", "tslint": "^6" } } diff --git a/agent/src/android/clipboard.ts b/agent/src/android/clipboard.ts index 0e6c9ea3..d866b7f5 100644 --- a/agent/src/android/clipboard.ts +++ b/agent/src/android/clipboard.ts @@ -1,9 +1,9 @@ -import { colors as c } from "../lib/color"; +import { colors as c } from "../lib/color.js"; import { getApplicationContext, wrapJavaPerform -} from "./lib/libjava"; -import { ClipboardManager } from "./lib/types"; +} from "./lib/libjava.js"; +import { ClipboardManager } from "./lib/types.js"; export const monitor = (): Promise => { // -- Sample Java diff --git a/agent/src/android/filesystem.ts b/agent/src/android/filesystem.ts index f4cb9453..aaf0eafa 100644 --- a/agent/src/android/filesystem.ts +++ b/agent/src/android/filesystem.ts @@ -1,14 +1,14 @@ import * as fs from "fs"; -import { hexStringToBytes } from "../lib/helpers"; -import { IAndroidFilesystem } from "./lib/interfaces"; +import { hexStringToBytes } from "../lib/helpers.js"; +import { IAndroidFilesystem } from "./lib/interfaces.js"; import { getApplicationContext, wrapJavaPerform -} from "./lib/libjava"; +} from "./lib/libjava.js"; import { File, JavaClass -} from "./lib/types"; +} from "./lib/types.js"; export const exists = (path: string): Promise => { // -- Sample Java diff --git a/agent/src/android/general.ts b/agent/src/android/general.ts index 39204b42..8d545f9c 100644 --- a/agent/src/android/general.ts +++ b/agent/src/android/general.ts @@ -1,4 +1,4 @@ -import { wrapJavaPerform } from "./lib/libjava"; +import { wrapJavaPerform } from "./lib/libjava.js"; export const deoptimize = (): Promise => { return wrapJavaPerform(() => { diff --git a/agent/src/android/heap.ts b/agent/src/android/heap.ts index 9c80e9e2..ff0c1f20 100644 --- a/agent/src/android/heap.ts +++ b/agent/src/android/heap.ts @@ -1,11 +1,11 @@ -import { colors as c } from "../lib/color"; +import { colors as c } from "../lib/color.js"; import { IHeapClassDictionary, IHeapObject, IJavaField, IHeapNormalised -} from "./lib/interfaces"; -import { wrapJavaPerform } from "./lib/libjava"; +} from "./lib/interfaces.js"; +import { wrapJavaPerform } from "./lib/libjava.js"; export let handles: IHeapClassDictionary = {}; @@ -72,12 +72,12 @@ export const getInstances = (clazz: string): Promise => { export const methods = (handle: number): Promise => { return wrapJavaPerform(() => { - const clazz: Java.Wrapper = getInstance(handle); + const clazz = getInstance(handle); if (clazz == null) { return []; } - return clazz.class.getDeclaredMethods().map((method) => { + return clazz.class.getDeclaredMethods().map((method: any) => { return method.toGenericString(); }); }); @@ -85,7 +85,7 @@ export const methods = (handle: number): Promise => { export const execute = (handle: number, method: string, returnString: boolean = false): Promise => { return wrapJavaPerform(() => { - const clazz: Java.Wrapper = getInstance(handle); + const clazz = getInstance(handle); if (clazz == null) { return; @@ -104,13 +104,13 @@ export const execute = (handle: number, method: string, returnString: boolean = export const fields = (handle: number): Promise => { return wrapJavaPerform(() => { - const clazz: Java.Wrapper = getInstance(handle); + const clazz = getInstance(handle); if (clazz == null) { return; } - return clazz.class.getDeclaredFields().map((field): IJavaField => { + return clazz.class.getDeclaredFields().map((field: any): IJavaField => { const fieldName: string = field.getName(); const fieldInstance: Java.Wrapper = clazz.class.getDeclaredField(fieldName); fieldInstance.setAccessible(true); @@ -132,7 +132,7 @@ export const fields = (handle: number): Promise => { export const evaluate = (handle: number, js: string): Promise => { return wrapJavaPerform(() => { - const clazz: Java.Wrapper = getInstance(handle); + const clazz = getInstance(handle); if (clazz == null) { return; diff --git a/agent/src/android/hooking.ts b/agent/src/android/hooking.ts index da09d973..fc9fac45 100644 --- a/agent/src/android/hooking.ts +++ b/agent/src/android/hooking.ts @@ -1,12 +1,12 @@ -import { colors as c } from "../lib/color"; -import { IJob } from "../lib/interfaces"; -import * as jobs from "../lib/jobs"; -import { ICurrentActivityFragment } from "./lib/interfaces"; +import { colors as c } from "../lib/color.js"; +import { IJob } from "../lib/interfaces.js"; +import * as jobs from "../lib/jobs.js"; +import { ICurrentActivityFragment } from "./lib/interfaces.js"; import { getApplicationContext, R, wrapJavaPerform -} from "./lib/libjava"; +} from "./lib/libjava.js"; import { Activity, ActivityClientRecord, @@ -16,7 +16,7 @@ import { PackageManager, Throwable, JavaMethodsOverloadsResult, -} from "./lib/types"; +} from "./lib/types.js"; enum PatternType { Regex = 'regex', @@ -400,7 +400,12 @@ const watchMethod = ( }; // Push the implementation so that it can be nulled later - job.implementations.push(m); + if (job.implementations) { + job.implementations.push(m); + } else { + job.implementations = [ m ]; + } + }); }); }; @@ -468,7 +473,7 @@ export const getServices = (): Promise => { // not using the helper as we need other variables too const context = currentApplication.getApplicationContext(); - let services = []; + var services: string[] = []; currentApplication.mLoadedApk.value.mServices.value.values().toArray().map((potentialServices) => { Java.cast(potentialServices, arrayMap).keySet().toArray().map((service) => { @@ -502,7 +507,7 @@ export const getBroadcastReceivers = (): Promise => { GET_RECEIVERS ).receivers.value - let receivers = []; + var receivers: string[] = []; currentApplication.mLoadedApk.value.mReceivers.value.values().toArray().map((potentialReceivers) => { Java.cast(potentialReceivers, arrayMap).keySet().toArray().map((receiver) => { @@ -565,7 +570,12 @@ export const setReturnValue = (fqClazz: string, filterOverload: string | null, n }; // record override - job.implementations.push(m); + if (job.implementations) { + job.implementations.push(m); + } else { + job.implementations = [ m ]; + } + }); jobs.add(job); diff --git a/agent/src/android/intent.ts b/agent/src/android/intent.ts index 75f3002b..598e6b4f 100644 --- a/agent/src/android/intent.ts +++ b/agent/src/android/intent.ts @@ -1,9 +1,9 @@ -import { colors as c } from "../lib/color"; +import { colors as c } from "../lib/color.js"; import { getApplicationContext, wrapJavaPerform -} from "./lib/libjava"; -import { Intent } from "./lib/types"; +} from "./lib/libjava.js"; +import { Intent } from "./lib/types.js"; // https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK const FLAG_ACTIVITY_NEW_TASK = 0x10000000; diff --git a/agent/src/android/keystore.ts b/agent/src/android/keystore.ts index 4fac362a..c216b805 100644 --- a/agent/src/android/keystore.ts +++ b/agent/src/android/keystore.ts @@ -1,17 +1,17 @@ -import { colors as c } from "../lib/color"; +import { colors as c } from "../lib/color.js"; import { IKeyStoreDetail, IKeyStoreEntry -} from "./lib/interfaces"; -import { wrapJavaPerform } from "./lib/libjava"; +} from "./lib/interfaces.js"; +import { wrapJavaPerform } from "./lib/libjava.js"; import { KeyFactory, KeyInfo, KeyStore, SecretKeyFactory -} from "./lib/types"; -import { IJob } from "../lib/interfaces"; -import * as jobs from "../lib/jobs"; +} from "./lib/types.js"; +import { IJob } from "../lib/interfaces.js"; +import * as jobs from "../lib/jobs.js"; // Dump entries in the Android Keystore, together with a flag // indicating if its a key or a certificate. @@ -220,9 +220,9 @@ const keystoreGetKey = (ident: string): any | undefined => { export const watchKeystore = (): void => { const job: IJob = { identifier: jobs.identifier(), - implementations: [], type: "android-keystore-watch", }; + job.implementations = []; job.implementations.push(keystoreLoad(job.identifier)); job.implementations.push(keystoreGetKey(job.identifier)); diff --git a/agent/src/android/monitor.ts b/agent/src/android/monitor.ts index 5d90b02b..549d1378 100644 --- a/agent/src/android/monitor.ts +++ b/agent/src/android/monitor.ts @@ -1,4 +1,4 @@ -import { wrapJavaPerform } from "./lib/libjava"; +import { wrapJavaPerform } from "./lib/libjava.js"; export namespace monitor { export const stringCanary = (can: string): Promise => { diff --git a/agent/src/android/pinning.ts b/agent/src/android/pinning.ts index c1522910..0bfa9d25 100644 --- a/agent/src/android/pinning.ts +++ b/agent/src/android/pinning.ts @@ -1,8 +1,8 @@ -import { colors as c } from "../lib/color"; -import { qsend } from "../lib/helpers"; -import { IJob } from "../lib/interfaces"; -import * as jobs from "../lib/jobs"; -import { wrapJavaPerform } from "./lib/libjava"; +import { colors as c } from "../lib/color.js"; +import { qsend } from "../lib/helpers.js"; +import { IJob } from "../lib/interfaces.js"; +import * as jobs from "../lib/jobs.js"; +import { wrapJavaPerform } from "./lib/libjava.js"; import { ArrayList, CertificatePinner, @@ -11,7 +11,7 @@ import { SSLContext, TrustManagerImpl, X509TrustManager, -} from "./lib/types"; +} from "./lib/types.js"; // a simple flag to control if we should be quiet or not @@ -317,10 +317,11 @@ export const disable = (q: boolean): void => { const job: IJob = { identifier: jobs.identifier(), - implementations: [], type: "android-sslpinning-disable", }; + job.implementations = []; + job.implementations.push(sslContextEmptyTrustManager(job.identifier)); job.implementations.push(okHttp3CertificatePinnerCheck(job.identifier)); job.implementations.push(okHttp3CertificatePinnerCheckOkHttp(job.identifier)); diff --git a/agent/src/android/proxy.ts b/agent/src/android/proxy.ts index 57873b8f..7cb7c1dc 100644 --- a/agent/src/android/proxy.ts +++ b/agent/src/android/proxy.ts @@ -1,5 +1,5 @@ -import { wrapJavaPerform } from "./lib/libjava"; -import { colors as c } from "../lib/color"; +import { wrapJavaPerform } from "./lib/libjava.js"; +import { colors as c } from "../lib/color.js"; export const set = (host: string, port: string): Promise => { return wrapJavaPerform(() => { diff --git a/agent/src/android/root.ts b/agent/src/android/root.ts index 6e3c19dc..4b8aadab 100644 --- a/agent/src/android/root.ts +++ b/agent/src/android/root.ts @@ -1,13 +1,13 @@ -import { colors as c } from "../lib/color"; -import { IJob } from "../lib/interfaces"; -import * as jobs from "../lib/jobs"; -import { wrapJavaPerform } from "./lib/libjava"; +import { colors as c } from "../lib/color.js"; +import { IJob } from "../lib/interfaces.js"; +import * as jobs from "../lib/jobs.js"; +import { wrapJavaPerform } from "./lib/libjava.js"; import { File, IOException, JavaString, Runtime -} from "./lib/types"; +} from "./lib/types.js"; const commonPaths = [ "/data/local/bin/su", @@ -294,10 +294,11 @@ const jailMonkeyBypass = (success: boolean, ident: string): any => { export const disable = (): void => { const job: IJob = { identifier: jobs.identifier(), - implementations: [], type: "root-detection-disable", }; + job.implementations = []; + job.implementations.push(testKeysCheck(false, job.identifier)); job.implementations.push(execSuCheck(false, job.identifier)); job.implementations.push(fileExistsCheck(false, job.identifier)); @@ -322,6 +323,7 @@ export const enable = (): void => { implementations: [], type: "root-detection-enable", }; + job.implementations = []; job.implementations.push(testKeysCheck(true, job.identifier)); job.implementations.push(execSuCheck(true, job.identifier)); diff --git a/agent/src/android/shell.ts b/agent/src/android/shell.ts index 22252f1a..06f95661 100644 --- a/agent/src/android/shell.ts +++ b/agent/src/android/shell.ts @@ -1,11 +1,11 @@ -import { IExecutedCommand } from "./lib/interfaces"; -import { wrapJavaPerform } from "./lib/libjava"; +import { IExecutedCommand } from "./lib/interfaces.js"; +import { wrapJavaPerform } from "./lib/libjava.js"; import { BufferedReader, InputStreamReader, Runtime, StringBuilder -} from "./lib/types"; +} from "./lib/types.js"; // Executes shell commands on an Android device using Runtime.getRuntime().exec() diff --git a/agent/src/android/userinterface.ts b/agent/src/android/userinterface.ts index 9935a122..ee87f532 100644 --- a/agent/src/android/userinterface.ts +++ b/agent/src/android/userinterface.ts @@ -1,5 +1,5 @@ -import { colors as c } from "../lib/color"; -import { wrapJavaPerform } from "./lib/libjava"; +import { colors as c } from "../lib/color.js"; +import { wrapJavaPerform } from "./lib/libjava.js"; import { Activity, ActivityClientRecord, @@ -7,7 +7,7 @@ import { Bitmap, ByteArrayOutputStream, CompressFormat, -} from "./lib/types"; +} from "./lib/types.js"; // https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SECURE diff --git a/agent/src/generic/environment.ts b/agent/src/generic/environment.ts index c02291b6..42d912ea 100644 --- a/agent/src/generic/environment.ts +++ b/agent/src/generic/environment.ts @@ -1,23 +1,23 @@ import { getApplicationContext, wrapJavaPerform -} from "../android/lib/libjava"; +} from "../android/lib/libjava.js"; import { NSSearchPaths, NSUserDomainMask -} from "../ios/lib/constants"; +} from "../ios/lib/constants.js"; import { getNSFileManager, getNSMainBundle -} from "../ios/lib/helpers"; -import { NSBundle } from "../ios/lib/types"; -import { DeviceType } from "../lib/constants"; +} from "../ios/lib/helpers.js"; +import { NSBundle } from "../ios/lib/types.js"; +import { DeviceType } from "../lib/constants.js"; import { IAndroidPackage, IFridaInfo, IIosBundlePaths, IIosPackage -} from "../lib/interfaces"; +} from "../lib/interfaces.js"; // small helper function to lookup ios bundle paths diff --git a/agent/src/generic/http.ts b/agent/src/generic/http.ts index 73080268..8bc7ff47 100644 --- a/agent/src/generic/http.ts +++ b/agent/src/generic/http.ts @@ -1,7 +1,7 @@ import * as fs from "fs"; import * as httpLib from "http"; import * as url from "url"; -import { colors as c } from "../lib/color"; +import { colors as c } from "../lib/color.js"; let httpServer: httpLib.Server; let listenPort: number; @@ -43,17 +43,22 @@ export const start = (pwd: string, port: number = 9000): void => { servePath = pwd; httpServer = httpLib.createServer((req, res) => { - log(`${c.greenBright(req.method)} ${req.url}`); - - const parsedUrl = url.parse(req.url); + if (req.method && req.url) { + log(`${c.greenBright(req.method)} ${req.url}`); + } else { + log(`${c.redBright('Missing URL or request method.')}`); + return; + } + + const parsedUrl = new URL(req.url); - if (parsedUrl.path === "/") { + if (parsedUrl.pathname === "/") { res.end(dirListingHTML(pwd)); return; } res.setHeader("Content-type", "application/octet-stream"); - res.end(fs.readFileSync(pwd + parsedUrl.path)); + res.end(fs.readFileSync(pwd + parsedUrl.pathname)); }); httpServer.listen(port); @@ -70,13 +75,12 @@ export const stop = (): void => { httpServer.close() .once("close", () => { log(c.blackBright(`Server closed.`)); - - httpServer = undefined; + // httpServer = undefined; }); }; export const status = (): void => { - if (httpServer) { + if (httpServer.listening) { log(`Server is running on port ` + `${c.greenBright(listenPort.toString())} serving ${c.greenBright(servePath)}`); return; diff --git a/agent/src/generic/memory.ts b/agent/src/generic/memory.ts index 820a29fd..f1a76b54 100644 --- a/agent/src/generic/memory.ts +++ b/agent/src/generic/memory.ts @@ -1,13 +1,13 @@ -import { colors } from "../lib/color"; +import { colors } from "../lib/color.js" export const listModules = (): Module[] => { return Process.enumerateModules(); }; -export const listExports = (name: string): ModuleExportDetails[] | null => { +export const listExports = (name: string): ModuleExportDetails[] => { const mod: Module[] = Process.enumerateModules().filter((m) => m.name === name); if (mod.length <= 0) { - return null; + return []; } return mod[0].enumerateExports(); }; @@ -19,7 +19,13 @@ export const listRanges = (protection: string = "rw-"): RangeDetails[] => { export const dump = (address: string, size: number): ArrayBuffer => { // Originally part of Frida <=11 but got removed in 12. // https://github.com/frida/frida-python/commit/72899a4315998289fb171149d62477ba7d1fcb91 - return new NativePointer(address).readByteArray(size); + const data = new NativePointer(address).readByteArray(size); + if (data) { + return data; + } + else { + return new ArrayBuffer(0); + } }; export const search = (pattern: string, onlyOffsets: boolean = false): string[] => { diff --git a/agent/src/index.ts b/agent/src/index.ts index f995ef8e..785d3f01 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -1,10 +1,10 @@ -import { ping } from "./generic/ping"; -import { android } from "./rpc/android"; -import { env } from "./rpc/environment"; -import { ios } from "./rpc/ios"; -import { jobs } from "./rpc/jobs"; -import { memory } from "./rpc/memory"; -import { other } from "./rpc/other"; +import { ping } from "./generic/ping.js"; +import { android } from "./rpc/android.js"; +import { env } from "./rpc/environment.js"; +import { ios } from "./rpc/ios.js"; +import { jobs } from "./rpc/jobs.js"; +import { memory } from "./rpc/memory.js"; +import { other } from "./rpc/other.js"; rpc.exports = { ...android, diff --git a/agent/src/ios/binary.ts b/agent/src/ios/binary.ts index 978d0da2..39a26239 100644 --- a/agent/src/ios/binary.ts +++ b/agent/src/ios/binary.ts @@ -1,7 +1,7 @@ // tslint:disable-next-line:no-var-requires const macho = require("macho"); -import * as iosfilesystem from "./filesystem"; -import { IBinaryModuleDictionary } from "./lib/interfaces"; +import * as iosfilesystem from "./filesystem.js"; +import { IBinaryModuleDictionary } from "./lib/interfaces.js"; const isEncrypted = (cmds: any[]): boolean => { diff --git a/agent/src/ios/binarycookies.ts b/agent/src/ios/binarycookies.ts index 089173d6..ff298f99 100644 --- a/agent/src/ios/binarycookies.ts +++ b/agent/src/ios/binarycookies.ts @@ -1,9 +1,9 @@ -import { IIosCookie } from "./lib/interfaces"; +import { IIosCookie } from "./lib/interfaces.js"; import { NSArray, NSData, NSHTTPCookieStorage -} from "./lib/types"; +} from "./lib/types.js"; export const get = (): IIosCookie[] => { diff --git a/agent/src/ios/bundles.ts b/agent/src/ios/bundles.ts index da1bb555..6eace178 100644 --- a/agent/src/ios/bundles.ts +++ b/agent/src/ios/bundles.ts @@ -1,10 +1,10 @@ -import { BundleType } from "./lib/constants"; -import { IFramework } from "./lib/interfaces"; +import { BundleType } from "./lib/constants.js"; +import { IFramework } from "./lib/interfaces.js"; import { NSArray, NSBundle, NSDictionary -} from "./lib/types"; +} from "./lib/types.js"; // https://developer.apple.com/documentation/foundation/nsbundle/1408056-allframeworks?language=objc diff --git a/agent/src/ios/credentialstorage.ts b/agent/src/ios/credentialstorage.ts index 84fb4d53..294795bc 100644 --- a/agent/src/ios/credentialstorage.ts +++ b/agent/src/ios/credentialstorage.ts @@ -1,9 +1,9 @@ -import { ICredential } from "./lib/interfaces"; +import { ICredential } from "./lib/interfaces.js"; import { NSArray, NSData, NSURLCredentialStorage -} from "./lib/types"; +} from "./lib/types.js"; export const dump = (): ICredential[] => { diff --git a/agent/src/ios/crypto.ts b/agent/src/ios/crypto.ts index faeb71c6..7e3e93f3 100644 --- a/agent/src/ios/crypto.ts +++ b/agent/src/ios/crypto.ts @@ -1,14 +1,22 @@ -import { colors as c } from "../lib/color"; -import { fsend } from "../lib/helpers"; -import { IJob } from "../lib/interfaces"; -import * as jobs from "../lib/jobs"; +import { colors as c } from "../lib/color.js"; +import { fsend } from "../lib/helpers.js"; +import { IJob } from "../lib/interfaces.js"; +import * as jobs from "../lib/jobs.js"; import { arrayBufferToHex, hexToString -} from "./lib/helpers"; +} from "./lib/helpers.js"; + +type CCAlgorithm = { + [key: number]: { name: string; blocksize: number }; +}; + +type AlgorithmType = { + [key: number]: string; +}; // Encryption algorithms implemented by this module. -const CCAlgorithm = { +const CCAlgorithm: CCAlgorithm = { 0: { name: "kCCAlgorithmAES128", blocksize: 16 }, 1: { name: "kCCAlgorithmDES", blocksize: 8 }, 2: { name: "kCCAlgorithm3DES", blocksize: 8 }, @@ -18,24 +26,24 @@ const CCAlgorithm = { }; // Encryption algorithms implemented by this module. -const CCOperation = { +const CCOperation: AlgorithmType = { 0: "kCCEncrypt", 1: "kCCDecrypt" }; // Options flags, passed to CCCryptorCreate(). -const CCOption = { +const CCOption: AlgorithmType = { 1: "kCCOptionPKCS7Padding", 2: "kCCOptionECBMode" }; // alg for pbkdf. Right now only pbkdf2 is supported by CommonCrypto -const CCPBKDFAlgorithm = { +const CCPBKDFAlgorithm: AlgorithmType = { 2: "kCCPBKDF2" }; // alg for prt for pbkdf -const CCPseudoRandomAlgorithm = { +const CCPseudoRandomAlgorithm: AlgorithmType = { 1: "kCCPRFHmacAlgSHA1", 2: "kCCPRFHmacAlgSHA224", 3: "kCCPRFHmacAlgSHA256", @@ -45,7 +53,7 @@ const CCPseudoRandomAlgorithm = { // ident for crypto hooks job -let cryptoidentifier: string = null; +let cryptoidentifier: string = ""; // operation being performed 0=encrypt 1=decrypt let op = 0; @@ -57,7 +65,7 @@ let alg = 0; // keep track of all the output bytes. // this is necessary because CCCryptorUpdate needs to be // append the final block from CCCryptorFinal -let dataOutBytes = null; +let dataOutBytes: string = ""; const secrandomcopybytes = (ident: string): InvocationListener => { const hook = "SecRandomCopyBytes"; @@ -334,12 +342,12 @@ export const monitor = (): void => { const job: IJob = { identifier: jobs.identifier(), - invocations: [], type: "ios-crypto-monitor", }; + job.invocations = []; cryptoidentifier = job.identifier; - + job.invocations.push(secrandomcopybytes(job.identifier)); job.invocations.push(cckeyderivationpbkdf(job.identifier)); job.invocations.push(cccrypt(job.identifier)); diff --git a/agent/src/ios/filesystem.ts b/agent/src/ios/filesystem.ts index 219d1a84..cf10b07d 100644 --- a/agent/src/ios/filesystem.ts +++ b/agent/src/ios/filesystem.ts @@ -1,15 +1,15 @@ import * as fs from "fs"; -import { hexStringToBytes } from "../lib/helpers"; -import { getNSFileManager } from "./lib/helpers"; +import { hexStringToBytes } from "../lib/helpers.js"; +import { getNSFileManager } from "./lib/helpers.js"; import { IIosFilePath, IIosFileSystem -} from "./lib/interfaces"; +} from "./lib/interfaces.js"; import { NSDictionary, NSFileManager, NSString as NSStringType -} from "./lib/types"; +} from "./lib/types.js"; // a resolved nsfilemanager instance diff --git a/agent/src/ios/heap.ts b/agent/src/ios/heap.ts index 35ac1b83..51f58c04 100644 --- a/agent/src/ios/heap.ts +++ b/agent/src/ios/heap.ts @@ -1,6 +1,6 @@ -import { colors as c } from "../lib/color"; -import { bytesToUTF8 } from "./lib/helpers"; -import { IHeapObject } from "./lib/interfaces"; +import { colors as c } from "../lib/color.js"; +import { bytesToUTF8 } from "./lib/helpers.js"; +import { IHeapObject } from "./lib/interfaces.js"; const enumerateInstances = (clazz: string): ObjC.Object[] => { @@ -19,21 +19,25 @@ const enumerateInstances = (clazz: string): ObjC.Object[] => { export const getInstances = (clazz: string): IHeapObject[] => { c.log(`${c.blackBright(`Enumerating live instances of`)} ${c.greenBright(clazz)}...`); + + const instances: IHeapObject[] = []; - return enumerateInstances(clazz).map((instance): IHeapObject => { + enumerateInstances(clazz).map((instance) => { try { - return { + instances.push({ className: instance.$className, handle: instance.handle.toString(), ivars: instance.$ivars, kind: instance.$kind, methods: instance.$ownMethods, superClass: instance.$superClass.$className, - }; + }); } catch (err) { c.log(`Warning: ${c.yellowBright((err as Error).message)}`); } }); + + return instances; }; const resolvePointer = (pointer: string): ObjC.Object => { @@ -51,7 +55,7 @@ export const getIvars = (pointer: string, toUTF8: boolean): [string, any[string] // just gone and replaces values in $ivars, but there are some // access errors for that. if (toUTF8) { - const $clonedIvars = {}; + const $clonedIvars: {[name: string]: any} = {}; c.log(c.blackBright(`Converting ivar values to UTF8 strings...`)); for (const k in $ivars) { if ($ivars.hasOwnProperty(k)) { diff --git a/agent/src/ios/hooking.ts b/agent/src/ios/hooking.ts index ed393806..64e61cfa 100644 --- a/agent/src/ios/hooking.ts +++ b/agent/src/ios/hooking.ts @@ -1,6 +1,6 @@ -import { colors as c } from "../lib/color"; -import { IJob } from "../lib/interfaces"; -import * as jobs from "../lib/jobs"; +import { colors as c } from "../lib/color.js"; +import { IJob } from "../lib/interfaces.js"; +import * as jobs from "../lib/jobs.js"; export const getClasses = () => { @@ -85,9 +85,9 @@ const watchMethod = (selector: string, job: IJob, dargs: boolean, dbt: boolean, dret: boolean): void => { const resolver = new ApiResolver("objc"); - let matchedMethod = { - address: undefined, - name: undefined, + let matchedMethod: ApiResolverMatch = { + address: NULL, + name: '', }; // handle the resolvers error it may throw if the selector format is off. @@ -164,8 +164,12 @@ const watchMethod = (selector: string, job: IJob, dargs: boolean, dbt: boolean, send(c.blackBright(`[${job.identifier}] `) + `Return Value: ${c.red(retval.toString())}`); }, }); - - job.invocations.push(watchInvocation); + if (job.invocations) { + job.invocations.push(watchInvocation); + } else { + job.invocations = [ watchInvocation ]; + } + }; export const setMethodReturn = (selector: string, returnValue: boolean): void => { @@ -173,9 +177,9 @@ export const setMethodReturn = (selector: string, returnValue: boolean): void => const FALSE = new NativePointer(0x0); const resolver = new ApiResolver("objc"); - let matchedMethod = { - address: undefined, - name: undefined, + let matchedMethod: ApiResolverMatch = { + address: NULL, + name: '', }; // handle the resolvers error it may throw if the selector format @@ -239,6 +243,10 @@ export const setMethodReturn = (selector: string, returnValue: boolean): void => }); // register the job - job.invocations.push(watchInvocation); + if (job.invocations) { + job.invocations.push(watchInvocation); + } else { + job.invocations = [ watchInvocation ]; + }; jobs.add(job); }; diff --git a/agent/src/ios/jailbreak.ts b/agent/src/ios/jailbreak.ts index d4204859..c08907e2 100644 --- a/agent/src/ios/jailbreak.ts +++ b/agent/src/ios/jailbreak.ts @@ -1,6 +1,6 @@ -import { colors as c } from "../lib/color"; -import { IJob } from "../lib/interfaces"; -import * as jobs from "../lib/jobs"; +import { colors as c } from "../lib/color.js"; +import { IJob } from "../lib/interfaces.js"; +import * as jobs from "../lib/jobs.js"; // Attempts to disable Jailbreak detection. // This seems like an odd thing to do on a device that is probably not @@ -115,9 +115,13 @@ const fileExistsAtPath = (success: boolean, ident: string): InvocationListener = // toggles replies to fopen: for the paths in jailbreakPaths const fopen = (success: boolean, ident: string): InvocationListener => { + const fopen_addr = Module.findExportByName(null, "fopen"); + if (!fopen_addr) { + send(c.red(`fopen function not found!`)); + return new InvocationListener(); + } - return Interceptor.attach( - Module.findExportByName(null, "fopen"), { + return Interceptor.attach(fopen_addr, { onEnter(args) { this.is_common_path = false; @@ -236,7 +240,7 @@ const canOpenURL = (success: boolean, ident: string): InvocationListener => { const libSystemBFork = (success: boolean, ident: string): InvocationListener => { // Hook fork() in libSystem.B.dylib and return 0 // TODO: Hook vfork - const libSystemBdylibFork: NativePointer = Module.findExportByName("libSystem.B.dylib", "fork"); + const libSystemBdylibFork = Module.findExportByName("libSystem.B.dylib", "fork"); // iOS simulator does not have libSystem.B.dylib // TODO: Remove as iOS 12 similar may have this now. @@ -283,7 +287,7 @@ const libSystemBFork = (success: boolean, ident: string): InvocationListener => // ref: https://www.ayrx.me/gantix-jailmonkey-root-detection-bypass/ const jailMonkeyBypass = (success: boolean, ident: string): InvocationListener => { const JailMonkeyClass = ObjC.classes.JailMonkey; - if (JailMonkeyClass === undefined) return null; + if (JailMonkeyClass === undefined) return new InvocationListener(); return Interceptor.attach(JailMonkeyClass["- isJailBroken"].implementation, { onLeave(retval) { @@ -298,10 +302,11 @@ const jailMonkeyBypass = (success: boolean, ident: string): InvocationListener = export const disable = (): void => { const job: IJob = { identifier: jobs.identifier(), - invocations: [], type: "ios-jailbreak-disable", }; + job.invocations = []; + job.invocations.push(fileExistsAtPath(false, job.identifier)); job.invocations.push(libSystemBFork(false, job.identifier)); job.invocations.push(fopen(false, job.identifier)); @@ -314,10 +319,11 @@ export const disable = (): void => { export const enable = (): void => { const job: IJob = { identifier: jobs.identifier(), - invocations: [], type: "ios-jailbreak-enable", }; + job.invocations = []; + job.invocations.push(fileExistsAtPath(true, job.identifier)); job.invocations.push(libSystemBFork(true, job.identifier)); job.invocations.push(fopen(true, job.identifier)); diff --git a/agent/src/ios/keychain.ts b/agent/src/ios/keychain.ts index b05edbaf..d408696d 100644 --- a/agent/src/ios/keychain.ts +++ b/agent/src/ios/keychain.ts @@ -1,26 +1,26 @@ // dumps all of the keychain items available to the current // application. -import { colors as c } from "../lib/color"; -import { reverseEnumLookup } from "../lib/helpers"; +import { colors as c } from "../lib/color.js"; +import { reverseEnumLookup } from "../lib/helpers.js"; import { kSec, NSUTF8StringEncoding -} from "./lib/constants"; +} from "./lib/constants.js"; import { bytesToHexString, bytesToUTF8, smartDataToString -} from "./lib/helpers"; +} from "./lib/helpers.js"; import { IKeychainData, IKeychainItem -} from "./lib/interfaces"; -import { libObjc } from "./lib/libobjc"; +} from "./lib/interfaces.js"; +import { libObjc } from "./lib/libobjc.js"; import { NSDictionary, NSMutableDictionary as NSMutableDictionaryType, NSString as NSStringType, -} from "./lib/types"; +} from "./lib/types.js"; // keychain item times to query for const itemClasses = [ @@ -109,8 +109,11 @@ const enumerateKeychain = (): IKeychainData[] => { return data; }); + + const keyChainData: IKeychainData[] = []; + keyChainData.concat(...itemClassResults).filter((n) => n !== undefined); - return [].concat(...itemClassResults).filter((n) => n !== undefined); + return keyChainData; }; // print raw entries using some Frida magic diff --git a/agent/src/ios/lib/helpers.ts b/agent/src/ios/lib/helpers.ts index e6eadbfa..7af9d98d 100644 --- a/agent/src/ios/lib/helpers.ts +++ b/agent/src/ios/lib/helpers.ts @@ -1,10 +1,10 @@ -import { NSUTF8StringEncoding } from "./constants"; +import { NSUTF8StringEncoding } from "./constants.js"; import { NSBundle, NSDictionary, NSFileManager, NSString as NSStringType -} from "./types"; +} from "./types.js"; // Attempt to unarchive data. Returning a string of `` indicates that the // unarchiving failed. @@ -30,8 +30,8 @@ export const unArchiveDataAndGetString = (data: ObjC.Object | any): string => { case "__NSDictionaryI": const dict: NSDictionary = new ObjC.Object(unArchivedData); const enumerator = dict.keyEnumerator(); - let key; - const s: object = {}; + let key: string; + const s: {[key: string]: any } = {}; // tslint:disable-next-line:no-conditional-assignment while ((key = enumerator.nextObject()) !== null) { @@ -136,7 +136,7 @@ export const getNSMainBundle = (): NSBundle => { return bundle.mainBundle(); }; -export const arrayBufferToHex = (arrayBuffer): string => { +export const arrayBufferToHex = (arrayBuffer: ArrayBuffer | null): string => { if (typeof arrayBuffer !== 'object' || arrayBuffer === null || typeof arrayBuffer.byteLength !== 'number') { throw new TypeError('Expected input to be an ArrayBuffer'); } @@ -153,10 +153,10 @@ export const arrayBufferToHex = (arrayBuffer): string => { return result; }; -export const hexToString = (hexx): string => { +export const hexToString = (hexx: string): string => { const hex = hexx.toString(); // force conversion let str = ''; - for (let i = 0; (i < hex.length && hex.substr(i, 2) !== '00'); i += 2) - str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); + for (let i = 0; (i < hex.length && hex.substring(i, i+2) !== '00'); i += 2) + str += String.fromCharCode(parseInt(hex.substring(i, i+2), 16)); return str; }; \ No newline at end of file diff --git a/agent/src/ios/lib/interfaces.ts b/agent/src/ios/lib/interfaces.ts index 1f96768d..06a68704 100644 --- a/agent/src/ios/lib/interfaces.ts +++ b/agent/src/ios/lib/interfaces.ts @@ -1,4 +1,4 @@ -import { NSDictionary } from "./types"; +import { NSDictionary } from "./types.js"; export interface IKeychainData { clazz: string; diff --git a/agent/src/ios/nsuserdefaults.ts b/agent/src/ios/nsuserdefaults.ts index a7f5d621..9dbcb998 100644 --- a/agent/src/ios/nsuserdefaults.ts +++ b/agent/src/ios/nsuserdefaults.ts @@ -1,7 +1,7 @@ import { NSDictionary, NSUserDefaults -} from "./lib/types"; +} from "./lib/types.js"; export const get = (): NSUserDefaults | any => { diff --git a/agent/src/ios/pasteboard.ts b/agent/src/ios/pasteboard.ts index ee963a20..2f01ae50 100644 --- a/agent/src/ios/pasteboard.ts +++ b/agent/src/ios/pasteboard.ts @@ -1,4 +1,4 @@ -import { colors as c } from "../lib/color"; +import { colors as c } from "../lib/color.js"; export const monitor = (): void => { diff --git a/agent/src/ios/pinning.ts b/agent/src/ios/pinning.ts index b6ed53d7..41f815f1 100644 --- a/agent/src/ios/pinning.ts +++ b/agent/src/ios/pinning.ts @@ -1,8 +1,8 @@ -import { colors as c } from "../lib/color"; -import { qsend } from "../lib/helpers"; -import { IJob } from "../lib/interfaces"; -import * as jobs from "../lib/jobs"; -import { libObjc } from "./lib/libobjc"; +import { colors as c } from "../lib/color.js"; +import { qsend } from "../lib/helpers.js"; +import { IJob } from "../lib/interfaces.js"; +import * as jobs from "../lib/jobs.js"; +import { libObjc } from "./lib/libobjc.js"; // These hooks attempt many ways to kill SSL pinning and certificate // validations. The first sections search for common libraries and @@ -165,7 +165,7 @@ const afNetworking = (ident: string): InvocationListener[] => { args[2] = new NativePointer(0x0); } }, - }) : null; + }) : new InvocationListener(); return [ setSSLPinningmode, @@ -255,7 +255,7 @@ const trustKit = (ident: string): InvocationListener => { // https://github.com/datatheorem/TrustKit/blob/ // 71878dce8c761fc226fecc5dbb6e86fbedaee05e/TrustKit/TSKPinningValidator.m#L84 if (!ObjC.classes.TSKPinningValidator) { - return; + return new InvocationListener(); } send(c.blackBright(`[${ident}] `) + `Found TrustKit. Hooking known pinning methods.`); @@ -286,7 +286,7 @@ const cordovaCustomURLConnectionDelegate = (ident: string): InvocationListener = // https://github.com/EddyVerbruggen/SSLCertificateChecker-PhoneGap-Plugin/blob/ // 67634bfdf4a31bb09b301db40f8f27fbd8818f61/src/ios/SSLCertificateChecker.m#L109-L116 if (!ObjC.classes.CustomURLConnectionDelegate) { - return; + return new InvocationListener(); } send(c.blackBright(`[${ident}] `) + `Found SSLCertificateChecker-PhoneGap-Plugin.` + @@ -392,7 +392,7 @@ const tlsHelperCreatePeerTrust = (ident: string): NativePointerValue => { const tlsHelper = libObjc.tls_helper_create_peer_trust; if (tlsHelper.isNull()) { - return null; + return NULL; } Interceptor.replace(tlsHelper, new NativeCallback((hdsk, server, SecTrustRef) => { @@ -413,7 +413,7 @@ const nwTlsCreatePeerTrust = (ident: string): InvocationListener => { const peerTrust = libObjc.nw_tls_create_peer_trust; if (peerTrust.isNull()) { - return null; + return new InvocationListener(); } return Interceptor.attach(peerTrust, { @@ -445,7 +445,7 @@ const nwTlsCreatePeerTrust = (ident: string): InvocationListener => { }; // SSL_CTX_set_custom_verify -const sSLCtxSetCustomVerify = (ident: string): InvocationListener => { +const sSLCtxSetCustomVerify = (ident: string) => { const getPskIdentity = libObjc.SSL_get_psk_identity; let setCustomVerify = libObjc.SSL_set_custom_verify; if (setCustomVerify.isNull()) { @@ -454,7 +454,7 @@ const sSLCtxSetCustomVerify = (ident: string): InvocationListener => { } if (setCustomVerify.isNull() || getPskIdentity.isNull()) { - return null; + return new InvocationListener(); } // tslint:disable-next-line:only-arrow-functions variable-name @@ -498,19 +498,19 @@ export const disable = (q: boolean): void => { const job: IJob = { identifier: jobs.identifier(), - invocations: [], - replacements: [], type: "ios-sslpinning-disable", }; + job.invocations = []; + job.replacements = []; // Framework hooks. send(c.blackBright(`Hooking common framework methods`)); afNetworking(job.identifier).forEach((i) => { - job.invocations.push(i); + job.invocations!.push(i); }); nsUrlSession(job.identifier).forEach((i) => { - job.invocations.push(i); + job.invocations!.push(i); }); job.invocations.push(trustKit(job.identifier)); job.invocations.push(cordovaCustomURLConnectionDelegate(job.identifier)); @@ -530,7 +530,8 @@ export const disable = (q: boolean): void => { // iOS 11> send(c.blackBright(`Hooking BoringSSL methods`)); - job.invocations.push(sSLCtxSetCustomVerify(job.identifier)); + sSLCtxSetCustomVerify(job.identifier) + // job.invocations.push(sSLCtxSetCustomVerify(job.identifier)); jobs.add(job); }; diff --git a/agent/src/ios/plist.ts b/agent/src/ios/plist.ts index fe770d77..3b745351 100644 --- a/agent/src/ios/plist.ts +++ b/agent/src/ios/plist.ts @@ -1,4 +1,4 @@ -import { NSMutableDictionary } from "./lib/types"; +import { NSMutableDictionary } from "./lib/types.js"; export const read = (path: string): string => { diff --git a/agent/src/ios/userinterface.ts b/agent/src/ios/userinterface.ts index 5f672721..ee3b032a 100644 --- a/agent/src/ios/userinterface.ts +++ b/agent/src/ios/userinterface.ts @@ -1,8 +1,8 @@ // tslint:disable-next-line:no-var-requires const sc = require("frida-screenshot"); -import { colors as c } from "../lib/color"; -import { IJob } from "../lib/interfaces"; -import * as jobs from "../lib/jobs"; +import { colors as c } from "../lib/color.js"; +import { IJob } from "../lib/interfaces.js"; +import * as jobs from "../lib/jobs.js"; export const screenshot = (): any => { @@ -128,7 +128,11 @@ export const biometricsBypass = (): void => { }); // register the job - policyJob.invocations.push(lacontext1); + if (policyJob.invocations) { + policyJob.invocations.push(lacontext1); + } else { + policyJob.invocations = [ lacontext1 ]; + } jobs.add(policyJob); // -- Sample Swift @@ -186,6 +190,10 @@ export const biometricsBypass = (): void => { }); // register the job - accessControlJob.invocations.push(lacontext2); + if (accessControlJob.invocations) { + accessControlJob.invocations.push(lacontext2); + } else { + accessControlJob.invocations = [ lacontext2 ]; + } jobs.add(accessControlJob); }; diff --git a/agent/src/lib/helpers.ts b/agent/src/lib/helpers.ts index d048cf74..24f1abb6 100644 --- a/agent/src/lib/helpers.ts +++ b/agent/src/lib/helpers.ts @@ -1,9 +1,9 @@ import util from "util"; -import { colors as c } from "./color"; +import { colors as c } from "./color.js"; // sure, TS does not support this, but meh. // https://www.reddit.com/r/typescript/comments/87i59e/beginner_advice_strongly_typed_function_for/ -export function reverseEnumLookup(enumType: T, value: string): string | undefined { +export function reverseEnumLookup(enumType: T, value: string): string { for (const key in enumType) { if (Object.hasOwnProperty.call(enumType, key) && enumType[key] as any === value) { @@ -11,14 +11,14 @@ export function reverseEnumLookup(enumType: T, value: string): string | undef } } - return undefined; + return ""; } // converts a hexstring to a bytearray export const hexStringToBytes = (str: string): Uint8Array => { - const a = []; + var a: number[] = []; for (let i = 0, len = str.length; i < len; i += 2) { - a.push(parseInt(str.substr(i, 2), 16)); + a.push(parseInt(str.substring(i, i+2), 16)); } return new Uint8Array(a); @@ -48,7 +48,7 @@ export const debugDump = (o: any, depth: number = 2): void => { }; // a small helper method to format JSON nicely before printing -function printArgs(args: JSON): string { +function printArgs(args: {[key: string]:object}): string { let printableString: string = " (\n"; for (const arg in args) { printableString += ` ${c.blue(arg)} : ${args[arg]}\n`; diff --git a/agent/src/lib/jobs.ts b/agent/src/lib/jobs.ts index 4cfaca88..9db1885f 100644 --- a/agent/src/lib/jobs.ts +++ b/agent/src/lib/jobs.ts @@ -1,5 +1,5 @@ -import { colors as c } from "./color"; -import { IJob } from "./interfaces"; +import { colors as c } from "./color.js"; +import { IJob } from "./interfaces.js"; // a record of all of the jobs in the current process diff --git a/agent/src/rpc/android.ts b/agent/src/rpc/android.ts index 4aed48ea..82d6797c 100644 --- a/agent/src/rpc/android.ts +++ b/agent/src/rpc/android.ts @@ -1,27 +1,27 @@ -import * as clipboard from "../android/clipboard"; -import * as androidfilesystem from "../android/filesystem"; -import * as heap from "../android/heap"; -import * as hooking from "../android/hooking"; -import * as intent from "../android/intent"; -import * as keystore from "../android/keystore"; -import * as sslpinning from "../android/pinning"; -import * as root from "../android/root"; -import * as androidshell from "../android/shell"; -import * as userinterface from "../android/userinterface"; -import * as proxy from "../android/proxy"; -import * as general from "../android/general"; +import * as clipboard from "../android/clipboard.js"; +import * as androidfilesystem from "../android/filesystem.js"; +import * as heap from "../android/heap.js"; +import * as hooking from "../android/hooking.js"; +import * as intent from "../android/intent.js"; +import * as keystore from "../android/keystore.js"; +import * as sslpinning from "../android/pinning.js"; +import * as root from "../android/root.js"; +import * as androidshell from "../android/shell.js"; +import * as userinterface from "../android/userinterface.js"; +import * as proxy from "../android/proxy.js"; +import * as general from "../android/general.js"; import { IHeapObject, IJavaField, IKeyStoreDetail -} from "../android/lib/interfaces"; +} from "../android/lib/interfaces.js"; import { ICurrentActivityFragment, IExecutedCommand, IKeyStoreEntry -} from "../android/lib/interfaces"; -import { JavaMethodsOverloadsResult } from "../android/lib/types"; +} from "../android/lib/interfaces.js"; +import { JavaMethodsOverloadsResult } from "../android/lib/types.js"; export const android = { // android clipboard diff --git a/agent/src/rpc/environment.ts b/agent/src/rpc/environment.ts index 311d41b3..ee847da4 100644 --- a/agent/src/rpc/environment.ts +++ b/agent/src/rpc/environment.ts @@ -1,4 +1,4 @@ -import * as environment from "../generic/environment"; +import * as environment from "../generic/environment.js"; export const env = { // environment diff --git a/agent/src/rpc/ios.ts b/agent/src/rpc/ios.ts index f590e385..cb5b4912 100644 --- a/agent/src/rpc/ios.ts +++ b/agent/src/rpc/ios.ts @@ -1,21 +1,21 @@ -import * as binary from "../ios/binary"; -import * as binarycookies from "../ios/binarycookies"; -import * as bundles from "../ios/bundles"; -import * as credentialstorage from "../ios/credentialstorage"; -import * as iosfilesystem from "../ios/filesystem"; -import * as heap from "../ios/heap"; -import * as hooking from "../ios/hooking"; -import * as ioscrypto from "../ios/crypto"; -import * as iosjailbreak from "../ios/jailbreak"; -import * as ioskeychain from "../ios/keychain"; -import * as nsuserdefaults from "../ios/nsuserdefaults"; -import * as pasteboard from "../ios/pasteboard"; -import * as sslpinning from "../ios/pinning"; -import * as plist from "../ios/plist"; -import * as userinterface from "../ios/userinterface"; - -import { BundleType } from "../ios/lib/constants"; -import { NSUserDefaults } from "../ios/lib/types"; +import * as binary from "../ios/binary.js"; +import * as binarycookies from "../ios/binarycookies.js"; +import * as bundles from "../ios/bundles.js"; +import * as credentialstorage from "../ios/credentialstorage.js"; +import * as iosfilesystem from "../ios/filesystem.js"; +import * as heap from "../ios/heap.js"; +import * as hooking from "../ios/hooking.js"; +import * as ioscrypto from "../ios/crypto.js"; +import * as iosjailbreak from "../ios/jailbreak.js"; +import * as ioskeychain from "../ios/keychain.js"; +import * as nsuserdefaults from "../ios/nsuserdefaults.js"; +import * as pasteboard from "../ios/pasteboard.js"; +import * as sslpinning from "../ios/pinning.js"; +import * as plist from "../ios/plist.js"; +import * as userinterface from "../ios/userinterface.js"; + +import { BundleType } from "../ios/lib/constants.js"; +import { NSUserDefaults } from "../ios/lib/types.js"; import { IBinaryModuleDictionary, ICredential, @@ -24,7 +24,7 @@ import { IIosCookie, IIosFileSystem, IKeychainItem, -} from "../ios/lib/interfaces"; +} from "../ios/lib/interfaces.js"; export const ios = { @@ -100,7 +100,7 @@ export const ios = { iosKeychainUpdate: (account: string, service: string, newData: string): void => ioskeychain.update(account, service, newData), iosKeychainEmpty: (): void => ioskeychain.empty(), - iosKeychainList: (smartDecode): IKeychainItem[] => ioskeychain.list(smartDecode), + iosKeychainList: (smartDecode: boolean = false): IKeychainItem[] => ioskeychain.list(smartDecode), iosKeychainListRaw: (): void => ioskeychain.listRaw(), // ios nsuserdefaults diff --git a/agent/src/rpc/jobs.ts b/agent/src/rpc/jobs.ts index c4dcd681..8ba8aa7f 100644 --- a/agent/src/rpc/jobs.ts +++ b/agent/src/rpc/jobs.ts @@ -1,4 +1,4 @@ -import * as j from "../lib/jobs"; +import * as j from "../lib/jobs.js"; export const jobs = { // jobs diff --git a/agent/src/rpc/memory.ts b/agent/src/rpc/memory.ts index a925cb81..5c58a9ec 100644 --- a/agent/src/rpc/memory.ts +++ b/agent/src/rpc/memory.ts @@ -1,4 +1,4 @@ -import * as m from "../generic/memory"; +import * as m from "../generic/memory.js"; export const memory = { diff --git a/agent/src/rpc/other.ts b/agent/src/rpc/other.ts index d24eab93..60172737 100644 --- a/agent/src/rpc/other.ts +++ b/agent/src/rpc/other.ts @@ -1,5 +1,5 @@ -import * as custom from "../generic/custom"; -import * as http from "../generic/http"; +import * as custom from "../generic/custom.js"; +import * as http from "../generic/http.js"; export const other = { evaluate: (js: string): void => custom.evaluate(js), diff --git a/agent/tsconfig.json b/agent/tsconfig.json index 4e40fb0a..806ea6fc 100644 --- a/agent/tsconfig.json +++ b/agent/tsconfig.json @@ -5,8 +5,10 @@ "allowJs": true, "noEmit": true, "strict": true, + "module": "Node16", "esModuleInterop": true, "noImplicitAny": false, + "moduleResolution": "node16", "strictNullChecks": false } }