├── .gitignore ├── README.md ├── icon.png ├── index.js ├── info.plist ├── package-lock.json ├── package.json └── scripts ├── block.js ├── checksum.js ├── config.js ├── convert.js ├── ens.js ├── gas-price.js ├── token.js ├── tx.js ├── unit.js └── utils └── getProvider.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | 3 | Session.vim 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Alfreth 2 | 3 | An [Alfred](https://www.alfredapp.com/) workflow with Ethereum utils. 4 | 5 | Uses [Alfy](https://github.com/sindresorhus/alfy) to integrate Alfred + Node.js. 6 | 7 | #### Install 8 | 9 | ``` 10 | $ npm install --global alfreth 11 | ``` 12 | 13 | Requires [Node.js](https://nodejs.org/) 8+ and the [Alfred Powerpack](https://www.alfredapp.com/powerpack/). 14 | 15 | #### Usage 16 | 17 | In Alfred, type `eth`, followed by a command. Commands may require additional parameters. 18 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eternauta1337/alfreth/f98515715112b6e44add8acaeef1d8ad3db7b4d1/icon.png -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const alfy = require('alfy'); 2 | 3 | let scripts = [ 4 | require('./scripts/unit'), 5 | require('./scripts/convert'), 6 | require('./scripts/gas-price'), 7 | require('./scripts/block'), 8 | require('./scripts/config'), 9 | require('./scripts/ens'), 10 | require('./scripts/token'), 11 | require('./scripts/checksum'), 12 | require('./scripts/tx'), 13 | ]; 14 | 15 | (async () => { 16 | if (!alfy.input) { 17 | return; 18 | } 19 | 20 | // Input fully encloses the keyword of a script => run the script 21 | let script = scripts.find(script => alfy.input.includes(script.keyword)); 22 | if (script) { 23 | const args = alfy.input.split(' ').filter(token => token !== script.keyword); 24 | await script.run(alfy, args); 25 | 26 | return; 27 | } 28 | 29 | // Input is 'help' => describe all scripts 30 | if (alfy.input === 'help') { 31 | const results = scripts.map(script => { 32 | return { 33 | title: script.keyword + ' ' + script.syntax, 34 | subtitle: script.description, 35 | } 36 | }); 37 | 38 | alfy.output(results); 39 | 40 | return; 41 | } 42 | 43 | // The keyword of a script fully encloses input => show script description 44 | script = scripts.find(script => script.keyword.includes(alfy.input)); 45 | if (script) { 46 | alfy.output([{ 47 | title: script.keyword + ' ' + script.syntax, 48 | subtitle: script.description, 49 | }]); 50 | 51 | return; 52 | } 53 | })(); 54 | -------------------------------------------------------------------------------- /info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | bundleid 6 | the.ethernaut.eth 7 | category 8 | Productivity 9 | connections 10 | 11 | BDC8D248-F15A-4E9F-AFFE-F2BC739AF898 12 | 13 | 14 | destinationuid 15 | 89CDF97A-72E7-41F4-BFAA-96C048D1D74C 16 | modifiers 17 | 0 18 | modifiersubtext 19 | 20 | vitoclose 21 | 22 | 23 | 24 | 25 | createdby 26 | ajs 27 | description 28 | Ethereum quick utils 29 | disabled 30 | 31 | name 32 | Alfreth 33 | objects 34 | 35 | 36 | config 37 | 38 | alfredfiltersresults 39 | 40 | alfredfiltersresultsmatchmode 41 | 0 42 | argumenttreatemptyqueryasnil 43 | 44 | argumenttrimmode 45 | 0 46 | argumenttype 47 | 0 48 | escaping 49 | 102 50 | keyword 51 | eth 52 | queuedelaycustom 53 | 3 54 | queuedelayimmediatelyinitially 55 | 56 | queuedelaymode 57 | 0 58 | queuemode 59 | 2 60 | runningsubtext 61 | Running... 62 | script 63 | ./node_modules/.bin/run-node index.js "$@" 64 | scriptargtype 65 | 1 66 | scriptfile 67 | 68 | subtext 69 | Type 'eth help' to see available commands 70 | title 71 | eth <command> 72 | type 73 | 0 74 | withspace 75 | 76 | 77 | type 78 | alfred.workflow.input.scriptfilter 79 | uid 80 | BDC8D248-F15A-4E9F-AFFE-F2BC739AF898 81 | version 82 | 3 83 | 84 | 85 | config 86 | 87 | autopaste 88 | 89 | clipboardtext 90 | {query} 91 | ignoredynamicplaceholders 92 | 93 | transient 94 | 95 | 96 | type 97 | alfred.workflow.output.clipboard 98 | uid 99 | 89CDF97A-72E7-41F4-BFAA-96C048D1D74C 100 | version 101 | 3 102 | 103 | 104 | readme 105 | A util for those everyday things that annoy you as an advanced Ethereum user. 106 | uidata 107 | 108 | 89CDF97A-72E7-41F4-BFAA-96C048D1D74C 109 | 110 | xpos 111 | 215 112 | ypos 113 | 10 114 | 115 | BDC8D248-F15A-4E9F-AFFE-F2BC739AF898 116 | 117 | xpos 118 | 10 119 | ypos 120 | 10 121 | 122 | 123 | variables 124 | 125 | providerUrl 126 | https://mainnet.infura.io/v3/c33bec08ecdbc45e7bfab528c0f25e51b 127 | 128 | version 129 | 0.0.1 130 | webaddress 131 | 132 | 133 | 134 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "alfreth", 3 | "version": "0.0.10", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.10.4", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", 10 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", 11 | "requires": { 12 | "@babel/highlight": "^7.10.4" 13 | } 14 | }, 15 | "@babel/helper-validator-identifier": { 16 | "version": "7.10.4", 17 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", 18 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" 19 | }, 20 | "@babel/highlight": { 21 | "version": "7.10.4", 22 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", 23 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", 24 | "requires": { 25 | "@babel/helper-validator-identifier": "^7.10.4", 26 | "chalk": "^2.0.0", 27 | "js-tokens": "^4.0.0" 28 | }, 29 | "dependencies": { 30 | "ansi-styles": { 31 | "version": "3.2.1", 32 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 33 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 34 | "requires": { 35 | "color-convert": "^1.9.0" 36 | } 37 | }, 38 | "chalk": { 39 | "version": "2.4.2", 40 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 41 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 42 | "requires": { 43 | "ansi-styles": "^3.2.1", 44 | "escape-string-regexp": "^1.0.5", 45 | "supports-color": "^5.3.0" 46 | } 47 | }, 48 | "supports-color": { 49 | "version": "5.5.0", 50 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 51 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 52 | "requires": { 53 | "has-flag": "^3.0.0" 54 | } 55 | } 56 | } 57 | }, 58 | "@ethersproject/abi": { 59 | "version": "5.0.7", 60 | "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", 61 | "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", 62 | "requires": { 63 | "@ethersproject/address": "^5.0.4", 64 | "@ethersproject/bignumber": "^5.0.7", 65 | "@ethersproject/bytes": "^5.0.4", 66 | "@ethersproject/constants": "^5.0.4", 67 | "@ethersproject/hash": "^5.0.4", 68 | "@ethersproject/keccak256": "^5.0.3", 69 | "@ethersproject/logger": "^5.0.5", 70 | "@ethersproject/properties": "^5.0.3", 71 | "@ethersproject/strings": "^5.0.4" 72 | } 73 | }, 74 | "@ethersproject/abstract-provider": { 75 | "version": "5.0.5", 76 | "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.5.tgz", 77 | "integrity": "sha512-i/CjElAkzV7vQBAeoz+IpjGfcFYEP9eD7j3fzZ0fzTq03DO7PPnR+xkEZ1IoDXGwDS+55aLM1xvLDwB/Lx6IOQ==", 78 | "requires": { 79 | "@ethersproject/bignumber": "^5.0.7", 80 | "@ethersproject/bytes": "^5.0.4", 81 | "@ethersproject/logger": "^5.0.5", 82 | "@ethersproject/networks": "^5.0.3", 83 | "@ethersproject/properties": "^5.0.3", 84 | "@ethersproject/transactions": "^5.0.5", 85 | "@ethersproject/web": "^5.0.6" 86 | } 87 | }, 88 | "@ethersproject/abstract-signer": { 89 | "version": "5.0.6", 90 | "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.6.tgz", 91 | "integrity": "sha512-h8TZBX3pL2Xx9tmsRxfWcaaI+FcJFHWvZ/vNvFjLp8zJ0kPD501LKTt2jo44LZ20N3EW68JMoyEmRQ6bpsn+iA==", 92 | "requires": { 93 | "@ethersproject/abstract-provider": "^5.0.4", 94 | "@ethersproject/bignumber": "^5.0.7", 95 | "@ethersproject/bytes": "^5.0.4", 96 | "@ethersproject/logger": "^5.0.5", 97 | "@ethersproject/properties": "^5.0.3" 98 | } 99 | }, 100 | "@ethersproject/address": { 101 | "version": "5.0.5", 102 | "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.5.tgz", 103 | "integrity": "sha512-DpkQ6rwk9jTefrRsJzEm6nhRiJd9pvhn1xN0rw5N/jswXG5r7BLk/GVA0mMAVWAsYfvi2xSc5L41FMox43RYEA==", 104 | "requires": { 105 | "@ethersproject/bignumber": "^5.0.7", 106 | "@ethersproject/bytes": "^5.0.4", 107 | "@ethersproject/keccak256": "^5.0.3", 108 | "@ethersproject/logger": "^5.0.5", 109 | "@ethersproject/rlp": "^5.0.3", 110 | "bn.js": "^4.4.0" 111 | } 112 | }, 113 | "@ethersproject/base64": { 114 | "version": "5.0.4", 115 | "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.4.tgz", 116 | "integrity": "sha512-4KRykQ7BQMeOXfvio1YITwHjxwBzh92UoXIdzxDE1p53CK28bbHPdsPNYo0wl0El7lJAMpT2SOdL0hhbWRnyIA==", 117 | "requires": { 118 | "@ethersproject/bytes": "^5.0.4" 119 | } 120 | }, 121 | "@ethersproject/basex": { 122 | "version": "5.0.4", 123 | "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.0.4.tgz", 124 | "integrity": "sha512-ixIr/kKiAoSzOnSc777AGIOAhKai5Ivqr4HO/Gz+YG+xkfv6kqD6AW4ga9vM20Wwb0QBhh3LoRWTu4V1K+x9Ew==", 125 | "requires": { 126 | "@ethersproject/bytes": "^5.0.4", 127 | "@ethersproject/properties": "^5.0.3" 128 | } 129 | }, 130 | "@ethersproject/bignumber": { 131 | "version": "5.0.8", 132 | "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.8.tgz", 133 | "integrity": "sha512-KXFVAFKS1jdTXYN8BE5Oj+ZfPMh28iRdFeNGBVT6cUFdtiPVqeXqc0ggvBqA3A1VoFFGgM7oAeaagA393aORHA==", 134 | "requires": { 135 | "@ethersproject/bytes": "^5.0.4", 136 | "@ethersproject/logger": "^5.0.5", 137 | "bn.js": "^4.4.0" 138 | } 139 | }, 140 | "@ethersproject/bytes": { 141 | "version": "5.0.5", 142 | "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.5.tgz", 143 | "integrity": "sha512-IEj9HpZB+ACS6cZ+QQMTqmu/cnUK2fYNE6ms/PVxjoBjoxc6HCraLpam1KuRvreMy0i523PLmjN8OYeikRdcUQ==", 144 | "requires": { 145 | "@ethersproject/logger": "^5.0.5" 146 | } 147 | }, 148 | "@ethersproject/constants": { 149 | "version": "5.0.5", 150 | "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.5.tgz", 151 | "integrity": "sha512-foaQVmxp2+ik9FrLUCtVrLZCj4M3Ibgkqvh+Xw/vFRSerkjVSYePApaVE5essxhoSlF1U9oXfWY09QI2AXtgKA==", 152 | "requires": { 153 | "@ethersproject/bignumber": "^5.0.7" 154 | } 155 | }, 156 | "@ethersproject/contracts": { 157 | "version": "5.0.5", 158 | "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.0.5.tgz", 159 | "integrity": "sha512-tFI255lFbmbqMkgnuyhDWHl3yWqttPlReplYuVvDCT/SuvBjLR4ad2uipBlh1fh5X1ipK9ettAoV4S0HKim4Kw==", 160 | "requires": { 161 | "@ethersproject/abi": "^5.0.5", 162 | "@ethersproject/abstract-provider": "^5.0.4", 163 | "@ethersproject/abstract-signer": "^5.0.4", 164 | "@ethersproject/address": "^5.0.4", 165 | "@ethersproject/bignumber": "^5.0.7", 166 | "@ethersproject/bytes": "^5.0.4", 167 | "@ethersproject/constants": "^5.0.4", 168 | "@ethersproject/logger": "^5.0.5", 169 | "@ethersproject/properties": "^5.0.3" 170 | } 171 | }, 172 | "@ethersproject/hash": { 173 | "version": "5.0.5", 174 | "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.5.tgz", 175 | "integrity": "sha512-GpI80/h2HDpfNKpCZoxQJCjOQloGnlD5hM1G+tZe8FQDJhEvFjJoPDuWv+NaYjJfOciKS2Axqc4Q4WamdLoUgg==", 176 | "requires": { 177 | "@ethersproject/bytes": "^5.0.4", 178 | "@ethersproject/keccak256": "^5.0.3", 179 | "@ethersproject/logger": "^5.0.5", 180 | "@ethersproject/strings": "^5.0.4" 181 | } 182 | }, 183 | "@ethersproject/hdnode": { 184 | "version": "5.0.5", 185 | "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.0.5.tgz", 186 | "integrity": "sha512-Ho4HZaK+KijE5adayvjAGusWMnT0mgwGa5hGMBofBOgX9nqiKf6Wxx68SXBGI1/L3rmKo6mlAjxUd8gefs0teQ==", 187 | "requires": { 188 | "@ethersproject/abstract-signer": "^5.0.4", 189 | "@ethersproject/basex": "^5.0.3", 190 | "@ethersproject/bignumber": "^5.0.7", 191 | "@ethersproject/bytes": "^5.0.4", 192 | "@ethersproject/logger": "^5.0.5", 193 | "@ethersproject/pbkdf2": "^5.0.3", 194 | "@ethersproject/properties": "^5.0.3", 195 | "@ethersproject/sha2": "^5.0.3", 196 | "@ethersproject/signing-key": "^5.0.4", 197 | "@ethersproject/strings": "^5.0.4", 198 | "@ethersproject/transactions": "^5.0.5", 199 | "@ethersproject/wordlists": "^5.0.4" 200 | } 201 | }, 202 | "@ethersproject/json-wallets": { 203 | "version": "5.0.7", 204 | "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.0.7.tgz", 205 | "integrity": "sha512-dgOn9JtGgjT28mDXs4LYY2rT4CzS6bG/rxoYuPq3TLHIf6nmvBcr33Fee6RrM/y8UAx4gyIkf6wb2cXsOctvQQ==", 206 | "requires": { 207 | "@ethersproject/abstract-signer": "^5.0.4", 208 | "@ethersproject/address": "^5.0.4", 209 | "@ethersproject/bytes": "^5.0.4", 210 | "@ethersproject/hdnode": "^5.0.4", 211 | "@ethersproject/keccak256": "^5.0.3", 212 | "@ethersproject/logger": "^5.0.5", 213 | "@ethersproject/pbkdf2": "^5.0.3", 214 | "@ethersproject/properties": "^5.0.3", 215 | "@ethersproject/random": "^5.0.3", 216 | "@ethersproject/strings": "^5.0.4", 217 | "@ethersproject/transactions": "^5.0.5", 218 | "aes-js": "3.0.0", 219 | "scrypt-js": "3.0.1" 220 | } 221 | }, 222 | "@ethersproject/keccak256": { 223 | "version": "5.0.4", 224 | "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.4.tgz", 225 | "integrity": "sha512-GNpiOUm9PGUxFNqOxYKDQBM0u68bG9XC9iOulEQ8I0tOx/4qUpgVzvgXL6ugxr0RY554Gz/NQsVqknqPzUcxpQ==", 226 | "requires": { 227 | "@ethersproject/bytes": "^5.0.4", 228 | "js-sha3": "0.5.7" 229 | } 230 | }, 231 | "@ethersproject/logger": { 232 | "version": "5.0.6", 233 | "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.6.tgz", 234 | "integrity": "sha512-FrX0Vnb3JZ1md/7GIZfmJ06XOAA8r3q9Uqt9O5orr4ZiksnbpXKlyDzQtlZ5Yv18RS8CAUbiKH9vwidJg1BPmQ==" 235 | }, 236 | "@ethersproject/networks": { 237 | "version": "5.0.4", 238 | "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.4.tgz", 239 | "integrity": "sha512-/wHDTRms5mpJ09BoDrbNdFWINzONe05wZRgohCXvEv39rrH/Gd/yAnct8wC0RsW3tmFOgjgQxuBvypIxuUynTw==", 240 | "requires": { 241 | "@ethersproject/logger": "^5.0.5" 242 | } 243 | }, 244 | "@ethersproject/pbkdf2": { 245 | "version": "5.0.4", 246 | "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.0.4.tgz", 247 | "integrity": "sha512-9jVBjHXQKfr9+3bkCg01a8Cd1H9e+7Kw3ZMIvAxD0lZtuzrXsJxm1hVwY9KA+PRUvgS/9tTP4viXQYwLAax7zg==", 248 | "requires": { 249 | "@ethersproject/bytes": "^5.0.4", 250 | "@ethersproject/sha2": "^5.0.3" 251 | } 252 | }, 253 | "@ethersproject/properties": { 254 | "version": "5.0.4", 255 | "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.4.tgz", 256 | "integrity": "sha512-UdyX3GqBxFt15B0uSESdDNmhvEbK3ACdDXl2soshoPcneXuTswHDeA0LoPlnaZzhbgk4p6jqb4GMms5C26Qu6A==", 257 | "requires": { 258 | "@ethersproject/logger": "^5.0.5" 259 | } 260 | }, 261 | "@ethersproject/providers": { 262 | "version": "5.0.12", 263 | "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.0.12.tgz", 264 | "integrity": "sha512-bRUEVNth+wGlm2Q0cQprVlixBWumfP9anrgAc3V2CbIh+GKvCwisVO8uRLrZOfOvTNSy6PUJi/Z4D5L+k3NAog==", 265 | "requires": { 266 | "@ethersproject/abstract-provider": "^5.0.4", 267 | "@ethersproject/abstract-signer": "^5.0.4", 268 | "@ethersproject/address": "^5.0.4", 269 | "@ethersproject/basex": "^5.0.3", 270 | "@ethersproject/bignumber": "^5.0.7", 271 | "@ethersproject/bytes": "^5.0.4", 272 | "@ethersproject/constants": "^5.0.4", 273 | "@ethersproject/hash": "^5.0.4", 274 | "@ethersproject/logger": "^5.0.5", 275 | "@ethersproject/networks": "^5.0.3", 276 | "@ethersproject/properties": "^5.0.3", 277 | "@ethersproject/random": "^5.0.3", 278 | "@ethersproject/rlp": "^5.0.3", 279 | "@ethersproject/sha2": "^5.0.3", 280 | "@ethersproject/strings": "^5.0.4", 281 | "@ethersproject/transactions": "^5.0.5", 282 | "@ethersproject/web": "^5.0.6", 283 | "bech32": "1.1.4", 284 | "ws": "7.2.3" 285 | } 286 | }, 287 | "@ethersproject/random": { 288 | "version": "5.0.4", 289 | "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.0.4.tgz", 290 | "integrity": "sha512-AIZJhqs6Ba4/+U3lOjt3QZbP6b/kuuGLJUYFUonAgWmkTHwqsCwYnFvnHKQSUuHbXHvErp7WFXFlztx+yMn3kQ==", 291 | "requires": { 292 | "@ethersproject/bytes": "^5.0.4", 293 | "@ethersproject/logger": "^5.0.5" 294 | } 295 | }, 296 | "@ethersproject/rlp": { 297 | "version": "5.0.4", 298 | "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.4.tgz", 299 | "integrity": "sha512-5qrrZad7VTjofxSsm7Zg/7Dr4ZOln4S2CqiDdOuTv6MBKnXj0CiBojXyuDy52M8O3wxH0CyE924hXWTDV1PQWQ==", 300 | "requires": { 301 | "@ethersproject/bytes": "^5.0.4", 302 | "@ethersproject/logger": "^5.0.5" 303 | } 304 | }, 305 | "@ethersproject/sha2": { 306 | "version": "5.0.4", 307 | "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.0.4.tgz", 308 | "integrity": "sha512-0yFhf1mspxAfWdXXoPtK94adUeu1R7/FzAa+DfEiZTc76sz/vHXf0LSIazoR3znYKFny6haBxME+usbvvEcF3A==", 309 | "requires": { 310 | "@ethersproject/bytes": "^5.0.4", 311 | "@ethersproject/logger": "^5.0.5", 312 | "hash.js": "1.1.3" 313 | }, 314 | "dependencies": { 315 | "hash.js": { 316 | "version": "1.1.3", 317 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", 318 | "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", 319 | "requires": { 320 | "inherits": "^2.0.3", 321 | "minimalistic-assert": "^1.0.0" 322 | } 323 | } 324 | } 325 | }, 326 | "@ethersproject/signing-key": { 327 | "version": "5.0.5", 328 | "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.5.tgz", 329 | "integrity": "sha512-Z1wY7JC1HVO4CvQWY2TyTTuAr8xK3bJijZw1a9G92JEmKdv1j255R/0YLBBcFTl2J65LUjtXynNJ2GbArPGi5g==", 330 | "requires": { 331 | "@ethersproject/bytes": "^5.0.4", 332 | "@ethersproject/logger": "^5.0.5", 333 | "@ethersproject/properties": "^5.0.3", 334 | "elliptic": "6.5.3" 335 | } 336 | }, 337 | "@ethersproject/solidity": { 338 | "version": "5.0.5", 339 | "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.0.5.tgz", 340 | "integrity": "sha512-DMFQ0ouXmNVoKWbGEUFGi8Urli4SJip9jXafQyFHWPRr5oJUqDVkNfwcyC37k+mhBG93k7qrYXCH2xJnGEOxHg==", 341 | "requires": { 342 | "@ethersproject/bignumber": "^5.0.7", 343 | "@ethersproject/bytes": "^5.0.4", 344 | "@ethersproject/keccak256": "^5.0.3", 345 | "@ethersproject/sha2": "^5.0.3", 346 | "@ethersproject/strings": "^5.0.4" 347 | } 348 | }, 349 | "@ethersproject/strings": { 350 | "version": "5.0.5", 351 | "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.5.tgz", 352 | "integrity": "sha512-JED6WaIV00xM/gvj8vSnd+0VWtDYdidTmavFRCTQakqfz+4tDo6Jz5LHgG+dd45h7ah7ykCHW0C7ZXWEDROCXQ==", 353 | "requires": { 354 | "@ethersproject/bytes": "^5.0.4", 355 | "@ethersproject/constants": "^5.0.4", 356 | "@ethersproject/logger": "^5.0.5" 357 | } 358 | }, 359 | "@ethersproject/transactions": { 360 | "version": "5.0.6", 361 | "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.6.tgz", 362 | "integrity": "sha512-htsFhOD+NMBxx676A8ehSuwVV49iqpSB+CkjPZ02tpNew0K6p8g0CZ46Z1ZP946gIHAU80xQ0NACHYrjIUaCFA==", 363 | "requires": { 364 | "@ethersproject/address": "^5.0.4", 365 | "@ethersproject/bignumber": "^5.0.7", 366 | "@ethersproject/bytes": "^5.0.4", 367 | "@ethersproject/constants": "^5.0.4", 368 | "@ethersproject/keccak256": "^5.0.3", 369 | "@ethersproject/logger": "^5.0.5", 370 | "@ethersproject/properties": "^5.0.3", 371 | "@ethersproject/rlp": "^5.0.3", 372 | "@ethersproject/signing-key": "^5.0.4" 373 | } 374 | }, 375 | "@ethersproject/units": { 376 | "version": "5.0.6", 377 | "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.0.6.tgz", 378 | "integrity": "sha512-tsJuy4mipppdmooukRfhXt8fGx9nxvfvG6Xdy0RDm7LzHsjghjwQ69m2bCpId6SDSR1Uq1cQ9irPiUBSyWolUA==", 379 | "requires": { 380 | "@ethersproject/bignumber": "^5.0.7", 381 | "@ethersproject/constants": "^5.0.4", 382 | "@ethersproject/logger": "^5.0.5" 383 | } 384 | }, 385 | "@ethersproject/wallet": { 386 | "version": "5.0.5", 387 | "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.0.5.tgz", 388 | "integrity": "sha512-NbrKmsW3w+5dVOEyVCN5VAAIp3y8ckutW6AV7Lo0Hn8RO9mLT8ZFzLGp4lzgJoxkm+EV8BE+x1N6NdiOgUzRng==", 389 | "requires": { 390 | "@ethersproject/abstract-provider": "^5.0.4", 391 | "@ethersproject/abstract-signer": "^5.0.4", 392 | "@ethersproject/address": "^5.0.4", 393 | "@ethersproject/bignumber": "^5.0.7", 394 | "@ethersproject/bytes": "^5.0.4", 395 | "@ethersproject/hash": "^5.0.4", 396 | "@ethersproject/hdnode": "^5.0.4", 397 | "@ethersproject/json-wallets": "^5.0.6", 398 | "@ethersproject/keccak256": "^5.0.3", 399 | "@ethersproject/logger": "^5.0.5", 400 | "@ethersproject/properties": "^5.0.3", 401 | "@ethersproject/random": "^5.0.3", 402 | "@ethersproject/signing-key": "^5.0.4", 403 | "@ethersproject/transactions": "^5.0.5", 404 | "@ethersproject/wordlists": "^5.0.4" 405 | } 406 | }, 407 | "@ethersproject/web": { 408 | "version": "5.0.9", 409 | "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.9.tgz", 410 | "integrity": "sha512-//QNlv1MSkOII1hv3+HQwWoiVFS+BMVGI0KYeUww4cyrEktnx1QIez5bTSab9s9fWTFaWKNmQNBwMbxAqPuYDw==", 411 | "requires": { 412 | "@ethersproject/base64": "^5.0.3", 413 | "@ethersproject/bytes": "^5.0.4", 414 | "@ethersproject/logger": "^5.0.5", 415 | "@ethersproject/properties": "^5.0.3", 416 | "@ethersproject/strings": "^5.0.4" 417 | } 418 | }, 419 | "@ethersproject/wordlists": { 420 | "version": "5.0.5", 421 | "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.0.5.tgz", 422 | "integrity": "sha512-XA3ycFltVrCTQt04w5nHu3Xq5Z6HjqWsXaAYQHFdqtugyUsIumaO9S5MOwFFuUYTNkZUoT3jCRa/OBS+K4tLfA==", 423 | "requires": { 424 | "@ethersproject/bytes": "^5.0.4", 425 | "@ethersproject/hash": "^5.0.4", 426 | "@ethersproject/logger": "^5.0.5", 427 | "@ethersproject/properties": "^5.0.3", 428 | "@ethersproject/strings": "^5.0.4" 429 | } 430 | }, 431 | "@sindresorhus/is": { 432 | "version": "0.14.0", 433 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", 434 | "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" 435 | }, 436 | "@szmarczak/http-timer": { 437 | "version": "1.1.2", 438 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", 439 | "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", 440 | "requires": { 441 | "defer-to-connect": "^1.0.1" 442 | } 443 | }, 444 | "@types/normalize-package-data": { 445 | "version": "2.4.0", 446 | "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 447 | "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==" 448 | }, 449 | "aes-js": { 450 | "version": "3.0.0", 451 | "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", 452 | "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" 453 | }, 454 | "ajv": { 455 | "version": "6.12.6", 456 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 457 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 458 | "requires": { 459 | "fast-deep-equal": "^3.1.1", 460 | "fast-json-stable-stringify": "^2.0.0", 461 | "json-schema-traverse": "^0.4.1", 462 | "uri-js": "^4.2.2" 463 | } 464 | }, 465 | "alfred-link": { 466 | "version": "0.3.1", 467 | "resolved": "https://registry.npmjs.org/alfred-link/-/alfred-link-0.3.1.tgz", 468 | "integrity": "sha512-EPjh8z+rhl6BhIjrghJV26yd6Chf5rL15ZFq7id0H1Edb0EspYcCS/AylJk7tOMIwSudaVd5MHCg/nrGAJW6Dg==", 469 | "requires": { 470 | "del": "^2.2.2", 471 | "make-dir": "^1.3.0", 472 | "path-exists": "^3.0.0", 473 | "pify": "^2.3.0", 474 | "plist": "^2.0.1", 475 | "read-pkg-up": "^1.0.1", 476 | "resolve-alfred-prefs": "^2.0.0", 477 | "sudo-block": "^1.2.0", 478 | "user-home": "^2.0.0" 479 | }, 480 | "dependencies": { 481 | "read-pkg-up": { 482 | "version": "1.0.1", 483 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", 484 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", 485 | "requires": { 486 | "find-up": "^1.0.0", 487 | "read-pkg": "^1.0.0" 488 | } 489 | } 490 | } 491 | }, 492 | "alfred-notifier": { 493 | "version": "0.2.3", 494 | "resolved": "https://registry.npmjs.org/alfred-notifier/-/alfred-notifier-0.2.3.tgz", 495 | "integrity": "sha512-RB03gRcGKPxiby+1zijbUQslRNfX1uhFCtsudmGd/gaVnTShByAfAKIL+uKNU6VngXjpqCQmeAyUIxdWbsZaAw==", 496 | "requires": { 497 | "cache-conf": "^0.5.0", 498 | "execa": "^0.8.0", 499 | "latest-version": "^3.1.0", 500 | "pify": "^3.0.0", 501 | "plist": "^2.0.1", 502 | "read-pkg": "^2.0.0", 503 | "semver": "^5.3.0" 504 | }, 505 | "dependencies": { 506 | "cache-conf": { 507 | "version": "0.5.0", 508 | "resolved": "https://registry.npmjs.org/cache-conf/-/cache-conf-0.5.0.tgz", 509 | "integrity": "sha1-aBxC7Rdx6tK8I2MqddPNjceUXFk=", 510 | "requires": { 511 | "conf": "^0.12.0", 512 | "pkg-up": "^1.0.0" 513 | } 514 | }, 515 | "conf": { 516 | "version": "0.12.0", 517 | "resolved": "https://registry.npmjs.org/conf/-/conf-0.12.0.tgz", 518 | "integrity": "sha1-hJjFmeJIf+xwNQXRgcETh1uMMQw=", 519 | "requires": { 520 | "dot-prop": "^4.1.0", 521 | "env-paths": "^1.0.0", 522 | "mkdirp": "^0.5.1", 523 | "pkg-up": "^1.0.0" 524 | } 525 | }, 526 | "dot-prop": { 527 | "version": "4.2.1", 528 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", 529 | "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", 530 | "requires": { 531 | "is-obj": "^1.0.0" 532 | } 533 | }, 534 | "execa": { 535 | "version": "0.8.0", 536 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", 537 | "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", 538 | "requires": { 539 | "cross-spawn": "^5.0.1", 540 | "get-stream": "^3.0.0", 541 | "is-stream": "^1.1.0", 542 | "npm-run-path": "^2.0.0", 543 | "p-finally": "^1.0.0", 544 | "signal-exit": "^3.0.0", 545 | "strip-eof": "^1.0.0" 546 | } 547 | }, 548 | "load-json-file": { 549 | "version": "2.0.0", 550 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 551 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 552 | "requires": { 553 | "graceful-fs": "^4.1.2", 554 | "parse-json": "^2.2.0", 555 | "pify": "^2.0.0", 556 | "strip-bom": "^3.0.0" 557 | }, 558 | "dependencies": { 559 | "pify": { 560 | "version": "2.3.0", 561 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 562 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" 563 | } 564 | } 565 | }, 566 | "path-type": { 567 | "version": "2.0.0", 568 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 569 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 570 | "requires": { 571 | "pify": "^2.0.0" 572 | }, 573 | "dependencies": { 574 | "pify": { 575 | "version": "2.3.0", 576 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 577 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" 578 | } 579 | } 580 | }, 581 | "pify": { 582 | "version": "3.0.0", 583 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 584 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" 585 | }, 586 | "read-pkg": { 587 | "version": "2.0.0", 588 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 589 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 590 | "requires": { 591 | "load-json-file": "^2.0.0", 592 | "normalize-package-data": "^2.3.2", 593 | "path-type": "^2.0.0" 594 | } 595 | }, 596 | "strip-bom": { 597 | "version": "3.0.0", 598 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 599 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" 600 | } 601 | } 602 | }, 603 | "alfy": { 604 | "version": "0.10.0", 605 | "resolved": "https://registry.npmjs.org/alfy/-/alfy-0.10.0.tgz", 606 | "integrity": "sha512-38YpnBNO4wnclQjuqo6HTG2RLtcUO2hCnkf4fViyrBnaFP1UuCXtz5Hg6fj/NQfWCk0c/1L/KNRUOSms6sB4mA==", 607 | "requires": { 608 | "alfred-link": "^0.3.1", 609 | "alfred-notifier": "^0.2.0", 610 | "cache-conf": "^0.6.0", 611 | "clean-stack": "^2.2.0", 612 | "conf": "^5.0.0", 613 | "dot-prop": "^5.1.0", 614 | "esm": "^3.2.18", 615 | "execa": "^2.0.4", 616 | "got": "^9.3.2", 617 | "hook-std": "^2.0.0", 618 | "loud-rejection": "^2.1.0", 619 | "read-pkg-up": "^6.0.0" 620 | } 621 | }, 622 | "ansi-regex": { 623 | "version": "2.1.1", 624 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 625 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 626 | }, 627 | "ansi-styles": { 628 | "version": "2.2.1", 629 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 630 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" 631 | }, 632 | "array-find-index": { 633 | "version": "1.0.2", 634 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", 635 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" 636 | }, 637 | "array-union": { 638 | "version": "1.0.2", 639 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 640 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 641 | "requires": { 642 | "array-uniq": "^1.0.1" 643 | } 644 | }, 645 | "array-uniq": { 646 | "version": "1.0.3", 647 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 648 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" 649 | }, 650 | "arrify": { 651 | "version": "1.0.1", 652 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 653 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" 654 | }, 655 | "axios": { 656 | "version": "0.21.0", 657 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz", 658 | "integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==", 659 | "requires": { 660 | "follow-redirects": "^1.10.0" 661 | } 662 | }, 663 | "balanced-match": { 664 | "version": "1.0.0", 665 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 666 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 667 | }, 668 | "base64-js": { 669 | "version": "1.2.0", 670 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", 671 | "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=" 672 | }, 673 | "bech32": { 674 | "version": "1.1.4", 675 | "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", 676 | "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" 677 | }, 678 | "big-integer": { 679 | "version": "1.6.48", 680 | "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", 681 | "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" 682 | }, 683 | "bn.js": { 684 | "version": "4.11.9", 685 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 686 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" 687 | }, 688 | "bplist-parser": { 689 | "version": "0.1.1", 690 | "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", 691 | "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", 692 | "requires": { 693 | "big-integer": "^1.6.7" 694 | } 695 | }, 696 | "brace-expansion": { 697 | "version": "1.1.11", 698 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 699 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 700 | "requires": { 701 | "balanced-match": "^1.0.0", 702 | "concat-map": "0.0.1" 703 | } 704 | }, 705 | "brorand": { 706 | "version": "1.1.0", 707 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 708 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" 709 | }, 710 | "cache-conf": { 711 | "version": "0.6.0", 712 | "resolved": "https://registry.npmjs.org/cache-conf/-/cache-conf-0.6.0.tgz", 713 | "integrity": "sha1-IHpwu1tH5iHnI73bI/4gwOGuLLw=", 714 | "requires": { 715 | "conf": "^1.2.0", 716 | "pkg-up": "^1.0.0" 717 | }, 718 | "dependencies": { 719 | "conf": { 720 | "version": "1.4.0", 721 | "resolved": "https://registry.npmjs.org/conf/-/conf-1.4.0.tgz", 722 | "integrity": "sha512-bzlVWS2THbMetHqXKB8ypsXN4DQ/1qopGwNJi1eYbpwesJcd86FBjFciCQX/YwAhp9bM7NVnPFqZ5LpV7gP0Dg==", 723 | "requires": { 724 | "dot-prop": "^4.1.0", 725 | "env-paths": "^1.0.0", 726 | "make-dir": "^1.0.0", 727 | "pkg-up": "^2.0.0", 728 | "write-file-atomic": "^2.3.0" 729 | }, 730 | "dependencies": { 731 | "pkg-up": { 732 | "version": "2.0.0", 733 | "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", 734 | "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", 735 | "requires": { 736 | "find-up": "^2.1.0" 737 | } 738 | } 739 | } 740 | }, 741 | "dot-prop": { 742 | "version": "4.2.1", 743 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", 744 | "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", 745 | "requires": { 746 | "is-obj": "^1.0.0" 747 | } 748 | }, 749 | "find-up": { 750 | "version": "2.1.0", 751 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 752 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 753 | "requires": { 754 | "locate-path": "^2.0.0" 755 | } 756 | } 757 | } 758 | }, 759 | "cacheable-request": { 760 | "version": "6.1.0", 761 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", 762 | "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", 763 | "requires": { 764 | "clone-response": "^1.0.2", 765 | "get-stream": "^5.1.0", 766 | "http-cache-semantics": "^4.0.0", 767 | "keyv": "^3.0.0", 768 | "lowercase-keys": "^2.0.0", 769 | "normalize-url": "^4.1.0", 770 | "responselike": "^1.0.2" 771 | }, 772 | "dependencies": { 773 | "get-stream": { 774 | "version": "5.2.0", 775 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 776 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 777 | "requires": { 778 | "pump": "^3.0.0" 779 | } 780 | }, 781 | "lowercase-keys": { 782 | "version": "2.0.0", 783 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 784 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" 785 | } 786 | } 787 | }, 788 | "capture-stack-trace": { 789 | "version": "1.0.1", 790 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", 791 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" 792 | }, 793 | "chalk": { 794 | "version": "1.1.3", 795 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 796 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 797 | "requires": { 798 | "ansi-styles": "^2.2.1", 799 | "escape-string-regexp": "^1.0.2", 800 | "has-ansi": "^2.0.0", 801 | "strip-ansi": "^3.0.0", 802 | "supports-color": "^2.0.0" 803 | } 804 | }, 805 | "clean-stack": { 806 | "version": "2.2.0", 807 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 808 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" 809 | }, 810 | "clone-response": { 811 | "version": "1.0.2", 812 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 813 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 814 | "requires": { 815 | "mimic-response": "^1.0.0" 816 | } 817 | }, 818 | "color-convert": { 819 | "version": "1.9.3", 820 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 821 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 822 | "requires": { 823 | "color-name": "1.1.3" 824 | } 825 | }, 826 | "color-name": { 827 | "version": "1.1.3", 828 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 829 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 830 | }, 831 | "concat-map": { 832 | "version": "0.0.1", 833 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 834 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 835 | }, 836 | "conf": { 837 | "version": "5.0.0", 838 | "resolved": "https://registry.npmjs.org/conf/-/conf-5.0.0.tgz", 839 | "integrity": "sha512-lRNyt+iRD4plYaOSVTxu1zPWpaH0EOxgFIR1l3mpC/DGZ7XzhoGFMKmbl54LAgXcSu6knqWgOwdINkqm58N85A==", 840 | "requires": { 841 | "ajv": "^6.10.0", 842 | "dot-prop": "^5.0.0", 843 | "env-paths": "^2.2.0", 844 | "json-schema-typed": "^7.0.0", 845 | "make-dir": "^3.0.0", 846 | "pkg-up": "^3.0.1", 847 | "write-file-atomic": "^3.0.0" 848 | }, 849 | "dependencies": { 850 | "env-paths": { 851 | "version": "2.2.0", 852 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", 853 | "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==" 854 | }, 855 | "find-up": { 856 | "version": "3.0.0", 857 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 858 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 859 | "requires": { 860 | "locate-path": "^3.0.0" 861 | } 862 | }, 863 | "locate-path": { 864 | "version": "3.0.0", 865 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 866 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 867 | "requires": { 868 | "p-locate": "^3.0.0", 869 | "path-exists": "^3.0.0" 870 | } 871 | }, 872 | "make-dir": { 873 | "version": "3.1.0", 874 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 875 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 876 | "requires": { 877 | "semver": "^6.0.0" 878 | } 879 | }, 880 | "p-limit": { 881 | "version": "2.3.0", 882 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 883 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 884 | "requires": { 885 | "p-try": "^2.0.0" 886 | } 887 | }, 888 | "p-locate": { 889 | "version": "3.0.0", 890 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 891 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 892 | "requires": { 893 | "p-limit": "^2.0.0" 894 | } 895 | }, 896 | "p-try": { 897 | "version": "2.2.0", 898 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 899 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 900 | }, 901 | "pkg-up": { 902 | "version": "3.1.0", 903 | "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", 904 | "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", 905 | "requires": { 906 | "find-up": "^3.0.0" 907 | } 908 | }, 909 | "semver": { 910 | "version": "6.3.0", 911 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 912 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 913 | }, 914 | "write-file-atomic": { 915 | "version": "3.0.3", 916 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", 917 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 918 | "requires": { 919 | "imurmurhash": "^0.1.4", 920 | "is-typedarray": "^1.0.0", 921 | "signal-exit": "^3.0.2", 922 | "typedarray-to-buffer": "^3.1.5" 923 | } 924 | } 925 | } 926 | }, 927 | "create-error-class": { 928 | "version": "3.0.2", 929 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", 930 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", 931 | "requires": { 932 | "capture-stack-trace": "^1.0.0" 933 | } 934 | }, 935 | "cross-spawn": { 936 | "version": "5.1.0", 937 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 938 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 939 | "requires": { 940 | "lru-cache": "^4.0.1", 941 | "shebang-command": "^1.2.0", 942 | "which": "^1.2.9" 943 | } 944 | }, 945 | "currently-unhandled": { 946 | "version": "0.4.1", 947 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", 948 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", 949 | "requires": { 950 | "array-find-index": "^1.0.1" 951 | } 952 | }, 953 | "decompress-response": { 954 | "version": "3.3.0", 955 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 956 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", 957 | "requires": { 958 | "mimic-response": "^1.0.0" 959 | } 960 | }, 961 | "deep-extend": { 962 | "version": "0.6.0", 963 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 964 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 965 | }, 966 | "defer-to-connect": { 967 | "version": "1.1.3", 968 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", 969 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" 970 | }, 971 | "del": { 972 | "version": "2.2.2", 973 | "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", 974 | "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", 975 | "requires": { 976 | "globby": "^5.0.0", 977 | "is-path-cwd": "^1.0.0", 978 | "is-path-in-cwd": "^1.0.0", 979 | "object-assign": "^4.0.1", 980 | "pify": "^2.0.0", 981 | "pinkie-promise": "^2.0.0", 982 | "rimraf": "^2.2.8" 983 | } 984 | }, 985 | "dot-prop": { 986 | "version": "5.3.0", 987 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", 988 | "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", 989 | "requires": { 990 | "is-obj": "^2.0.0" 991 | }, 992 | "dependencies": { 993 | "is-obj": { 994 | "version": "2.0.0", 995 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", 996 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" 997 | } 998 | } 999 | }, 1000 | "duplexer3": { 1001 | "version": "0.1.4", 1002 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 1003 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" 1004 | }, 1005 | "elliptic": { 1006 | "version": "6.5.3", 1007 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", 1008 | "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", 1009 | "requires": { 1010 | "bn.js": "^4.4.0", 1011 | "brorand": "^1.0.1", 1012 | "hash.js": "^1.0.0", 1013 | "hmac-drbg": "^1.0.0", 1014 | "inherits": "^2.0.1", 1015 | "minimalistic-assert": "^1.0.0", 1016 | "minimalistic-crypto-utils": "^1.0.0" 1017 | } 1018 | }, 1019 | "end-of-stream": { 1020 | "version": "1.4.4", 1021 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1022 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1023 | "requires": { 1024 | "once": "^1.4.0" 1025 | } 1026 | }, 1027 | "env-paths": { 1028 | "version": "1.0.0", 1029 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", 1030 | "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=" 1031 | }, 1032 | "error-ex": { 1033 | "version": "1.3.2", 1034 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1035 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1036 | "requires": { 1037 | "is-arrayish": "^0.2.1" 1038 | } 1039 | }, 1040 | "escape-string-regexp": { 1041 | "version": "1.0.5", 1042 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1043 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 1044 | }, 1045 | "esm": { 1046 | "version": "3.2.25", 1047 | "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", 1048 | "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" 1049 | }, 1050 | "ethers": { 1051 | "version": "5.0.17", 1052 | "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.0.17.tgz", 1053 | "integrity": "sha512-E0MrwCttHgdD6Irfa0B9cNdX0VoWVWLusaj51+EQalkl3pqhV2zGMPncfhYbc9+4nD2u81dbX8Pk9UN5kh/jew==", 1054 | "requires": { 1055 | "@ethersproject/abi": "5.0.7", 1056 | "@ethersproject/abstract-provider": "5.0.5", 1057 | "@ethersproject/abstract-signer": "5.0.6", 1058 | "@ethersproject/address": "5.0.5", 1059 | "@ethersproject/base64": "5.0.4", 1060 | "@ethersproject/basex": "5.0.4", 1061 | "@ethersproject/bignumber": "5.0.8", 1062 | "@ethersproject/bytes": "5.0.5", 1063 | "@ethersproject/constants": "5.0.5", 1064 | "@ethersproject/contracts": "5.0.5", 1065 | "@ethersproject/hash": "5.0.5", 1066 | "@ethersproject/hdnode": "5.0.5", 1067 | "@ethersproject/json-wallets": "5.0.7", 1068 | "@ethersproject/keccak256": "5.0.4", 1069 | "@ethersproject/logger": "5.0.6", 1070 | "@ethersproject/networks": "5.0.4", 1071 | "@ethersproject/pbkdf2": "5.0.4", 1072 | "@ethersproject/properties": "5.0.4", 1073 | "@ethersproject/providers": "5.0.12", 1074 | "@ethersproject/random": "5.0.4", 1075 | "@ethersproject/rlp": "5.0.4", 1076 | "@ethersproject/sha2": "5.0.4", 1077 | "@ethersproject/signing-key": "5.0.5", 1078 | "@ethersproject/solidity": "5.0.5", 1079 | "@ethersproject/strings": "5.0.5", 1080 | "@ethersproject/transactions": "5.0.6", 1081 | "@ethersproject/units": "5.0.6", 1082 | "@ethersproject/wallet": "5.0.5", 1083 | "@ethersproject/web": "5.0.9", 1084 | "@ethersproject/wordlists": "5.0.5" 1085 | } 1086 | }, 1087 | "execa": { 1088 | "version": "2.1.0", 1089 | "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz", 1090 | "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==", 1091 | "requires": { 1092 | "cross-spawn": "^7.0.0", 1093 | "get-stream": "^5.0.0", 1094 | "is-stream": "^2.0.0", 1095 | "merge-stream": "^2.0.0", 1096 | "npm-run-path": "^3.0.0", 1097 | "onetime": "^5.1.0", 1098 | "p-finally": "^2.0.0", 1099 | "signal-exit": "^3.0.2", 1100 | "strip-final-newline": "^2.0.0" 1101 | }, 1102 | "dependencies": { 1103 | "cross-spawn": { 1104 | "version": "7.0.3", 1105 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1106 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1107 | "requires": { 1108 | "path-key": "^3.1.0", 1109 | "shebang-command": "^2.0.0", 1110 | "which": "^2.0.1" 1111 | } 1112 | }, 1113 | "get-stream": { 1114 | "version": "5.2.0", 1115 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 1116 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1117 | "requires": { 1118 | "pump": "^3.0.0" 1119 | } 1120 | }, 1121 | "is-stream": { 1122 | "version": "2.0.0", 1123 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", 1124 | "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" 1125 | }, 1126 | "npm-run-path": { 1127 | "version": "3.1.0", 1128 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", 1129 | "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", 1130 | "requires": { 1131 | "path-key": "^3.0.0" 1132 | } 1133 | }, 1134 | "p-finally": { 1135 | "version": "2.0.1", 1136 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", 1137 | "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==" 1138 | }, 1139 | "path-key": { 1140 | "version": "3.1.1", 1141 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1142 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" 1143 | }, 1144 | "shebang-command": { 1145 | "version": "2.0.0", 1146 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1147 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1148 | "requires": { 1149 | "shebang-regex": "^3.0.0" 1150 | } 1151 | }, 1152 | "shebang-regex": { 1153 | "version": "3.0.0", 1154 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1155 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" 1156 | }, 1157 | "which": { 1158 | "version": "2.0.2", 1159 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1160 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1161 | "requires": { 1162 | "isexe": "^2.0.0" 1163 | } 1164 | } 1165 | } 1166 | }, 1167 | "fast-deep-equal": { 1168 | "version": "3.1.3", 1169 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1170 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 1171 | }, 1172 | "fast-json-stable-stringify": { 1173 | "version": "2.1.0", 1174 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1175 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 1176 | }, 1177 | "find-up": { 1178 | "version": "1.1.2", 1179 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 1180 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 1181 | "requires": { 1182 | "path-exists": "^2.0.0", 1183 | "pinkie-promise": "^2.0.0" 1184 | }, 1185 | "dependencies": { 1186 | "path-exists": { 1187 | "version": "2.1.0", 1188 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 1189 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 1190 | "requires": { 1191 | "pinkie-promise": "^2.0.0" 1192 | } 1193 | } 1194 | } 1195 | }, 1196 | "follow-redirects": { 1197 | "version": "1.13.0", 1198 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", 1199 | "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" 1200 | }, 1201 | "fs.realpath": { 1202 | "version": "1.0.0", 1203 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1204 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 1205 | }, 1206 | "get-stream": { 1207 | "version": "3.0.0", 1208 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 1209 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" 1210 | }, 1211 | "glob": { 1212 | "version": "7.1.6", 1213 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1214 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1215 | "requires": { 1216 | "fs.realpath": "^1.0.0", 1217 | "inflight": "^1.0.4", 1218 | "inherits": "2", 1219 | "minimatch": "^3.0.4", 1220 | "once": "^1.3.0", 1221 | "path-is-absolute": "^1.0.0" 1222 | } 1223 | }, 1224 | "globby": { 1225 | "version": "5.0.0", 1226 | "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", 1227 | "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", 1228 | "requires": { 1229 | "array-union": "^1.0.1", 1230 | "arrify": "^1.0.0", 1231 | "glob": "^7.0.3", 1232 | "object-assign": "^4.0.1", 1233 | "pify": "^2.0.0", 1234 | "pinkie-promise": "^2.0.0" 1235 | } 1236 | }, 1237 | "got": { 1238 | "version": "9.6.0", 1239 | "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", 1240 | "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", 1241 | "requires": { 1242 | "@sindresorhus/is": "^0.14.0", 1243 | "@szmarczak/http-timer": "^1.1.2", 1244 | "cacheable-request": "^6.0.0", 1245 | "decompress-response": "^3.3.0", 1246 | "duplexer3": "^0.1.4", 1247 | "get-stream": "^4.1.0", 1248 | "lowercase-keys": "^1.0.1", 1249 | "mimic-response": "^1.0.1", 1250 | "p-cancelable": "^1.0.0", 1251 | "to-readable-stream": "^1.0.0", 1252 | "url-parse-lax": "^3.0.0" 1253 | }, 1254 | "dependencies": { 1255 | "get-stream": { 1256 | "version": "4.1.0", 1257 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 1258 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 1259 | "requires": { 1260 | "pump": "^3.0.0" 1261 | } 1262 | }, 1263 | "prepend-http": { 1264 | "version": "2.0.0", 1265 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", 1266 | "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" 1267 | }, 1268 | "url-parse-lax": { 1269 | "version": "3.0.0", 1270 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", 1271 | "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", 1272 | "requires": { 1273 | "prepend-http": "^2.0.0" 1274 | } 1275 | } 1276 | } 1277 | }, 1278 | "graceful-fs": { 1279 | "version": "4.2.4", 1280 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 1281 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" 1282 | }, 1283 | "has-ansi": { 1284 | "version": "2.0.0", 1285 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1286 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1287 | "requires": { 1288 | "ansi-regex": "^2.0.0" 1289 | } 1290 | }, 1291 | "has-flag": { 1292 | "version": "3.0.0", 1293 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1294 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 1295 | }, 1296 | "hash.js": { 1297 | "version": "1.1.7", 1298 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 1299 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 1300 | "requires": { 1301 | "inherits": "^2.0.3", 1302 | "minimalistic-assert": "^1.0.1" 1303 | } 1304 | }, 1305 | "hmac-drbg": { 1306 | "version": "1.0.1", 1307 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 1308 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 1309 | "requires": { 1310 | "hash.js": "^1.0.3", 1311 | "minimalistic-assert": "^1.0.0", 1312 | "minimalistic-crypto-utils": "^1.0.1" 1313 | } 1314 | }, 1315 | "hook-std": { 1316 | "version": "2.0.0", 1317 | "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", 1318 | "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==" 1319 | }, 1320 | "hosted-git-info": { 1321 | "version": "2.8.8", 1322 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", 1323 | "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" 1324 | }, 1325 | "http-cache-semantics": { 1326 | "version": "4.1.0", 1327 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 1328 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" 1329 | }, 1330 | "imurmurhash": { 1331 | "version": "0.1.4", 1332 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1333 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" 1334 | }, 1335 | "inflight": { 1336 | "version": "1.0.6", 1337 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1338 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1339 | "requires": { 1340 | "once": "^1.3.0", 1341 | "wrappy": "1" 1342 | } 1343 | }, 1344 | "inherits": { 1345 | "version": "2.0.4", 1346 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1347 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1348 | }, 1349 | "ini": { 1350 | "version": "1.3.5", 1351 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 1352 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" 1353 | }, 1354 | "is-arrayish": { 1355 | "version": "0.2.1", 1356 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1357 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" 1358 | }, 1359 | "is-docker": { 1360 | "version": "1.1.0", 1361 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-1.1.0.tgz", 1362 | "integrity": "sha1-8EN01O7lMQ6ajhE78UlUEeRhdqE=" 1363 | }, 1364 | "is-obj": { 1365 | "version": "1.0.1", 1366 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 1367 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" 1368 | }, 1369 | "is-path-cwd": { 1370 | "version": "1.0.0", 1371 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", 1372 | "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" 1373 | }, 1374 | "is-path-in-cwd": { 1375 | "version": "1.0.1", 1376 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", 1377 | "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", 1378 | "requires": { 1379 | "is-path-inside": "^1.0.0" 1380 | } 1381 | }, 1382 | "is-path-inside": { 1383 | "version": "1.0.1", 1384 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", 1385 | "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", 1386 | "requires": { 1387 | "path-is-inside": "^1.0.1" 1388 | } 1389 | }, 1390 | "is-redirect": { 1391 | "version": "1.0.0", 1392 | "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", 1393 | "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" 1394 | }, 1395 | "is-retry-allowed": { 1396 | "version": "1.2.0", 1397 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", 1398 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" 1399 | }, 1400 | "is-root": { 1401 | "version": "1.0.0", 1402 | "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", 1403 | "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=" 1404 | }, 1405 | "is-stream": { 1406 | "version": "1.1.0", 1407 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1408 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" 1409 | }, 1410 | "is-typedarray": { 1411 | "version": "1.0.0", 1412 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1413 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 1414 | }, 1415 | "is-utf8": { 1416 | "version": "0.2.1", 1417 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1418 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" 1419 | }, 1420 | "isexe": { 1421 | "version": "2.0.0", 1422 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1423 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 1424 | }, 1425 | "js-sha3": { 1426 | "version": "0.5.7", 1427 | "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", 1428 | "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" 1429 | }, 1430 | "js-tokens": { 1431 | "version": "4.0.0", 1432 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1433 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1434 | }, 1435 | "json-buffer": { 1436 | "version": "3.0.0", 1437 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", 1438 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" 1439 | }, 1440 | "json-parse-even-better-errors": { 1441 | "version": "2.3.1", 1442 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1443 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 1444 | }, 1445 | "json-schema-traverse": { 1446 | "version": "0.4.1", 1447 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1448 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1449 | }, 1450 | "json-schema-typed": { 1451 | "version": "7.0.3", 1452 | "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", 1453 | "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==" 1454 | }, 1455 | "keyv": { 1456 | "version": "3.1.0", 1457 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 1458 | "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", 1459 | "requires": { 1460 | "json-buffer": "3.0.0" 1461 | } 1462 | }, 1463 | "latest-version": { 1464 | "version": "3.1.0", 1465 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", 1466 | "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", 1467 | "requires": { 1468 | "package-json": "^4.0.0" 1469 | } 1470 | }, 1471 | "lines-and-columns": { 1472 | "version": "1.1.6", 1473 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", 1474 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" 1475 | }, 1476 | "load-json-file": { 1477 | "version": "1.1.0", 1478 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", 1479 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", 1480 | "requires": { 1481 | "graceful-fs": "^4.1.2", 1482 | "parse-json": "^2.2.0", 1483 | "pify": "^2.0.0", 1484 | "pinkie-promise": "^2.0.0", 1485 | "strip-bom": "^2.0.0" 1486 | } 1487 | }, 1488 | "locate-path": { 1489 | "version": "2.0.0", 1490 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1491 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1492 | "requires": { 1493 | "p-locate": "^2.0.0", 1494 | "path-exists": "^3.0.0" 1495 | } 1496 | }, 1497 | "loud-rejection": { 1498 | "version": "2.2.0", 1499 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-2.2.0.tgz", 1500 | "integrity": "sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ==", 1501 | "requires": { 1502 | "currently-unhandled": "^0.4.1", 1503 | "signal-exit": "^3.0.2" 1504 | } 1505 | }, 1506 | "lowercase-keys": { 1507 | "version": "1.0.1", 1508 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 1509 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" 1510 | }, 1511 | "lru-cache": { 1512 | "version": "4.1.5", 1513 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 1514 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 1515 | "requires": { 1516 | "pseudomap": "^1.0.2", 1517 | "yallist": "^2.1.2" 1518 | } 1519 | }, 1520 | "make-dir": { 1521 | "version": "1.3.0", 1522 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 1523 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", 1524 | "requires": { 1525 | "pify": "^3.0.0" 1526 | }, 1527 | "dependencies": { 1528 | "pify": { 1529 | "version": "3.0.0", 1530 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1531 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" 1532 | } 1533 | } 1534 | }, 1535 | "merge-stream": { 1536 | "version": "2.0.0", 1537 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1538 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" 1539 | }, 1540 | "mimic-fn": { 1541 | "version": "2.1.0", 1542 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1543 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" 1544 | }, 1545 | "mimic-response": { 1546 | "version": "1.0.1", 1547 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 1548 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 1549 | }, 1550 | "minimalistic-assert": { 1551 | "version": "1.0.1", 1552 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 1553 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" 1554 | }, 1555 | "minimalistic-crypto-utils": { 1556 | "version": "1.0.1", 1557 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 1558 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" 1559 | }, 1560 | "minimatch": { 1561 | "version": "3.0.4", 1562 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1563 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1564 | "requires": { 1565 | "brace-expansion": "^1.1.7" 1566 | } 1567 | }, 1568 | "minimist": { 1569 | "version": "1.2.5", 1570 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1571 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 1572 | }, 1573 | "mkdirp": { 1574 | "version": "0.5.5", 1575 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1576 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1577 | "requires": { 1578 | "minimist": "^1.2.5" 1579 | } 1580 | }, 1581 | "normalize-package-data": { 1582 | "version": "2.5.0", 1583 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 1584 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 1585 | "requires": { 1586 | "hosted-git-info": "^2.1.4", 1587 | "resolve": "^1.10.0", 1588 | "semver": "2 || 3 || 4 || 5", 1589 | "validate-npm-package-license": "^3.0.1" 1590 | } 1591 | }, 1592 | "normalize-url": { 1593 | "version": "4.5.0", 1594 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", 1595 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" 1596 | }, 1597 | "npm-run-path": { 1598 | "version": "2.0.2", 1599 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 1600 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 1601 | "requires": { 1602 | "path-key": "^2.0.0" 1603 | } 1604 | }, 1605 | "object-assign": { 1606 | "version": "4.1.1", 1607 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1608 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1609 | }, 1610 | "once": { 1611 | "version": "1.4.0", 1612 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1613 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1614 | "requires": { 1615 | "wrappy": "1" 1616 | } 1617 | }, 1618 | "onetime": { 1619 | "version": "5.1.2", 1620 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1621 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1622 | "requires": { 1623 | "mimic-fn": "^2.1.0" 1624 | } 1625 | }, 1626 | "os-homedir": { 1627 | "version": "1.0.2", 1628 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1629 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" 1630 | }, 1631 | "p-cancelable": { 1632 | "version": "1.1.0", 1633 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", 1634 | "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" 1635 | }, 1636 | "p-finally": { 1637 | "version": "1.0.0", 1638 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 1639 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" 1640 | }, 1641 | "p-limit": { 1642 | "version": "1.3.0", 1643 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 1644 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 1645 | "requires": { 1646 | "p-try": "^1.0.0" 1647 | } 1648 | }, 1649 | "p-locate": { 1650 | "version": "2.0.0", 1651 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 1652 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 1653 | "requires": { 1654 | "p-limit": "^1.1.0" 1655 | } 1656 | }, 1657 | "p-try": { 1658 | "version": "1.0.0", 1659 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 1660 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" 1661 | }, 1662 | "package-json": { 1663 | "version": "4.0.1", 1664 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", 1665 | "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", 1666 | "requires": { 1667 | "got": "^6.7.1", 1668 | "registry-auth-token": "^3.0.1", 1669 | "registry-url": "^3.0.3", 1670 | "semver": "^5.1.0" 1671 | }, 1672 | "dependencies": { 1673 | "got": { 1674 | "version": "6.7.1", 1675 | "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", 1676 | "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", 1677 | "requires": { 1678 | "create-error-class": "^3.0.0", 1679 | "duplexer3": "^0.1.4", 1680 | "get-stream": "^3.0.0", 1681 | "is-redirect": "^1.0.0", 1682 | "is-retry-allowed": "^1.0.0", 1683 | "is-stream": "^1.0.0", 1684 | "lowercase-keys": "^1.0.0", 1685 | "safe-buffer": "^5.0.1", 1686 | "timed-out": "^4.0.0", 1687 | "unzip-response": "^2.0.1", 1688 | "url-parse-lax": "^1.0.0" 1689 | } 1690 | } 1691 | } 1692 | }, 1693 | "parse-json": { 1694 | "version": "2.2.0", 1695 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 1696 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 1697 | "requires": { 1698 | "error-ex": "^1.2.0" 1699 | } 1700 | }, 1701 | "path-exists": { 1702 | "version": "3.0.0", 1703 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1704 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" 1705 | }, 1706 | "path-is-absolute": { 1707 | "version": "1.0.1", 1708 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1709 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 1710 | }, 1711 | "path-is-inside": { 1712 | "version": "1.0.2", 1713 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1714 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" 1715 | }, 1716 | "path-key": { 1717 | "version": "2.0.1", 1718 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1719 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" 1720 | }, 1721 | "path-parse": { 1722 | "version": "1.0.6", 1723 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1724 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" 1725 | }, 1726 | "path-type": { 1727 | "version": "1.1.0", 1728 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", 1729 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", 1730 | "requires": { 1731 | "graceful-fs": "^4.1.2", 1732 | "pify": "^2.0.0", 1733 | "pinkie-promise": "^2.0.0" 1734 | } 1735 | }, 1736 | "pify": { 1737 | "version": "2.3.0", 1738 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1739 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" 1740 | }, 1741 | "pinkie": { 1742 | "version": "2.0.4", 1743 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1744 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" 1745 | }, 1746 | "pinkie-promise": { 1747 | "version": "2.0.1", 1748 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1749 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1750 | "requires": { 1751 | "pinkie": "^2.0.0" 1752 | } 1753 | }, 1754 | "pkg-up": { 1755 | "version": "1.0.0", 1756 | "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", 1757 | "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", 1758 | "requires": { 1759 | "find-up": "^1.0.0" 1760 | } 1761 | }, 1762 | "plist": { 1763 | "version": "2.1.0", 1764 | "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", 1765 | "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=", 1766 | "requires": { 1767 | "base64-js": "1.2.0", 1768 | "xmlbuilder": "8.2.2", 1769 | "xmldom": "0.1.x" 1770 | } 1771 | }, 1772 | "prepend-http": { 1773 | "version": "1.0.4", 1774 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 1775 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" 1776 | }, 1777 | "pseudomap": { 1778 | "version": "1.0.2", 1779 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 1780 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" 1781 | }, 1782 | "pump": { 1783 | "version": "3.0.0", 1784 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1785 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1786 | "requires": { 1787 | "end-of-stream": "^1.1.0", 1788 | "once": "^1.3.1" 1789 | } 1790 | }, 1791 | "punycode": { 1792 | "version": "2.1.1", 1793 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1794 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 1795 | }, 1796 | "rc": { 1797 | "version": "1.2.8", 1798 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 1799 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 1800 | "requires": { 1801 | "deep-extend": "^0.6.0", 1802 | "ini": "~1.3.0", 1803 | "minimist": "^1.2.0", 1804 | "strip-json-comments": "~2.0.1" 1805 | } 1806 | }, 1807 | "read-pkg": { 1808 | "version": "1.1.0", 1809 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", 1810 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", 1811 | "requires": { 1812 | "load-json-file": "^1.0.0", 1813 | "normalize-package-data": "^2.3.2", 1814 | "path-type": "^1.0.0" 1815 | } 1816 | }, 1817 | "read-pkg-up": { 1818 | "version": "6.0.0", 1819 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-6.0.0.tgz", 1820 | "integrity": "sha512-odtTvLl+EXo1eTsMnoUHRmg/XmXdTkwXVxy4VFE9Kp6cCq7b3l7QMdBndND3eAFzrbSAXC/WCUOQQ9rLjifKZw==", 1821 | "requires": { 1822 | "find-up": "^4.0.0", 1823 | "read-pkg": "^5.1.1", 1824 | "type-fest": "^0.5.0" 1825 | }, 1826 | "dependencies": { 1827 | "find-up": { 1828 | "version": "4.1.0", 1829 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1830 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1831 | "requires": { 1832 | "locate-path": "^5.0.0", 1833 | "path-exists": "^4.0.0" 1834 | } 1835 | }, 1836 | "locate-path": { 1837 | "version": "5.0.0", 1838 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1839 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1840 | "requires": { 1841 | "p-locate": "^4.1.0" 1842 | } 1843 | }, 1844 | "p-limit": { 1845 | "version": "2.3.0", 1846 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1847 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1848 | "requires": { 1849 | "p-try": "^2.0.0" 1850 | } 1851 | }, 1852 | "p-locate": { 1853 | "version": "4.1.0", 1854 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1855 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1856 | "requires": { 1857 | "p-limit": "^2.2.0" 1858 | } 1859 | }, 1860 | "p-try": { 1861 | "version": "2.2.0", 1862 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1863 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 1864 | }, 1865 | "parse-json": { 1866 | "version": "5.1.0", 1867 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", 1868 | "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", 1869 | "requires": { 1870 | "@babel/code-frame": "^7.0.0", 1871 | "error-ex": "^1.3.1", 1872 | "json-parse-even-better-errors": "^2.3.0", 1873 | "lines-and-columns": "^1.1.6" 1874 | } 1875 | }, 1876 | "path-exists": { 1877 | "version": "4.0.0", 1878 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1879 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 1880 | }, 1881 | "read-pkg": { 1882 | "version": "5.2.0", 1883 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", 1884 | "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", 1885 | "requires": { 1886 | "@types/normalize-package-data": "^2.4.0", 1887 | "normalize-package-data": "^2.5.0", 1888 | "parse-json": "^5.0.0", 1889 | "type-fest": "^0.6.0" 1890 | }, 1891 | "dependencies": { 1892 | "type-fest": { 1893 | "version": "0.6.0", 1894 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", 1895 | "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" 1896 | } 1897 | } 1898 | } 1899 | } 1900 | }, 1901 | "registry-auth-token": { 1902 | "version": "3.4.0", 1903 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", 1904 | "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", 1905 | "requires": { 1906 | "rc": "^1.1.6", 1907 | "safe-buffer": "^5.0.1" 1908 | } 1909 | }, 1910 | "registry-url": { 1911 | "version": "3.1.0", 1912 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", 1913 | "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", 1914 | "requires": { 1915 | "rc": "^1.0.1" 1916 | } 1917 | }, 1918 | "resolve": { 1919 | "version": "1.17.0", 1920 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", 1921 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", 1922 | "requires": { 1923 | "path-parse": "^1.0.6" 1924 | } 1925 | }, 1926 | "resolve-alfred-prefs": { 1927 | "version": "2.0.0", 1928 | "resolved": "https://registry.npmjs.org/resolve-alfred-prefs/-/resolve-alfred-prefs-2.0.0.tgz", 1929 | "integrity": "sha512-j2pAIUz8OqESy4F1yUBO86J1imsNmBE1cAptTBLr3IsgbXaaNxf47HXqxgWpLqc/kLhqv3RXr/WAT3l+oWOdsw==", 1930 | "requires": { 1931 | "bplist-parser": "^0.1.1", 1932 | "pify": "^2.3.0", 1933 | "untildify": "^3.0.2", 1934 | "user-home": "^2.0.0" 1935 | } 1936 | }, 1937 | "responselike": { 1938 | "version": "1.0.2", 1939 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", 1940 | "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", 1941 | "requires": { 1942 | "lowercase-keys": "^1.0.0" 1943 | } 1944 | }, 1945 | "rimraf": { 1946 | "version": "2.7.1", 1947 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 1948 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 1949 | "requires": { 1950 | "glob": "^7.1.3" 1951 | } 1952 | }, 1953 | "safe-buffer": { 1954 | "version": "5.2.1", 1955 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1956 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1957 | }, 1958 | "scrypt-js": { 1959 | "version": "3.0.1", 1960 | "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", 1961 | "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" 1962 | }, 1963 | "semver": { 1964 | "version": "5.7.1", 1965 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1966 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1967 | }, 1968 | "shebang-command": { 1969 | "version": "1.2.0", 1970 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1971 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1972 | "requires": { 1973 | "shebang-regex": "^1.0.0" 1974 | } 1975 | }, 1976 | "shebang-regex": { 1977 | "version": "1.0.0", 1978 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1979 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" 1980 | }, 1981 | "signal-exit": { 1982 | "version": "3.0.3", 1983 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 1984 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" 1985 | }, 1986 | "spdx-correct": { 1987 | "version": "3.1.1", 1988 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 1989 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 1990 | "requires": { 1991 | "spdx-expression-parse": "^3.0.0", 1992 | "spdx-license-ids": "^3.0.0" 1993 | } 1994 | }, 1995 | "spdx-exceptions": { 1996 | "version": "2.3.0", 1997 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 1998 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" 1999 | }, 2000 | "spdx-expression-parse": { 2001 | "version": "3.0.1", 2002 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 2003 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 2004 | "requires": { 2005 | "spdx-exceptions": "^2.1.0", 2006 | "spdx-license-ids": "^3.0.0" 2007 | } 2008 | }, 2009 | "spdx-license-ids": { 2010 | "version": "3.0.6", 2011 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", 2012 | "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==" 2013 | }, 2014 | "strip-ansi": { 2015 | "version": "3.0.1", 2016 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2017 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2018 | "requires": { 2019 | "ansi-regex": "^2.0.0" 2020 | } 2021 | }, 2022 | "strip-bom": { 2023 | "version": "2.0.0", 2024 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 2025 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 2026 | "requires": { 2027 | "is-utf8": "^0.2.0" 2028 | } 2029 | }, 2030 | "strip-eof": { 2031 | "version": "1.0.0", 2032 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 2033 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" 2034 | }, 2035 | "strip-final-newline": { 2036 | "version": "2.0.0", 2037 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 2038 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" 2039 | }, 2040 | "strip-json-comments": { 2041 | "version": "2.0.1", 2042 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2043 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 2044 | }, 2045 | "sudo-block": { 2046 | "version": "1.2.0", 2047 | "resolved": "https://registry.npmjs.org/sudo-block/-/sudo-block-1.2.0.tgz", 2048 | "integrity": "sha1-zFOb+BkWJNT1B9g+60W0zqJ/NGM=", 2049 | "requires": { 2050 | "chalk": "^1.0.0", 2051 | "is-docker": "^1.0.0", 2052 | "is-root": "^1.0.0" 2053 | } 2054 | }, 2055 | "supports-color": { 2056 | "version": "2.0.0", 2057 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2058 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" 2059 | }, 2060 | "timed-out": { 2061 | "version": "4.0.1", 2062 | "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", 2063 | "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" 2064 | }, 2065 | "to-readable-stream": { 2066 | "version": "1.0.0", 2067 | "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", 2068 | "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" 2069 | }, 2070 | "type-fest": { 2071 | "version": "0.5.2", 2072 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", 2073 | "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==" 2074 | }, 2075 | "typedarray-to-buffer": { 2076 | "version": "3.1.5", 2077 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 2078 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 2079 | "requires": { 2080 | "is-typedarray": "^1.0.0" 2081 | } 2082 | }, 2083 | "untildify": { 2084 | "version": "3.0.3", 2085 | "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", 2086 | "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==" 2087 | }, 2088 | "unzip-response": { 2089 | "version": "2.0.1", 2090 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", 2091 | "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" 2092 | }, 2093 | "uri-js": { 2094 | "version": "4.4.0", 2095 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", 2096 | "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", 2097 | "requires": { 2098 | "punycode": "^2.1.0" 2099 | } 2100 | }, 2101 | "url-parse-lax": { 2102 | "version": "1.0.0", 2103 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", 2104 | "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", 2105 | "requires": { 2106 | "prepend-http": "^1.0.1" 2107 | } 2108 | }, 2109 | "user-home": { 2110 | "version": "2.0.0", 2111 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", 2112 | "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", 2113 | "requires": { 2114 | "os-homedir": "^1.0.0" 2115 | } 2116 | }, 2117 | "validate-npm-package-license": { 2118 | "version": "3.0.4", 2119 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 2120 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 2121 | "requires": { 2122 | "spdx-correct": "^3.0.0", 2123 | "spdx-expression-parse": "^3.0.0" 2124 | } 2125 | }, 2126 | "which": { 2127 | "version": "1.3.1", 2128 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2129 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2130 | "requires": { 2131 | "isexe": "^2.0.0" 2132 | } 2133 | }, 2134 | "wrappy": { 2135 | "version": "1.0.2", 2136 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2137 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 2138 | }, 2139 | "write-file-atomic": { 2140 | "version": "2.4.3", 2141 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", 2142 | "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", 2143 | "requires": { 2144 | "graceful-fs": "^4.1.11", 2145 | "imurmurhash": "^0.1.4", 2146 | "signal-exit": "^3.0.2" 2147 | } 2148 | }, 2149 | "ws": { 2150 | "version": "7.2.3", 2151 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz", 2152 | "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==" 2153 | }, 2154 | "xmlbuilder": { 2155 | "version": "8.2.2", 2156 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", 2157 | "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=" 2158 | }, 2159 | "xmldom": { 2160 | "version": "0.1.31", 2161 | "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", 2162 | "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" 2163 | }, 2164 | "yallist": { 2165 | "version": "2.1.2", 2166 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 2167 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" 2168 | } 2169 | } 2170 | } 2171 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "alfreth", 3 | "version": "0.0.10", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "postinstall": "alfy-init", 9 | "preuninstall": "alfy-cleanup" 10 | }, 11 | "files": [ 12 | "index.js", 13 | "icon.png", 14 | "info.plist", 15 | "scripts" 16 | ], 17 | "keywords": [], 18 | "author": "", 19 | "license": "ISC", 20 | "dependencies": { 21 | "alfy": "^0.10.0", 22 | "axios": "^0.21.0", 23 | "ethers": "^5.0.17" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /scripts/block.js: -------------------------------------------------------------------------------- 1 | const getProvider = require('./utils/getProvider'); 2 | 3 | const keyword = 'block'; 4 | const syntax = ''; 5 | const description = 'Gets latest block info'; 6 | 7 | async function run(alfy) { 8 | const provider = getProvider(alfy); 9 | 10 | const block = await provider.getBlock(); 11 | 12 | const time = new Date(block.timestamp * 1000); 13 | const gasLimit = block.gasLimit.toString(); 14 | 15 | alfy.output([ 16 | { 17 | title: block.number, 18 | subtitle: 'block number', 19 | arg: block.number, 20 | valid: true, 21 | }, 22 | { 23 | title: block.hash, 24 | subtitle: 'hash', 25 | arg: block.hash, 26 | valid: true, 27 | }, 28 | { 29 | title: time, 30 | subtitle: 'time', 31 | arg: time, 32 | valid: true, 33 | }, 34 | { 35 | title: gasLimit, 36 | subtitle: 'gas limit', 37 | arg: gasLimit, 38 | valid: true, 39 | } 40 | ]); 41 | } 42 | 43 | module.exports = { 44 | keyword, 45 | syntax, 46 | description, 47 | run, 48 | }; 49 | -------------------------------------------------------------------------------- /scripts/checksum.js: -------------------------------------------------------------------------------- 1 | const ethers = require('ethers'); 2 | 3 | const keyword = 'checksum'; 4 | const syntax = '
'; 5 | const description = 'Calculate the checksum of an address' 6 | 7 | async function run(alfy, args) { 8 | if (args.length < 1) { 9 | alfy.output([{ 10 | title: keyword, 11 | subtitle: 'Specify an address' 12 | }]); 13 | 14 | return; 15 | } 16 | 17 | let result; 18 | const arg = args[0]; 19 | 20 | if (ethers.utils.isAddress(arg)) { 21 | result = ethers.utils.getAddress(arg); 22 | } else { 23 | alfy.output([{ 24 | title: keyword, 25 | subtitle: 'Specified address is invalid' 26 | }]); 27 | 28 | return; 29 | } 30 | 31 | alfy.output([{ 32 | title: result, 33 | subtitle: 'Checksum address', 34 | arg: result, 35 | valid: true, 36 | }]); 37 | } 38 | 39 | module.exports = { 40 | keyword, 41 | run, 42 | syntax, 43 | description, 44 | }; 45 | -------------------------------------------------------------------------------- /scripts/config.js: -------------------------------------------------------------------------------- 1 | const { version } = require('../package.json'); 2 | 3 | const keyword = 'config'; 4 | const syntax = ''; 5 | const description = 'Shows Alfreth\'s config variables'; 6 | 7 | async function run(alfy) { 8 | alfy.output([ 9 | { 10 | title: version, 11 | subtitle: 'version' 12 | }, 13 | { 14 | title: alfy.config.get('providerUrl'), 15 | subtitle: 'providerUrl' 16 | }, 17 | ]); 18 | } 19 | 20 | module.exports = { 21 | run, 22 | keyword, 23 | syntax, 24 | description, 25 | }; 26 | -------------------------------------------------------------------------------- /scripts/convert.js: -------------------------------------------------------------------------------- 1 | const ethers = require('ethers'); 2 | 3 | const keyword = 'convert'; 4 | const syntax = ''; 5 | const description = 'Converts a value into multiple other formats'; 6 | 7 | async function run(alfy, args) { 8 | if (args.length < 1) { 9 | alfy.output([{ 10 | title: keyword + ' ' + syntax, 11 | subtitle: 'Specify a value to convert' 12 | }]); 13 | 14 | return; 15 | } 16 | 17 | const value = args[0]; 18 | 19 | let results = []; 20 | tryConvertToUint(value, results); 21 | tryConvertToString(value, results); 22 | tryConvertToBytes32(value, results); 23 | 24 | alfy.output(results); 25 | } 26 | 27 | function tryConvertToBytes32(value, results) { 28 | try { 29 | const bytes32Value = ethers.utils.formatBytes32String(value); 30 | 31 | results.push({ 32 | title: bytes32Value, 33 | subtitle: 'bytes32', 34 | arg: bytes32Value, 35 | }); 36 | } catch(err) {} 37 | }; 38 | 39 | function tryConvertToUint(value, results) { 40 | try { 41 | const uintValue = ethers.BigNumber.from(value).toString(); 42 | 43 | results.push({ 44 | title: uintValue, 45 | subtitle: 'uint', 46 | arg: uintValue, 47 | }); 48 | } catch(err) {} 49 | }; 50 | 51 | function tryConvertToString(value, results) { 52 | try { 53 | const stringValue = ethers.utils.toUtf8String(value); 54 | 55 | results.push({ 56 | title: stringValue, 57 | subtitle: 'string', 58 | arg: stringValue, 59 | }) 60 | } catch(err) {} 61 | } 62 | 63 | module.exports = { 64 | keyword, 65 | description, 66 | syntax, 67 | run, 68 | }; 69 | -------------------------------------------------------------------------------- /scripts/ens.js: -------------------------------------------------------------------------------- 1 | const ethers = require('ethers'); 2 | const getProvider = require('./utils/getProvider'); 3 | 4 | const keyword = 'ens'; 5 | const syntax = '
'; 6 | const description = 'Get resolves ENS addresses and names' 7 | 8 | async function run(alfy, args) { 9 | if (args.length < 1) { 10 | alfy.output([{ 11 | title: keyword, 12 | subtitle: 'Specify address or ens' 13 | }]); 14 | 15 | return; 16 | } 17 | 18 | let result; 19 | const arg = args[0]; 20 | 21 | const provider = getProvider(alfy); 22 | if (ethers.utils.isAddress(arg)) { 23 | result = await provider.lookupAddress(arg); 24 | 25 | if (!result) { 26 | alfy.output([{ 27 | title: 'Unable to resolve address' 28 | }]); 29 | 30 | return; 31 | } 32 | } else { 33 | const isValidDomainRegex = /^((?:(?:(?:\w[\.\-\+]?)*)\w)+)((?:(?:(?:\w[\.\-\+]?){0,62})\w)+)\.(\w{2,6})$/ 34 | if (isValidDomainRegex.test(arg)) { 35 | result = await provider.resolveName(arg); 36 | 37 | if (!result) { 38 | alfy.output([{ 39 | title: 'Unable to resolve name' 40 | }]); 41 | 42 | return; 43 | } 44 | } 45 | } 46 | 47 | alfy.output([{ 48 | title: result, 49 | arg: result, 50 | valid: true, 51 | }]); 52 | } 53 | 54 | module.exports = { 55 | keyword, 56 | run, 57 | syntax, 58 | description, 59 | }; 60 | -------------------------------------------------------------------------------- /scripts/gas-price.js: -------------------------------------------------------------------------------- 1 | const ethers = require('ethers'); 2 | 3 | const keyword = 'gas'; 4 | const syntax = ''; 5 | const description = 'Gets gas prices from gasnow.org'; 6 | 7 | async function run(alfy) { 8 | const response = await alfy.fetch( 9 | 'https://www.gasnow.org/api/v3/gas/price?utm_source=:alfreth' 10 | ); 11 | 12 | if (!response || response.code !== 200) { 13 | throw new Error(`Unable to fetch gas data. Error ${response.code}`); 14 | } 15 | 16 | const data = response.data; 17 | 18 | function addResult(rawValue, label, results) { 19 | const value = Math.floor(ethers.utils.formatUnits(`${rawValue}`, 'gwei')); 20 | 21 | results.push({ 22 | arg: value, 23 | title: `${value} gwei`, 24 | subtitle: label 25 | }); 26 | } 27 | 28 | let results = []; 29 | addResult(data.rapid, 'Rapid', results); 30 | addResult(data.fast, 'Fast', results); 31 | addResult(data.standard, 'Standard', results); 32 | addResult(data.slow, 'Slow', results); 33 | 34 | alfy.output(results); 35 | } 36 | 37 | module.exports = { 38 | keyword, 39 | description, 40 | syntax, 41 | run, 42 | } 43 | -------------------------------------------------------------------------------- /scripts/token.js: -------------------------------------------------------------------------------- 1 | const keyword = 'token'; 2 | const description = 'Find tokens in Uniswap\'s default token list'; 3 | const syntax = '' 4 | 5 | const listUrl = 'https://wispy-bird-88a7.uniswap.workers.dev/?url=http://tokens.1inch.eth.link'; 6 | 7 | async function run(alfy, args) { 8 | const tokens = await getData(alfy); 9 | 10 | if (args.length < 1) { 11 | alfy.output([{ 12 | title: keyword + ' ' + syntax, 13 | subtitle: 'Specify a token name or symbol' 14 | }]); 15 | 16 | return; 17 | } 18 | 19 | const query = args[0].toLowerCase(); 20 | 21 | const token = tokens.find(token => { 22 | return token.name.toLowerCase() === query || token.symbol.toLowerCase() === query 23 | }); 24 | 25 | if (token) { 26 | alfy.output([ 27 | { 28 | title: token.name, 29 | subtitle: 'name', 30 | valid: true, 31 | arg: token.name, 32 | }, 33 | { 34 | title: token.symbol, 35 | subtitle: 'symbol', 36 | valid: true, 37 | arg: token.name, 38 | }, 39 | { 40 | title: token.address, 41 | subtitle: 'address', 42 | valid: true, 43 | arg: token.address, 44 | }, 45 | { 46 | title: token.decimals, 47 | subtitle: 'decimals', 48 | valid: true, 49 | arg: token.decimals, 50 | }, 51 | ]); 52 | 53 | return; 54 | } 55 | 56 | const results = tokens.filter(token => { 57 | return token.name.toLowerCase().includes(query) || token.symbol.toLowerCase().includes(query) 58 | }); 59 | 60 | if (results.length === 0) { 61 | alfy.output([{ 62 | title: `No matches for ${query}` 63 | }]); 64 | 65 | return; 66 | } 67 | 68 | let output = [{ 69 | title: 'No matches. Did you mean any of these?' 70 | }]; 71 | 72 | output = output.concat( 73 | results.map(token => { 74 | return { 75 | title: `${token.name} (${token.symbol})`, 76 | } 77 | }) 78 | ); 79 | 80 | alfy.output(output); 81 | } 82 | 83 | async function getData(alfy) { 84 | let data = alfy.cache.get('token.data'); 85 | let needsFetch = true; 86 | if (data) { 87 | data = JSON.parse(data); 88 | 89 | if (data.fetchedTimestamp) { 90 | const timestamp = new Date(data.fetchedTimestamp); 91 | const ageSeconds = Math.floor(Date.now() - timestamp.getTime()) / 1000; 92 | if (ageSeconds < 3600) { 93 | needsFetch = false; 94 | } 95 | } 96 | } 97 | 98 | if (needsFetch) { 99 | data = await alfy.fetch(listUrl); 100 | data.fetchedTimestamp = new Date(); 101 | 102 | if (!data || !data.name) { 103 | throw new Error(`Unable to fetch token data`); 104 | } 105 | 106 | alfy.cache.set('token.data', JSON.stringify(data)); 107 | } 108 | 109 | return data.tokens.filter(token => token.chainId === 1); 110 | } 111 | 112 | module.exports = { 113 | run, 114 | keyword, 115 | description, 116 | syntax, 117 | }; 118 | -------------------------------------------------------------------------------- /scripts/tx.js: -------------------------------------------------------------------------------- 1 | const ethers = require('ethers'); 2 | const axios = require('axios'); 3 | const getProvider = require('./utils/getProvider'); 4 | 5 | const keyword = 'tx'; 6 | const syntax = ' | '; 7 | const description = 'Query a past or future transaction in Etherscan' 8 | 9 | // Docs: https://etherscan.io/apis 10 | const ETHERSCAN_API = `https://api.etherscan.io/api`; 11 | const defaultApikey = `391YIKRFHH8PANTHRX482KKHSUMBA3NPMF`; 12 | 13 | async function run(alfy, args) { 14 | if (args.length < 1) { 15 | alfy.output([{ 16 | title: keyword, 17 | subtitle: 'Specify a contract address or a transaction hash' 18 | }]); 19 | 20 | return; 21 | } 22 | 23 | if (ethers.utils.isAddress(args[0])) { 24 | const contractAddress = args[0]; 25 | 26 | // Try to read specified calldata 27 | let calldata; 28 | if (args.length > 1) { 29 | calldata = args[1]; 30 | 31 | if (!ethers.utils.isHexString(calldata)) { 32 | alfy.output([{ 33 | title: keyword, 34 | subtitle: `Invalid calldata ${calldata}` 35 | }]); 36 | 37 | return; 38 | } 39 | } 40 | 41 | await queryCalldata({ contractAddress, calldata, alfy }); 42 | 43 | return; 44 | } 45 | 46 | if (ethers.utils.isHexString(args[0]) && args[0].length === 66) { 47 | const txHash = args[0]; 48 | 49 | await queryTxHash({ txHash, alfy }); 50 | 51 | return; 52 | } 53 | 54 | alfy.output([{ 55 | title: keyword, 56 | subtitle: `Invalid contract address or transaction hash ${args[0]}` 57 | }]); 58 | } 59 | 60 | async function queryTxHash({ txHash, alfy }) { 61 | const provider = getProvider(alfy); 62 | 63 | const receipt = await provider.getTransaction(txHash); 64 | if (!receipt) { 65 | alfy.output([{ 66 | title: keyword, 67 | subtitle: `No tx receipt found for ${txHash}` 68 | }]); 69 | 70 | return; 71 | } 72 | 73 | await queryCalldata({ 74 | contractAddress: receipt.to, 75 | calldata: receipt.data, 76 | alfy, 77 | }); 78 | } 79 | 80 | async function queryCalldata({ contractAddress, calldata, alfy }) { 81 | // Retrieve source code (with abi) from Etherscan. 82 | // Note: could fetch ABI directly, but this brings in additional data. 83 | const response = await axios.get(ETHERSCAN_API, { 84 | params: { 85 | module: 'contract', 86 | action: 'getsourcecode', 87 | address: contractAddress, 88 | apikey: defaultApikey, 89 | } 90 | }); 91 | const result = response.data.result; 92 | const data = result[0]; 93 | const contractName = data.ContractName; 94 | const abi = JSON.parse(data.ABI); 95 | 96 | // Extract function selector from calldata. 97 | const selector = calldata.slice(2, 10); 98 | 99 | // Sweep ABI items of type 'function' and find a match with the selector. 100 | let matchingAbiItem = abi.find(abiItem => { 101 | if (abiItem.type === 'function') { 102 | const signature = `${abiItem.name}(${abiItem.inputs.map(input => input.type).join(',')})`; 103 | const signatureHash = ethers.utils.id(signature).slice(2, 10); 104 | 105 | return signatureHash === selector; 106 | } 107 | }) 108 | 109 | if (!matchingAbiItem) { 110 | alfy.output([{ 111 | title: keyword, 112 | subtitle: `Unable to find a matching function call for selector ${selector} in the retrieved ABI.` 113 | }]); 114 | 115 | return; 116 | } 117 | 118 | // Decode calldata. 119 | const payload = `0x${calldata.slice(10, calldata.length)}`; 120 | const types = matchingAbiItem.inputs.map(input => input.type); 121 | const decoded = ethers.utils.defaultAbiCoder.decode(types, payload); 122 | 123 | const results = []; 124 | 125 | results.push({ 126 | title: contractName, 127 | subtitle: 'Contract name', 128 | arg: contractName, 129 | valid: true, 130 | }); 131 | 132 | results.push({ 133 | title: contractAddress, 134 | subtitle: 'Contract address', 135 | arg: contractAddress, 136 | valid: true, 137 | }); 138 | 139 | results.push({ 140 | title: matchingAbiItem.name, 141 | subtitle: 'Function to call', 142 | arg: matchingAbiItem.name, 143 | valid: true, 144 | }); 145 | 146 | let idx = 0; 147 | matchingAbiItem.inputs.map(input => { 148 | const entry = decoded[idx].toString(); 149 | idx++; 150 | 151 | results.push({ 152 | title: entry, 153 | subtitle: `${input.name}: ${input.type}`, 154 | arg: entry, 155 | valid: true, 156 | }); 157 | }); 158 | 159 | alfy.output(results); 160 | } 161 | 162 | module.exports = { 163 | keyword, 164 | run, 165 | syntax, 166 | description, 167 | }; 168 | -------------------------------------------------------------------------------- /scripts/unit.js: -------------------------------------------------------------------------------- 1 | const ethers = require('ethers'); 2 | 3 | const keyword = 'unit'; 4 | const syntax = ' '; 5 | const description = 'Converts a numeric value into different Ether units'; 6 | 7 | const types = [ 8 | "wei", 9 | "kwei", 10 | "mwei", 11 | "gwei", 12 | "szabo", 13 | "finney", 14 | "ether", 15 | ]; 16 | 17 | function presentMessage(alfy, message) { 18 | alfy.output([{ 19 | title: keyword + ' ' + syntax, 20 | subtitle: message 21 | }]); 22 | 23 | process.exit(0); 24 | } 25 | 26 | async function run(alfy, args) { 27 | if (args.length < 1) { 28 | presentMessage(alfy, 'Specify a value to convert'); 29 | } 30 | const value = args[0]; 31 | 32 | if (args.length < 2) { 33 | presentMessage(alfy, 'Specify source value type'); 34 | } 35 | let type = args[1]; 36 | if (type === 'eth') type = 'ether'; 37 | 38 | if (!types.includes(type)) { 39 | type = 'ether'; 40 | } 41 | 42 | let results = []; 43 | types.map(targetType => { 44 | const valueWei = ethers.utils.parseUnits(value, type); 45 | let valueTarget = ethers.utils.formatUnits(valueWei, targetType); 46 | 47 | const removeTrailingZeroes = /^0*(\d+(?:\.(?:(?!0+$)\d)+)?)/; 48 | valueTarget = valueTarget.match(removeTrailingZeroes)[1]; 49 | 50 | results.push({ 51 | title: valueTarget, 52 | subtitle: targetType, 53 | arg: valueTarget, 54 | }); 55 | }); 56 | 57 | alfy.output(results); 58 | } 59 | 60 | module.exports = { 61 | keyword, 62 | description, 63 | run, 64 | syntax, 65 | }; 66 | -------------------------------------------------------------------------------- /scripts/utils/getProvider.js: -------------------------------------------------------------------------------- 1 | const ethers = require('ethers'); 2 | 3 | function getProvider(alfy) { 4 | const providerUrl = alfy.config.get('provider'); 5 | 6 | let provider; 7 | if (providerUrl) { 8 | provider = new ethers.providers.JsonRpcProvider(providerUrl); 9 | } else { 10 | provider = ethers.getDefaultProvider(); 11 | } 12 | 13 | return provider; 14 | } 15 | 16 | module.exports = getProvider; 17 | --------------------------------------------------------------------------------