├── .env.example ├── .gitignore ├── README.md ├── index.js ├── package.json └── yarn.lock /.env.example: -------------------------------------------------------------------------------- 1 | ACCESS_TOKEN= 2 | API_HOST= 3 | HASHTAG= 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .env 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | boost-bot 2 | ========= 3 | 4 | Mastodon bot that boosts all local toots with a chosen hashtag. 5 | 6 | 1. Clone the repository (`git clone https://github.com/Gargron/boost-bot.git`) 7 | 2. Install the dependencies (`yarn install`). 8 | 3. Fill out the `.env` file with `ACCESS_TOKEN`, `API_HOST`, and `HASHTAG` 9 | 4. Launch the bot with `yarn start`. 10 | 11 | |Variable |Description | 12 | |--------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 13 | |`ACCESS_TOKEN`|From the Mastodon account for the bot, go to Preferences, then Development. Create a new application with read and write access. Once it's created, click on it to see your access token.| 14 | |`API_HOST` |For example: `mastodon.social` | 15 | |`HASHTAG` |For example: `catsofmastodon` | 16 | 17 | The bot uses the streaming API to receive toots. It does not catch up on toots that happened while it was not connected. 18 | 19 | #### License (MIT) 20 | 21 | Copyright 2018 Eugen Rochko 22 | 23 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 24 | 25 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 26 | 27 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 28 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const Mastodon = require('mastodon'); 2 | const EventSource = require('eventsource'); 3 | const throttledQueue = require('throttled-queue'); 4 | const log = require('npmlog'); 5 | 6 | require('dotenv').config(); 7 | 8 | log.level = process.env.LOG_LEVEL || 'verbose'; 9 | 10 | const config = { 11 | access_token: process.env.ACCESS_TOKEN, 12 | api_url: `https://${process.env.API_HOST}/api/v1/`, 13 | hashtag: process.env.HASHTAG, 14 | }; 15 | 16 | log.info('Booting up...'); 17 | log.info(`Host: ${process.env.API_HOST}, Hashtag: #${config.hashtag}`); 18 | 19 | const client = new Mastodon(config); 20 | const es = new EventSource(`${config.api_url}streaming/hashtag/local?access_token=${config.access_token}&tag=${config.hashtag}`); 21 | const throttle = throttledQueue(1, 15000); 22 | 23 | es.addEventListener('update', ({ data }) => { 24 | const { id } = JSON.parse(data); 25 | 26 | log.silly(`Received message: ${id}`); 27 | 28 | throttle(() => { 29 | log.verbose(`Boosting: ${id}`); 30 | 31 | client.post(`statuses/${id}/reblog`, (err, data) => { 32 | if (err) { 33 | log.error(`Error boosting ${id}: ${err}`); 34 | return; 35 | } 36 | 37 | log.silly(`Boosted: ${id}`); 38 | }); 39 | }); 40 | }); 41 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "boost-bot", 3 | "version": "1.0.0", 4 | "description": "Mastodon bot that boosts messages", 5 | "main": "index.js", 6 | "repository": "https://github.com/Gargron/boost-bot", 7 | "author": "Eugen Rochko ", 8 | "license": "MIT", 9 | "dependencies": { 10 | "dotenv": "^5.0.1", 11 | "eventsource": "^1.0.5", 12 | "mastodon": "^1.2.2", 13 | "npmlog": "^4.1.2", 14 | "throttled-queue": "^1.0.5" 15 | }, 16 | "scripts": { 17 | "start": "node ./index.js" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | ajv@^5.1.0: 6 | version "5.5.2" 7 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" 8 | dependencies: 9 | co "^4.6.0" 10 | fast-deep-equal "^1.0.0" 11 | fast-json-stable-stringify "^2.0.0" 12 | json-schema-traverse "^0.3.0" 13 | 14 | ansi-regex@^2.0.0: 15 | version "2.1.1" 16 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 17 | 18 | aproba@^1.0.3: 19 | version "1.2.0" 20 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 21 | 22 | are-we-there-yet@~1.1.2: 23 | version "1.1.4" 24 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" 25 | dependencies: 26 | delegates "^1.0.0" 27 | readable-stream "^2.0.6" 28 | 29 | asn1@~0.2.3: 30 | version "0.2.3" 31 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 32 | 33 | assert-plus@1.0.0, assert-plus@^1.0.0: 34 | version "1.0.0" 35 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 36 | 37 | asynckit@^0.4.0: 38 | version "0.4.0" 39 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 40 | 41 | aws-sign2@~0.7.0: 42 | version "0.7.0" 43 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 44 | 45 | aws4@^1.6.0: 46 | version "1.6.0" 47 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 48 | 49 | bcrypt-pbkdf@^1.0.0: 50 | version "1.0.1" 51 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 52 | dependencies: 53 | tweetnacl "^0.14.3" 54 | 55 | bluebird@^3.1.5: 56 | version "3.5.1" 57 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" 58 | 59 | boom@4.x.x: 60 | version "4.3.1" 61 | resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" 62 | dependencies: 63 | hoek "4.x.x" 64 | 65 | boom@5.x.x: 66 | version "5.2.0" 67 | resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" 68 | dependencies: 69 | hoek "4.x.x" 70 | 71 | caseless@~0.12.0: 72 | version "0.12.0" 73 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 74 | 75 | co@^4.6.0: 76 | version "4.6.0" 77 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 78 | 79 | code-point-at@^1.0.0: 80 | version "1.1.0" 81 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 82 | 83 | combined-stream@1.0.6, combined-stream@~1.0.5: 84 | version "1.0.6" 85 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" 86 | dependencies: 87 | delayed-stream "~1.0.0" 88 | 89 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 90 | version "1.1.0" 91 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 92 | 93 | core-util-is@1.0.2, core-util-is@~1.0.0: 94 | version "1.0.2" 95 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 96 | 97 | cryptiles@3.x.x: 98 | version "3.1.2" 99 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" 100 | dependencies: 101 | boom "5.x.x" 102 | 103 | dashdash@^1.12.0: 104 | version "1.14.1" 105 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 106 | dependencies: 107 | assert-plus "^1.0.0" 108 | 109 | delayed-stream@~1.0.0: 110 | version "1.0.0" 111 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 112 | 113 | delegates@^1.0.0: 114 | version "1.0.0" 115 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 116 | 117 | dotenv@^5.0.1: 118 | version "5.0.1" 119 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" 120 | 121 | ecc-jsbn@~0.1.1: 122 | version "0.1.1" 123 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 124 | dependencies: 125 | jsbn "~0.1.0" 126 | 127 | eventsource@^1.0.5: 128 | version "1.0.5" 129 | resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.5.tgz#1f012c9df0bd8832fd6b1744fea00ccdd479f046" 130 | dependencies: 131 | original "^1.0.0" 132 | 133 | extend@~3.0.1: 134 | version "3.0.1" 135 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 136 | 137 | extsprintf@1.3.0: 138 | version "1.3.0" 139 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 140 | 141 | extsprintf@^1.2.0: 142 | version "1.4.0" 143 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 144 | 145 | fast-deep-equal@^1.0.0: 146 | version "1.1.0" 147 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" 148 | 149 | fast-json-stable-stringify@^2.0.0: 150 | version "2.0.0" 151 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 152 | 153 | forever-agent@~0.6.1: 154 | version "0.6.1" 155 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 156 | 157 | form-data@~2.3.1: 158 | version "2.3.2" 159 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" 160 | dependencies: 161 | asynckit "^0.4.0" 162 | combined-stream "1.0.6" 163 | mime-types "^2.1.12" 164 | 165 | gauge@~2.7.3: 166 | version "2.7.4" 167 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 168 | dependencies: 169 | aproba "^1.0.3" 170 | console-control-strings "^1.0.0" 171 | has-unicode "^2.0.0" 172 | object-assign "^4.1.0" 173 | signal-exit "^3.0.0" 174 | string-width "^1.0.1" 175 | strip-ansi "^3.0.1" 176 | wide-align "^1.1.0" 177 | 178 | getpass@^0.1.1: 179 | version "0.1.7" 180 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 181 | dependencies: 182 | assert-plus "^1.0.0" 183 | 184 | har-schema@^2.0.0: 185 | version "2.0.0" 186 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 187 | 188 | har-validator@~5.0.3: 189 | version "5.0.3" 190 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" 191 | dependencies: 192 | ajv "^5.1.0" 193 | har-schema "^2.0.0" 194 | 195 | has-unicode@^2.0.0: 196 | version "2.0.1" 197 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 198 | 199 | hawk@~6.0.2: 200 | version "6.0.2" 201 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" 202 | dependencies: 203 | boom "4.x.x" 204 | cryptiles "3.x.x" 205 | hoek "4.x.x" 206 | sntp "2.x.x" 207 | 208 | hoek@4.x.x: 209 | version "4.2.1" 210 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" 211 | 212 | http-signature@~1.2.0: 213 | version "1.2.0" 214 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 215 | dependencies: 216 | assert-plus "^1.0.0" 217 | jsprim "^1.2.2" 218 | sshpk "^1.7.0" 219 | 220 | inherits@~2.0.3: 221 | version "2.0.3" 222 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 223 | 224 | is-fullwidth-code-point@^1.0.0: 225 | version "1.0.0" 226 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 227 | dependencies: 228 | number-is-nan "^1.0.0" 229 | 230 | is-typedarray@~1.0.0: 231 | version "1.0.0" 232 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 233 | 234 | isarray@~1.0.0: 235 | version "1.0.0" 236 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 237 | 238 | isstream@~0.1.2: 239 | version "0.1.2" 240 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 241 | 242 | jsbn@~0.1.0: 243 | version "0.1.1" 244 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 245 | 246 | json-schema-traverse@^0.3.0: 247 | version "0.3.1" 248 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 249 | 250 | json-schema@0.2.3: 251 | version "0.2.3" 252 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 253 | 254 | json-stringify-safe@~5.0.1: 255 | version "5.0.1" 256 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 257 | 258 | jsprim@^1.2.2: 259 | version "1.4.1" 260 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 261 | dependencies: 262 | assert-plus "1.0.0" 263 | extsprintf "1.3.0" 264 | json-schema "0.2.3" 265 | verror "1.10.0" 266 | 267 | mastodon@^1.2.2: 268 | version "1.2.2" 269 | resolved "https://registry.yarnpkg.com/mastodon/-/mastodon-1.2.2.tgz#e3a99b21af7ad37b20a5ca6583c9d76ac7716fe5" 270 | dependencies: 271 | bluebird "^3.1.5" 272 | mime "^1.3.4" 273 | request "^2.68.0" 274 | 275 | mime-db@~1.33.0: 276 | version "1.33.0" 277 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" 278 | 279 | mime-types@^2.1.12, mime-types@~2.1.17: 280 | version "2.1.18" 281 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" 282 | dependencies: 283 | mime-db "~1.33.0" 284 | 285 | mime@^1.3.4: 286 | version "1.6.0" 287 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 288 | 289 | npmlog@^4.1.2: 290 | version "4.1.2" 291 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 292 | dependencies: 293 | are-we-there-yet "~1.1.2" 294 | console-control-strings "~1.1.0" 295 | gauge "~2.7.3" 296 | set-blocking "~2.0.0" 297 | 298 | number-is-nan@^1.0.0: 299 | version "1.0.1" 300 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 301 | 302 | oauth-sign@~0.8.2: 303 | version "0.8.2" 304 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 305 | 306 | object-assign@^4.1.0: 307 | version "4.1.1" 308 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 309 | 310 | original@^1.0.0: 311 | version "1.0.0" 312 | resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" 313 | dependencies: 314 | url-parse "1.0.x" 315 | 316 | performance-now@^2.1.0: 317 | version "2.1.0" 318 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 319 | 320 | process-nextick-args@~2.0.0: 321 | version "2.0.0" 322 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 323 | 324 | punycode@^1.4.1: 325 | version "1.4.1" 326 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 327 | 328 | qs@~6.5.1: 329 | version "6.5.1" 330 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" 331 | 332 | querystringify@0.0.x: 333 | version "0.0.4" 334 | resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" 335 | 336 | readable-stream@^2.0.6: 337 | version "2.3.5" 338 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" 339 | dependencies: 340 | core-util-is "~1.0.0" 341 | inherits "~2.0.3" 342 | isarray "~1.0.0" 343 | process-nextick-args "~2.0.0" 344 | safe-buffer "~5.1.1" 345 | string_decoder "~1.0.3" 346 | util-deprecate "~1.0.1" 347 | 348 | request@^2.68.0: 349 | version "2.85.0" 350 | resolved "https://registry.yarnpkg.com/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" 351 | dependencies: 352 | aws-sign2 "~0.7.0" 353 | aws4 "^1.6.0" 354 | caseless "~0.12.0" 355 | combined-stream "~1.0.5" 356 | extend "~3.0.1" 357 | forever-agent "~0.6.1" 358 | form-data "~2.3.1" 359 | har-validator "~5.0.3" 360 | hawk "~6.0.2" 361 | http-signature "~1.2.0" 362 | is-typedarray "~1.0.0" 363 | isstream "~0.1.2" 364 | json-stringify-safe "~5.0.1" 365 | mime-types "~2.1.17" 366 | oauth-sign "~0.8.2" 367 | performance-now "^2.1.0" 368 | qs "~6.5.1" 369 | safe-buffer "^5.1.1" 370 | stringstream "~0.0.5" 371 | tough-cookie "~2.3.3" 372 | tunnel-agent "^0.6.0" 373 | uuid "^3.1.0" 374 | 375 | requires-port@1.0.x: 376 | version "1.0.0" 377 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 378 | 379 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 380 | version "5.1.1" 381 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 382 | 383 | set-blocking@~2.0.0: 384 | version "2.0.0" 385 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 386 | 387 | signal-exit@^3.0.0: 388 | version "3.0.2" 389 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 390 | 391 | sntp@2.x.x: 392 | version "2.1.0" 393 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" 394 | dependencies: 395 | hoek "4.x.x" 396 | 397 | sshpk@^1.7.0: 398 | version "1.14.1" 399 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" 400 | dependencies: 401 | asn1 "~0.2.3" 402 | assert-plus "^1.0.0" 403 | dashdash "^1.12.0" 404 | getpass "^0.1.1" 405 | optionalDependencies: 406 | bcrypt-pbkdf "^1.0.0" 407 | ecc-jsbn "~0.1.1" 408 | jsbn "~0.1.0" 409 | tweetnacl "~0.14.0" 410 | 411 | string-width@^1.0.1, string-width@^1.0.2: 412 | version "1.0.2" 413 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 414 | dependencies: 415 | code-point-at "^1.0.0" 416 | is-fullwidth-code-point "^1.0.0" 417 | strip-ansi "^3.0.0" 418 | 419 | string_decoder@~1.0.3: 420 | version "1.0.3" 421 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 422 | dependencies: 423 | safe-buffer "~5.1.0" 424 | 425 | stringstream@~0.0.5: 426 | version "0.0.5" 427 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 428 | 429 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 430 | version "3.0.1" 431 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 432 | dependencies: 433 | ansi-regex "^2.0.0" 434 | 435 | throttled-queue@^1.0.5: 436 | version "1.0.5" 437 | resolved "https://registry.yarnpkg.com/throttled-queue/-/throttled-queue-1.0.5.tgz#d57e75c9bc33bd2df09be74f62fd1bc27224cafd" 438 | 439 | tough-cookie@~2.3.3: 440 | version "2.3.4" 441 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" 442 | dependencies: 443 | punycode "^1.4.1" 444 | 445 | tunnel-agent@^0.6.0: 446 | version "0.6.0" 447 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 448 | dependencies: 449 | safe-buffer "^5.0.1" 450 | 451 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 452 | version "0.14.5" 453 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 454 | 455 | url-parse@1.0.x: 456 | version "1.0.5" 457 | resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" 458 | dependencies: 459 | querystringify "0.0.x" 460 | requires-port "1.0.x" 461 | 462 | util-deprecate@~1.0.1: 463 | version "1.0.2" 464 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 465 | 466 | uuid@^3.1.0: 467 | version "3.2.1" 468 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" 469 | 470 | verror@1.10.0: 471 | version "1.10.0" 472 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 473 | dependencies: 474 | assert-plus "^1.0.0" 475 | core-util-is "1.0.2" 476 | extsprintf "^1.2.0" 477 | 478 | wide-align@^1.1.0: 479 | version "1.1.2" 480 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" 481 | dependencies: 482 | string-width "^1.0.2" 483 | --------------------------------------------------------------------------------