From 192d400d1e37ede4407d2dd13f5bbf575221eef1 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Fri, 15 Nov 2019 01:24:26 -0500 Subject: [PATCH] Improve skin database --- experiments/skin-database/cli.js | 69 +-------- experiments/skin-database/data/skins.js | 3 + .../discord-bot/commands/approve.js | 3 +- .../discord-bot/commands/reject.js | 3 +- .../discord-bot/commands/tweet.js | 20 +++ .../skin-database/discord-bot/index.js | 3 - experiments/skin-database/graphql.js | 135 ++++++++++++++++++ experiments/skin-database/index.js | 3 + experiments/skin-database/package.json | 2 + experiments/skin-database/tasks/tweet.js | 73 ++++++++++ experiments/skin-database/yarn.lock | 127 ++++++---------- 11 files changed, 285 insertions(+), 156 deletions(-) create mode 100644 experiments/skin-database/discord-bot/commands/tweet.js create mode 100644 experiments/skin-database/graphql.js create mode 100644 experiments/skin-database/tasks/tweet.js diff --git a/experiments/skin-database/cli.js b/experiments/skin-database/cli.js index 437a6ee1..a8205f7c 100755 --- a/experiments/skin-database/cli.js +++ b/experiments/skin-database/cli.js @@ -2,84 +2,21 @@ const argv = require("yargs").argv; const fetchInternetArchiveMetadata = require("./tasks/fetchInternetArchiveMetadata"); const ensureInternetArchiveItemsIndexByMd5 = require("./tasks/ensureInternetArchiveItemsIndexByMd5"); -const path = require("path"); const logger = require("./logger"); const DiscordWinstonTransport = require("./DiscordWinstonTransport"); const Skins = require("./data/skins"); const db = require("./db"); const Discord = require("discord.js"); -const config = require("./config"); - -const { spawn } = require("child_process"); - -function spawnPromise(command, args) { - return new Promise((resolve, reject) => { - const ls = spawn(command, args); - let stdout = ""; - let stderr = ""; - - ls.stdout.on("data", data => { - stdout += data; - }); - - ls.stderr.on("data", data => { - stderr += data; - console.log(`stderr: ${data}`); - }); - - ls.on("close", code => { - console.log(`child process exited with code ${code}`); - if (code === 0) { - resolve(stdout); - } else { - reject({ stdout, stderr }); - } - }); - }); -} +const tweet = require("./tasks/tweet"); async function main() { const client = new Discord.Client(); // The Winston transport logs in the client. await DiscordWinstonTransport.addToLogger(client, logger); - const webhook = await client.fetchWebhook( - config.discordWebhookId, - config.discordWebhookToken - ); + switch (argv._[0]) { case "tweet": - const tweetableSkin = await Skins.getSkinToTweet(); - if (tweetableSkin == null) { - webhook.send( - "Oops! I ran out of skins to tweet. Could someone please `!review` some more?" - ); - logger.info("Could not find a skin to tweet"); - break; - } - - const { md5, filename } = tweetableSkin; - const output = await spawnPromise( - path.resolve(__dirname, "../tweetBot/tweet.py"), - [ - "tweet", - md5, - filename, - // "--dry", - ] - ); - webhook.send(output.trim()); - await Skins.markAsTweeted(md5); - const remainingSkinCount = await Skins.getTweetableSkinCount(); - if (remainingSkinCount < 10) { - webhook.send( - `Only ${remainingSkinCount} approved skins left. Could someone please \`!review\` some more?` - ); - } - logger.info("Tweeted a skin", { - md5, - filename, - url: output.trim(), - }); + await tweet(client); break; case "fetch-metadata": console.log("Going to download metadata from the Internet Archive"); diff --git a/experiments/skin-database/data/skins.js b/experiments/skin-database/data/skins.js index f0ede6f0..a30aa890 100644 --- a/experiments/skin-database/data/skins.js +++ b/experiments/skin-database/data/skins.js @@ -9,12 +9,14 @@ const TWEETABLE_QUERY = { tweeted: { $ne: true }, approved: true, rejected: { $ne: true }, + type: "CLASSIC" }; const REVIEWABLE_QUERY = { tweeted: { $ne: true }, approved: { $ne: true }, rejected: { $ne: true }, + type: "CLASSIC" }; function getSkinRecord(skin) { const { @@ -195,6 +197,7 @@ async function reconcile() { } module.exports = { + getInternetArchiveItem, getMd5ByAnything, getReadme, getScreenshotUrl, diff --git a/experiments/skin-database/discord-bot/commands/approve.js b/experiments/skin-database/discord-bot/commands/approve.js index 27372773..a8a26db4 100644 --- a/experiments/skin-database/discord-bot/commands/approve.js +++ b/experiments/skin-database/discord-bot/commands/approve.js @@ -1,7 +1,6 @@ const { approve, getStatus } = require("../../data/skins"); const Utils = require("../utils"); - -const TWEET_BOT_CHANNEL_ID = "445577489834704906"; +const { TWEET_BOT_CHANNEL_ID } = require("../../config"); async function handler(message, args) { const [md5] = args; diff --git a/experiments/skin-database/discord-bot/commands/reject.js b/experiments/skin-database/discord-bot/commands/reject.js index 4938be71..78cee6bb 100644 --- a/experiments/skin-database/discord-bot/commands/reject.js +++ b/experiments/skin-database/discord-bot/commands/reject.js @@ -1,7 +1,6 @@ const { reject, getStatus } = require("../../data/skins"); const Utils = require("../utils"); - -const TWEET_BOT_CHANNEL_ID = "445577489834704906"; +const { TWEET_BOT_CHANNEL_ID } = require("../../config"); async function handler(message, args) { const [md5] = args; diff --git a/experiments/skin-database/discord-bot/commands/tweet.js b/experiments/skin-database/discord-bot/commands/tweet.js new file mode 100644 index 00000000..63d48411 --- /dev/null +++ b/experiments/skin-database/discord-bot/commands/tweet.js @@ -0,0 +1,20 @@ +const tweet = require("../../tasks/tweet"); +const { CAPTBARITONE_USER_ID } = require("../../config"); + +async function handler(message, args) { + if (message.author.id !== CAPTBARITONE_USER_ID) { + await message.channel.send( + `Currently only @captbaritone can use this command` + ); + return; + } + await tweet(message.client); + client.destroy(); +} + +module.exports = { + command: "tweet", + handler, + usage: "", + description: "Tweet an approved skin" +}; diff --git a/experiments/skin-database/discord-bot/index.js b/experiments/skin-database/discord-bot/index.js index 4493c257..f4aa18fe 100644 --- a/experiments/skin-database/discord-bot/index.js +++ b/experiments/skin-database/discord-bot/index.js @@ -6,10 +6,7 @@ const DiscordWinstonTransport = require("../DiscordWinstonTransport"); const client = new Discord.Client(); -function handleStats() {} - const handlers = { - stats: handleStats, help: handleHelp }; diff --git a/experiments/skin-database/graphql.js b/experiments/skin-database/graphql.js new file mode 100644 index 00000000..9c418e80 --- /dev/null +++ b/experiments/skin-database/graphql.js @@ -0,0 +1,135 @@ +var graphqlHTTP = require("express-graphql"); +var { buildSchema } = require("graphql"); +const Skins = require("./data/skins"); + +// Construct a schema, using GraphQL schema language +var schema = buildSchema(` +enum TweetStatus { + TWEETED + REJECTED + APPROVED + UNREVIEWED +} +type InternetArchiveItem { + url: String + skinFilename: String +} + type Skin { + md5: String! + canonicalFilename: String + filenames: [String] + emails: [String] + tweetUrl: String + skinUrl: String + screenshotUrl: String + averageColor: String + webampUrl: String + tweetStatus: TweetStatus + readmeText: String + internetArchiveItem: InternetArchiveItem + } + type Query { + skin(md5: String!): Skin + } +`); + +class InternetArchiveItem { + constructor(md5) { + this._md5 = md5; + this._itemPromise = Skins.getInternetArchiveItem(md5); + } + + async url() { + const item = await this._itemPromise; + if (item == null) { + return null; + } + return Skins.getInternetArchiveUrl(item.identifier); + } + + async skinFilename() { + const item = await this._itemPromise; + if (item == null) { + return null; + } + return item.skinFileName; + } +} + +class Skin { + constructor(md5) { + this._md5 = md5; + this._skinPromise = Skins.getSkinByMd5(this._md5); + } + + md5() { + return this._md5; + } + + async _get(getter) { + const skin = await this._skinPromise; + if (skin == null) { + return null; + } + return getter(skin); + } + + async canonicalFilename() { + return this._get(skin => skin.canonicalFilename); + } + + async filenames() { + return this._get(skin => skin.fileNames); + } + + async emails() { + return this._get(skin => skin.emails); + } + + async tweetUrl() { + return this._get(skin => skin.tweetUrl); + } + + async skinUrl() { + return this._get(skin => skin.skinUrl); + } + + async screenshotUrl() { + return this._get(skin => skin.screenshotUrl); + } + + async webampUrl() { + return this._get(skin => skin.webampUrl); + } + + async tweetStatus() { + return Skins.getStatus(this._md5); + } + + async readmeText() { + return this._get(skin => skin.readmeText); + } + + async averageColor() { + return this._get(skin => skin.averageColor); + } + + internetArchiveItem() { + return new InternetArchiveItem(this._md5); + } +} + +// The root provides a resolver function for each API endpoint +var root = { + skin: ({ md5 }) => { + return new Skin(md5); + }, +}; + +exports.default = function() { + return graphqlHTTP({ + schema: schema, + rootValue: root, + graphiql: true, + }); +}; diff --git a/experiments/skin-database/index.js b/experiments/skin-database/index.js index 37fc24a4..f50e4202 100644 --- a/experiments/skin-database/index.js +++ b/experiments/skin-database/index.js @@ -5,6 +5,7 @@ const iaItems = db.get("internetArchiveItems"); // const info = require("/Volumes/Mobile Backup/skins/cache/info.json"); const Skins = require("./data/skins"); const port = 3001; +const graphql = require("./graphql").default; // TODO: Look into 766c4fad9088037ab4839b18292be8b1 // Has huge number of filenames in info.json @@ -66,6 +67,8 @@ app.get("/skins/:md5/download", async (req, res) => { res.redirect(301, skinUrl); }); +app.use(graphql()); + app.listen(port, () => console.log(`Example app listening on port ${port}!`)); async function main() { diff --git a/experiments/skin-database/package.json b/experiments/skin-database/package.json index 2790a924..879dd858 100644 --- a/experiments/skin-database/package.json +++ b/experiments/skin-database/package.json @@ -9,6 +9,8 @@ "express": "^4.17.1", "image-hash": "^3.5.1", "imagemin": "^7.0.0", + "express-graphql": "^0.9.0", + "graphql": "^14.5.8", "imagemin-optipng": "^7.0.0", "md5": "^2.2.1", "monk": "^7.0.0", diff --git a/experiments/skin-database/tasks/tweet.js b/experiments/skin-database/tasks/tweet.js new file mode 100644 index 00000000..d1392cca --- /dev/null +++ b/experiments/skin-database/tasks/tweet.js @@ -0,0 +1,73 @@ +const path = require("path"); +const logger = require("../logger"); +const Skins = require("../data/skins"); +const { TWEET_BOT_CHANNEL_ID } = require("../config"); + +const { spawn } = require("child_process"); + +function spawnPromise(command, args) { + return new Promise((resolve, reject) => { + const ls = spawn(command, args); + let stdout = ""; + let stderr = ""; + + ls.stdout.on("data", data => { + stdout += data; + }); + + ls.stderr.on("data", data => { + stderr += data; + console.log(`stderr: ${data}`); + }); + + ls.on("close", code => { + console.log(`child process exited with code ${code}`); + if (code === 0) { + resolve(stdout); + } else { + reject({ stdout, stderr }); + } + }); + }); +} + +async function tweet(discordClient) { + const tweetBotChannel = discordClient.channels.get(TWEET_BOT_CHANNEL_ID); + if (tweetBotChannel == null) { + throw new Error("Could not connect to the #tweet-bot channel"); + } + const tweetableSkin = await Skins.getSkinToTweet(); + if (tweetableSkin == null) { + await tweetBotChannel.send( + "Oops! I ran out of skins to tweet. Could someone please `!review` some more?" + ); + logger.info("Could not find a skin to tweet"); + return; + } + + const { md5, filename } = tweetableSkin; + const output = await spawnPromise( + path.resolve(__dirname, "../../tweetBot/tweet.py"), + [ + "tweet", + md5, + filename, + // "--dry", + ] + ); + await Skins.markAsTweeted(md5); + await tweetBotChannel.send(output.trim()); + const remainingSkinCount = await Skins.getTweetableSkinCount(); + if (remainingSkinCount < 10) { + await tweetBotChannel.send( + `Only ${remainingSkinCount} approved skins left. Could someone please \`!review\` some more?` + ); + } + logger.info("Tweeted a skin", { + md5, + filename, + url: output.trim(), + }); +} + +module.exports = tweet; diff --git a/experiments/skin-database/yarn.lock b/experiments/skin-database/yarn.lock index f39603ce..90ebcffb 100644 --- a/experiments/skin-database/yarn.lock +++ b/experiments/skin-database/yarn.lock @@ -5,7 +5,6 @@ "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== dependencies: "@nodelib/fs.stat" "2.0.3" run-parallel "^1.1.9" @@ -13,12 +12,10 @@ "@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== "@nodelib/fs.walk@^1.2.3": version "1.2.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== dependencies: "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" @@ -30,12 +27,10 @@ "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== "@types/glob@^7.1.1": version "7.1.1" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== dependencies: "@types/events" "*" "@types/minimatch" "*" @@ -44,14 +39,12 @@ "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": version "12.11.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.11.2.tgz#75ba3beda30d690b89a5089ca1c6e8e386150b76" - integrity sha512-dsfE4BHJkLQW+reOS6b17xhZ/6FB1rB8eRRvO08nn5o+voxf3i74tuyFWNH6djdfgX7Sm5s6LD8t6mJug4dpDw== -accepts@~1.3.7: +accepts@^1.3.7, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" dependencies: @@ -67,7 +60,6 @@ agent-base@^4.1.0: ajv@^6.5.5: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -113,7 +105,6 @@ array-flatten@1.1.1: array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array-uniq@^2.1.0: version "2.1.0" @@ -122,14 +113,12 @@ array-uniq@^2.1.0: asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= async-limiter@~1.0.0: version "1.0.0" @@ -144,7 +133,6 @@ async@^2.6.1: asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= aws-sdk@^2.469.0: version "2.469.0" @@ -163,12 +151,10 @@ aws-sdk@^2.469.0: aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== balanced-match@^1.0.0: version "1.0.0" @@ -181,7 +167,6 @@ base64-js@^1.0.2: bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: tweetnacl "^0.14.3" @@ -260,7 +245,6 @@ brace-expansion@^1.1.7: braces@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" @@ -340,7 +324,6 @@ camelcase@^5.0.0: caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= caw@^2.0.0, caw@^2.0.1: version "2.0.1" @@ -425,7 +408,6 @@ colorspace@1.1.x: combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" @@ -465,7 +447,7 @@ content-disposition@0.5.3, content-disposition@^0.5.2: dependencies: safe-buffer "5.1.2" -content-type@~1.0.4: +content-type@^1.0.4, content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" @@ -512,7 +494,6 @@ currently-unhandled@^0.4.1: dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" @@ -599,7 +580,6 @@ decompress@^4.0.0, decompress@^4.2.0: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= depd@~1.1.2: version "1.1.2" @@ -620,7 +600,6 @@ diagnostics@^1.1.1: dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" @@ -674,7 +653,6 @@ duplexer3@^0.1.4: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -779,6 +757,15 @@ executable@^4.1.0: dependencies: pify "^2.2.0" +express-graphql@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.9.0.tgz#00fd8552f866bac5c9a4612b2c4c82076107b3c2" + dependencies: + accepts "^1.3.7" + content-type "^1.0.4" + http-errors "^1.7.3" + raw-body "^2.4.1" + express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -830,7 +817,6 @@ ext-name@^5.0.0: extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extract-zip@^1.6.6: version "1.6.7" @@ -844,22 +830,18 @@ extract-zip@^1.6.6: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-glob@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.0.tgz#77375a7e3e6f6fc9b18f061cddd28b8d1eec75ae" - integrity sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -870,7 +852,6 @@ fast-glob@^3.0.3: fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= fast-safe-stringify@^2.0.4: version "2.0.6" @@ -879,7 +860,6 @@ fast-safe-stringify@^2.0.4: fastq@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2" - integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA== dependencies: reusify "^1.0.0" @@ -913,7 +893,6 @@ file-type@5.2.0, file-type@^5.2.0: file-type@^12.0.0: version "12.3.1" resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.3.1.tgz#8a13bb49332295e5b02c2d6bba6a6a179bd5898c" - integrity sha512-FXxY5h6vSYMjrRal4YqbtfuoKD/oE0AMjJ7E5Hm+BdaQECcFVD03B41RAWYJ7wyuLr/wRnCtFo7y37l+nh+TAA== file-type@^3.8.0: version "3.9.0" @@ -934,7 +913,6 @@ file-type@^8.1.0: file-type@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-9.0.0.tgz#a68d5ad07f486414dfb2c8866f73161946714a18" - integrity sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw== filename-reserved-regex@^2.0.0: version "2.0.0" @@ -951,7 +929,6 @@ filenamify@^2.0.0: fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" @@ -990,12 +967,10 @@ find-versions@^3.0.0: forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" combined-stream "^1.0.6" @@ -1058,14 +1033,12 @@ get-stream@^4.0.0: getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" glob-parent@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" - integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== dependencies: is-glob "^4.0.1" @@ -1083,7 +1056,6 @@ glob@^7.1.3: globby@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" - integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== dependencies: "@types/glob" "^7.1.1" array-union "^2.1.0" @@ -1143,15 +1115,19 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.2: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" +graphql@^14.5.8: + version "14.5.8" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.5.8.tgz#504f3d3114cb9a0a3f359bbbcf38d9e5bf6a6b3c" + dependencies: + iterall "^1.2.2" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.0: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: ajv "^6.5.5" har-schema "^2.0.0" @@ -1190,10 +1166,19 @@ http-errors@1.7.2, http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +http-errors@1.7.3, http-errors@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -1223,12 +1208,10 @@ ieee754@^1.1.4: ignore@^5.1.1: version "5.1.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" - integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== image-hash@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/image-hash/-/image-hash-3.5.1.tgz#14a8ba348bbf75009c5ca4c1208b6f1d415c3229" - integrity sha512-yVNdJSSFaGWAMqJts1UrqOiHGpDDvbMnCAR5fIZHSX9Ilb2qE+gmwZz/aVYCJNhznnTsjW7Zt1GbcytxV0YatA== dependencies: file-type "^9.0.0" jpeg-js "^0.2.0" @@ -1246,7 +1229,6 @@ imagemin-optipng@^7.0.0: imagemin@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-7.0.0.tgz#48651ab86c1975157306e3a18f8994814db085ff" - integrity sha512-TXvCSSIYl4KQUASur9S0+E4olVECzvxvZABU9rNqsza7vzIrUQMRTjyczGf8OmtcgvZ9jOYyinXW3epOpd/04A== dependencies: file-type "^12.0.0" globby "^10.0.0" @@ -1276,6 +1258,10 @@ inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +inherits@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + ini@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" @@ -1324,7 +1310,6 @@ is-fullwidth-code-point@^2.0.0: is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" @@ -1335,7 +1320,6 @@ is-natural-number@^4.0.1: is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-object@^1.0.1: version "1.0.1" @@ -1360,7 +1344,6 @@ is-stream@^1.0.0, is-stream@^1.1.0: is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-utf8@^0.2.0: version "0.2.1" @@ -1377,7 +1360,6 @@ isexe@^2.0.0: isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= isurl@^1.0.0-alpha5: version "1.0.0" @@ -1386,6 +1368,10 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" +iterall@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" + jmespath@0.15.0: version "0.15.0" resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" @@ -1393,12 +1379,10 @@ jmespath@0.15.0: jpeg-js@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.2.0.tgz#53e448ec9d263e683266467e9442d2c5a2ef5482" - integrity sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII= jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= json-buffer@3.0.0: version "3.0.0" @@ -1407,22 +1391,18 @@ json-buffer@3.0.0: json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: assert-plus "1.0.0" extsprintf "1.3.0" @@ -1432,7 +1412,6 @@ jsprim@^1.2.2: junk@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" - integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== keyv@3.0.0: version "3.0.0" @@ -1538,7 +1517,6 @@ make-dir@^1.0.0, make-dir@^1.2.0: make-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" - integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== dependencies: semver "^6.0.0" @@ -1602,7 +1580,6 @@ merge2@^1.2.3: merge2@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== methods@~1.1.2: version "1.1.2" @@ -1611,7 +1588,6 @@ methods@~1.1.2: micromatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== dependencies: braces "^3.0.1" picomatch "^2.0.5" @@ -1623,12 +1599,10 @@ mime-db@1.40.0, mime-db@^1.28.0: mime-db@1.42.0: version "1.42.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.25" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" - integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== dependencies: mime-db "1.42.0" @@ -1786,7 +1760,6 @@ number-is-nan@^1.0.0: oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" @@ -1887,7 +1860,6 @@ p-map-series@^1.0.0: p-pipe@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.0.0.tgz#ab1fb87c0b8dd79b3bb03a8a23680fc9d054e132" - integrity sha512-gwwdRFmaxsT3IU+Tl3vYKVRdjfhg8Bbdjw7B+E0y6F7Yz6l+eaQLn0BRmGMXIhcPDONPtOkMoNwx1etZh4zPJA== p-reduce@^1.0.0: version "1.0.0" @@ -1956,7 +1928,6 @@ path-type@^1.0.0: path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pend@~1.2.0: version "1.2.0" @@ -1965,12 +1936,10 @@ pend@~1.2.0: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.5: version "2.0.7" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" - integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" @@ -1997,7 +1966,6 @@ pinkie@^2.0.0: pngjs@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== prepend-http@^1.0.1: version "1.0.4" @@ -2041,7 +2009,6 @@ pseudomap@^1.0.2: psl@^1.1.24: version "1.4.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" - integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== pump@^3.0.0: version "3.0.0" @@ -2057,12 +2024,10 @@ punycode@1.3.2: punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== puppeteer@^1.17.0: version "1.17.0" @@ -2084,7 +2049,6 @@ qs@6.7.0: qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== query-string@^5.0.1: version "5.1.1" @@ -2111,6 +2075,15 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -2166,7 +2139,6 @@ replace-ext@^1.0.0: request@^2.81.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -2223,7 +2195,6 @@ responselike@1.0.2: reusify@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rgb-hex@^2.1.0: version "2.1.0" @@ -2238,7 +2209,6 @@ rimraf@^2.5.4, rimraf@^2.6.1, rimraf@~2.6.2: run-parallel@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" @@ -2285,7 +2255,6 @@ semver-truncate@^1.1.2: semver@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== send@0.17.1: version "0.17.1" @@ -2345,7 +2314,6 @@ simple-swizzle@^0.2.2: slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== snekfetch@^3.6.4: version "3.6.4" @@ -2408,7 +2376,6 @@ squeak@^1.0.0: sshpk@^1.7.0: version "1.16.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -2544,7 +2511,6 @@ to-buffer@^1.1.1: to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" @@ -2555,7 +2521,6 @@ toidentifier@1.0.0: tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== dependencies: psl "^1.1.24" punycode "^1.4.1" @@ -2583,7 +2548,6 @@ tunnel-agent@^0.6.0: tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= tweetnacl@^1.0.0: version "1.0.1" @@ -2614,7 +2578,6 @@ unpipe@1.0.0, unpipe@~1.0.0: uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" @@ -2656,7 +2619,6 @@ uuid@3.3.2, uuid@^3.0.1: uuid@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== validate-npm-package-license@^3.0.1: version "3.0.4" @@ -2672,7 +2634,6 @@ vary@~1.1.2: verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: assert-plus "^1.0.0" core-util-is "1.0.2"