├── .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 |
--------------------------------------------------------------------------------