├── .gitignore ├── .dockerignore ├── Dockerfile ├── package.json ├── config.js ├── README.md ├── LICENSE ├── index.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | README.md 2 | LICENSE 3 | Dockerfile 4 | .dockerignore 5 | .git* 6 | node_modules 7 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:12-alpine 2 | 3 | WORKDIR /usr/src/app 4 | 5 | COPY package.json yarn.lock ./ 6 | 7 | RUN yarn install --production 8 | 9 | COPY . ./ 10 | 11 | ENTRYPOINT ["node"] 12 | CMD ["index"] 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "discord-forwarder", 3 | "author": "Mathieu Viossat", 4 | "license": "MIT", 5 | "main": "index.js", 6 | "version": "1.0.0", 7 | "dependencies": { 8 | "discord.js": "^11.5.1", 9 | "request": "^2.88.0" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | TOKEN: process.env.TOKEN, 3 | READING_CHANNELS: (process.env.READING_CHANNELS || '').split(',').filter(Boolean), 4 | WRITING_CHANNELS: (process.env.WRITING_CHANNELS || '').split(',').filter(Boolean), 5 | WEBHOOKS: (process.env.WEBHOOKS || '').split(',').filter(Boolean), 6 | }; 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # viossat/discord-forwarder 2 | 3 | Forward Discord channels to others channels or webhooks. 4 | 5 | ## Environment variables 6 | - `TOKEN`: a bot/user token 7 | - `READING_CHANNELS`: list of channels ID to forward (separated by commas) 8 | - `WRITING_CHANNELS`: list of channels ID where messages are forwarded (separated by commas) 9 | - `WEBHOOKS`: list of webhooks URL where messages are sent (separated by commas) 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2019 Mathieu Viossat 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const config = require('./config'); 2 | const Discord = require('discord.js'); 3 | const request = require('request'); 4 | 5 | const client = new Discord.Client(); 6 | 7 | client.on('ready', () => { 8 | console.info('logged in as ' + client.user.tag); 9 | }); 10 | 11 | client.on('error', err => { 12 | console.error(err); 13 | process.exit(1); 14 | }); 15 | 16 | client.on('warn', message => { 17 | console.warn(message); 18 | }); 19 | 20 | client.on('reconnecting', message => { 21 | console.info('reconnecting...'); 22 | }); 23 | 24 | client.on('resume', message => { 25 | console.info('connected'); 26 | }); 27 | 28 | client.on('disconnect', message => { 29 | console.info('disconnected'); 30 | process.exit(1); 31 | }); 32 | 33 | client.on('message', message => { 34 | if (config.READING_CHANNELS.includes(message.channel.id)) { 35 | let content = message.content; 36 | message.attachments.forEach(attachment => { 37 | content += '\n' + attachment.proxyURL; 38 | }); 39 | 40 | config.WRITING_CHANNELS.forEach(channel => { 41 | client.channels.get(channel).send(content, {embed: message.embeds[0]}).catch(err => { 42 | console.error(err); 43 | }); 44 | }); 45 | 46 | config.WEBHOOKS.forEach(webhook => { 47 | request({ 48 | url: webhook, 49 | method: 'POST', 50 | json: { 51 | content: content, 52 | embeds: message.embeds, 53 | }, 54 | }, err => { 55 | if (err) { 56 | console.error(err); 57 | } 58 | }); 59 | }); 60 | } 61 | }); 62 | 63 | client.login(config.TOKEN); 64 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | ajv@^6.5.5: 6 | version "6.10.0" 7 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" 8 | integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== 9 | dependencies: 10 | fast-deep-equal "^2.0.1" 11 | fast-json-stable-stringify "^2.0.0" 12 | json-schema-traverse "^0.4.1" 13 | uri-js "^4.2.2" 14 | 15 | asn1@~0.2.3: 16 | version "0.2.4" 17 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 18 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 19 | dependencies: 20 | safer-buffer "~2.1.0" 21 | 22 | assert-plus@1.0.0, assert-plus@^1.0.0: 23 | version "1.0.0" 24 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 25 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 26 | 27 | async-limiter@~1.0.0: 28 | version "1.0.0" 29 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" 30 | integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== 31 | 32 | asynckit@^0.4.0: 33 | version "0.4.0" 34 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 35 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 36 | 37 | aws-sign2@~0.7.0: 38 | version "0.7.0" 39 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 40 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 41 | 42 | aws4@^1.8.0: 43 | version "1.8.0" 44 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" 45 | integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== 46 | 47 | bcrypt-pbkdf@^1.0.0: 48 | version "1.0.2" 49 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 50 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 51 | dependencies: 52 | tweetnacl "^0.14.3" 53 | 54 | caseless@~0.12.0: 55 | version "0.12.0" 56 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 57 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 58 | 59 | combined-stream@^1.0.6, combined-stream@~1.0.6: 60 | version "1.0.8" 61 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 62 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 63 | dependencies: 64 | delayed-stream "~1.0.0" 65 | 66 | core-util-is@1.0.2: 67 | version "1.0.2" 68 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 69 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 70 | 71 | dashdash@^1.12.0: 72 | version "1.14.1" 73 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 74 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 75 | dependencies: 76 | assert-plus "^1.0.0" 77 | 78 | delayed-stream@~1.0.0: 79 | version "1.0.0" 80 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 81 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 82 | 83 | discord.js@^11.5.1: 84 | version "11.5.1" 85 | resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-11.5.1.tgz#910fb9f6410328581093e044cafb661783a4d9e8" 86 | integrity sha512-tGhV5xaZXE3Z+4uXJb3hYM6gQ1NmnSxp9PClcsSAYFVRzH6AJH74040mO3afPDMWEAlj8XsoPXXTJHTxesqcGw== 87 | dependencies: 88 | long "^4.0.0" 89 | prism-media "^0.0.3" 90 | snekfetch "^3.6.4" 91 | tweetnacl "^1.0.0" 92 | ws "^6.0.0" 93 | 94 | ecc-jsbn@~0.1.1: 95 | version "0.1.2" 96 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 97 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 98 | dependencies: 99 | jsbn "~0.1.0" 100 | safer-buffer "^2.1.0" 101 | 102 | extend@~3.0.2: 103 | version "3.0.2" 104 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 105 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 106 | 107 | extsprintf@1.3.0: 108 | version "1.3.0" 109 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 110 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 111 | 112 | extsprintf@^1.2.0: 113 | version "1.4.0" 114 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 115 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 116 | 117 | fast-deep-equal@^2.0.1: 118 | version "2.0.1" 119 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 120 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 121 | 122 | fast-json-stable-stringify@^2.0.0: 123 | version "2.0.0" 124 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 125 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 126 | 127 | forever-agent@~0.6.1: 128 | version "0.6.1" 129 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 130 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 131 | 132 | form-data@~2.3.2: 133 | version "2.3.3" 134 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 135 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 136 | dependencies: 137 | asynckit "^0.4.0" 138 | combined-stream "^1.0.6" 139 | mime-types "^2.1.12" 140 | 141 | getpass@^0.1.1: 142 | version "0.1.7" 143 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 144 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 145 | dependencies: 146 | assert-plus "^1.0.0" 147 | 148 | har-schema@^2.0.0: 149 | version "2.0.0" 150 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 151 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 152 | 153 | har-validator@~5.1.0: 154 | version "5.1.3" 155 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 156 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 157 | dependencies: 158 | ajv "^6.5.5" 159 | har-schema "^2.0.0" 160 | 161 | http-signature@~1.2.0: 162 | version "1.2.0" 163 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 164 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 165 | dependencies: 166 | assert-plus "^1.0.0" 167 | jsprim "^1.2.2" 168 | sshpk "^1.7.0" 169 | 170 | is-typedarray@~1.0.0: 171 | version "1.0.0" 172 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 173 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 174 | 175 | isstream@~0.1.2: 176 | version "0.1.2" 177 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 178 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 179 | 180 | jsbn@~0.1.0: 181 | version "0.1.1" 182 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 183 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 184 | 185 | json-schema-traverse@^0.4.1: 186 | version "0.4.1" 187 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 188 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 189 | 190 | json-schema@0.2.3: 191 | version "0.2.3" 192 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 193 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 194 | 195 | json-stringify-safe@~5.0.1: 196 | version "5.0.1" 197 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 198 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 199 | 200 | jsprim@^1.2.2: 201 | version "1.4.1" 202 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 203 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 204 | dependencies: 205 | assert-plus "1.0.0" 206 | extsprintf "1.3.0" 207 | json-schema "0.2.3" 208 | verror "1.10.0" 209 | 210 | long@^4.0.0: 211 | version "4.0.0" 212 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" 213 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== 214 | 215 | mime-db@1.40.0: 216 | version "1.40.0" 217 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" 218 | integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== 219 | 220 | mime-types@^2.1.12, mime-types@~2.1.19: 221 | version "2.1.24" 222 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" 223 | integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== 224 | dependencies: 225 | mime-db "1.40.0" 226 | 227 | oauth-sign@~0.9.0: 228 | version "0.9.0" 229 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 230 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 231 | 232 | performance-now@^2.1.0: 233 | version "2.1.0" 234 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 235 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 236 | 237 | prism-media@^0.0.3: 238 | version "0.0.3" 239 | resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-0.0.3.tgz#8842d4fae804f099d3b48a9a38e3c2bab6f4855b" 240 | integrity sha512-c9KkNifSMU/iXT8FFTaBwBMr+rdVcN+H/uNv1o+CuFeTThNZNTOrQ+RgXA1yL/DeLk098duAeRPP3QNPNbhxYQ== 241 | 242 | psl@^1.1.24: 243 | version "1.1.33" 244 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.33.tgz#5533d9384ca7aab86425198e10e8053ebfeab661" 245 | integrity sha512-LTDP2uSrsc7XCb5lO7A8BI1qYxRe/8EqlRvMeEl6rsnYAqDOl8xHR+8lSAIVfrNaSAlTPTNOCgNjWcoUL3AZsw== 246 | 247 | punycode@^1.4.1: 248 | version "1.4.1" 249 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 250 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 251 | 252 | punycode@^2.1.0: 253 | version "2.1.1" 254 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 255 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 256 | 257 | qs@~6.5.2: 258 | version "6.5.2" 259 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 260 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 261 | 262 | request@^2.88.0: 263 | version "2.88.0" 264 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 265 | integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== 266 | dependencies: 267 | aws-sign2 "~0.7.0" 268 | aws4 "^1.8.0" 269 | caseless "~0.12.0" 270 | combined-stream "~1.0.6" 271 | extend "~3.0.2" 272 | forever-agent "~0.6.1" 273 | form-data "~2.3.2" 274 | har-validator "~5.1.0" 275 | http-signature "~1.2.0" 276 | is-typedarray "~1.0.0" 277 | isstream "~0.1.2" 278 | json-stringify-safe "~5.0.1" 279 | mime-types "~2.1.19" 280 | oauth-sign "~0.9.0" 281 | performance-now "^2.1.0" 282 | qs "~6.5.2" 283 | safe-buffer "^5.1.2" 284 | tough-cookie "~2.4.3" 285 | tunnel-agent "^0.6.0" 286 | uuid "^3.3.2" 287 | 288 | safe-buffer@^5.0.1, safe-buffer@^5.1.2: 289 | version "5.1.2" 290 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 291 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 292 | 293 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 294 | version "2.1.2" 295 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 296 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 297 | 298 | snekfetch@^3.6.4: 299 | version "3.6.4" 300 | resolved "https://registry.yarnpkg.com/snekfetch/-/snekfetch-3.6.4.tgz#d13e80a616d892f3d38daae4289f4d258a645120" 301 | integrity sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw== 302 | 303 | sshpk@^1.7.0: 304 | version "1.16.1" 305 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 306 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 307 | dependencies: 308 | asn1 "~0.2.3" 309 | assert-plus "^1.0.0" 310 | bcrypt-pbkdf "^1.0.0" 311 | dashdash "^1.12.0" 312 | ecc-jsbn "~0.1.1" 313 | getpass "^0.1.1" 314 | jsbn "~0.1.0" 315 | safer-buffer "^2.0.2" 316 | tweetnacl "~0.14.0" 317 | 318 | tough-cookie@~2.4.3: 319 | version "2.4.3" 320 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 321 | integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== 322 | dependencies: 323 | psl "^1.1.24" 324 | punycode "^1.4.1" 325 | 326 | tunnel-agent@^0.6.0: 327 | version "0.6.0" 328 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 329 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 330 | dependencies: 331 | safe-buffer "^5.0.1" 332 | 333 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 334 | version "0.14.5" 335 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 336 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 337 | 338 | tweetnacl@^1.0.0: 339 | version "1.0.1" 340 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.1.tgz#2594d42da73cd036bd0d2a54683dd35a6b55ca17" 341 | integrity sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A== 342 | 343 | uri-js@^4.2.2: 344 | version "4.2.2" 345 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 346 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 347 | dependencies: 348 | punycode "^2.1.0" 349 | 350 | uuid@^3.3.2: 351 | version "3.3.2" 352 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 353 | integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== 354 | 355 | verror@1.10.0: 356 | version "1.10.0" 357 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 358 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 359 | dependencies: 360 | assert-plus "^1.0.0" 361 | core-util-is "1.0.2" 362 | extsprintf "^1.2.0" 363 | 364 | ws@^6.0.0: 365 | version "6.2.1" 366 | resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" 367 | integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== 368 | dependencies: 369 | async-limiter "~1.0.0" 370 | --------------------------------------------------------------------------------