From ed9d5c68fd17572d5f0796a917153cdf6ac3b96a Mon Sep 17 00:00:00 2001 From: Penelope Gomez / Pogmommy Date: Tue, 14 Feb 2023 14:35:57 -0700 Subject: [PATCH] 2.0.0 --- TwitToMast.js | 646 ++------ URLList.csv | 1 - multi.js | 36 +- null | Bin 171850 -> 0 bytes package-lock.json | 3140 ------------------------------------ ref/classes/arguments.js | 48 + ref/classes/formats.js | 15 + ref/classes/tweets.js | 245 +++ ref/classes/xpaths.js | 60 + ref/functions/csv.js | 45 + ref/functions/elements.js | 37 + ref/functions/functions.js | 41 + ref/functions/mastodon.js | 80 + ref/functions/support.js | 87 + usage.txt | 42 + usernameslist.txt | 2 +- 16 files changed, 899 insertions(+), 3626 deletions(-) delete mode 100644 URLList.csv delete mode 100644 null delete mode 100644 package-lock.json create mode 100644 ref/classes/arguments.js create mode 100644 ref/classes/formats.js create mode 100644 ref/classes/tweets.js create mode 100644 ref/classes/xpaths.js create mode 100644 ref/functions/csv.js create mode 100644 ref/functions/elements.js create mode 100644 ref/functions/functions.js create mode 100644 ref/functions/mastodon.js create mode 100644 ref/functions/support.js create mode 100644 usage.txt diff --git a/TwitToMast.js b/TwitToMast.js index dbc1b83..f3debfa 100644 --- a/TwitToMast.js +++ b/TwitToMast.js @@ -1,210 +1,41 @@ //REQUIREMENTS - const webdriver = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); -const By = webdriver.By; -const until = webdriver.until; const fs = require('fs'); -const csvWriter = require('csv-write-stream'); -const Masto = require('mastodon'); -const client = require('https'); -const request = require("request"); -const Q = require("q"); -//VALIDATE INPUT +//LOCAL REQUIREMENTS +const support = require('./ref/functions/support.js'); +const debuglog = support.debuglog; +const elements = require('./ref/functions/elements.js'); +const csv = require('./ref/functions/csv.js'); +const mastodon = require('./ref/functions/mastodon.js'); -const args = process.argv; -if (args[2] == "-h"){ - console.log("usage: $node ./TwitToMast.js [username] [tweet count] [debug level] [disable posts] [print header]"); - console.log(" username: (string) -username of account to scrape - required"); - console.log(" tweet count: (integer) -number of tweets to scrape - required"); - console.log(" debug level: (0-2) -amount of information to print to console - 0 by default"); - console.log(" disable posts: ('write','noWrite') -enable/disable posting to Mastodon - disabled by default"); - console.log(" print header: ('printHeader') -enable attaching a header with the user's name, twitter"); - console.log(" handle, and link to tweet - disabled by default"); - console.log(" config.txt:"); - console.log(" API_KEY"); - console.log(" API_URL"); - console.log(" ENABLE_QUOTE_TWEETS"); - console.log(" ENABLE_THREAD_TWEETS"); - console.log(" "); - process.exit(0); -} -if (typeof args[2] == 'undefined') { - console.log("Expected String with length greater than 1, got '" + args[2] + "' instead"); - console.log("for help: $TwitToMast.js -h"); - process.exit(1); -} else if (args[2].length < 1) { - console.log("Expected String with length greater than 1, got '" + args[2] + "' instead"); - console.log("for help: $TwitToMast.js -h"); - process.exit(1); -} -if (isNaN(parseInt(args[3]))){ - console.log("Expected Integer, got '" + args[3] + "' instead"); - console.log("for help: $TwitToMast.js -h"); - process.exit(1); -} -if (!((parseInt(args[4]) >= 0) && (parseInt(args[4]) <= 2)) && (typeof args[4] != 'undefined')){ - console.log("Expected [0-2], got '" + args[4] + "' instead"); - console.log("for help: $TwitToMast.js -h"); - process.exit(1); -} -if ((args[5] != 'noWrite' && args[5] != 'write') && typeof args[5] != 'undefined') { - console.log("Expected 'noWrite', 'write', or undefined, got '" + args[5] + "' instead"); - console.log("for help: $TwitToMast.js -h"); - process.exit(1); -} +const Args = require('./ref/classes/arguments.js'); +const args = new Args(); +const Formats = require('./ref/classes/formats.js'); +const format = new Formats(); +const Tweets = require('./ref/classes/tweets.js'); -//PROCESS CONFIG +//LOG ARGUMENTS -const config = fs.readFileSync("./config.txt").toString().split(/[\r\n]+/); -var M = new Masto({ - access_token: config[0], - api_url: config[1] -}) -var modulesToEnable = [false, false]; -for(var c = 2; c < 4; c++){ - if (config[c] = "true"){ - modulesToEnable[c-2] = true; - } else if (config[c] = "false"){ - modulesToEnable[c-2] = false; - } else { - console.log("config.txt line " + (c+1) + ": Expected [true/false], got '" + config[c] + "' instead"); - console.log("for help: $TwitToMast.js -h"); - process.exit(1); - } -} +support.validateArgs(); +support.logArguments(); +//SETUP SAVE DIRECTORY VARIABLES -//PROCESS ARGUMENTS - -const userName = args[2]; -const maxTweetScan = parseInt(args[3]); -const debug = args[4]; -if (typeof args[4] == 'undefined') {debug = 0;} -var disablePosts = false; -if (typeof args[5] == 'undefined') { - disablePosts = false; -} else if (args[5] == 'noWrite') { - disablePosts = true; -} -var printHeader = false; -if (args[6] == 'printHeader'){ - printHeader = true; -} else { - printHeader = false; -} -debuglog(args,2); -debuglog("userName: " + userName,2); -debuglog("maxTweetScan: " + maxTweetScan,2); -debuglog("debug: " + debug,2); -debuglog("disable posts: " + disablePosts,2); - -//FUNCTIONS - -function downloadImage(url, filepath) { - return new Promise((resolve, reject) => { - client.get(url, (res) => { - if (res.statusCode === 200) { - res.pipe(fs.createWriteStream(filepath)) - .on('error', reject) - .once('close', () => resolve(filepath)); - } else { - res.resume(); - reject(new Error(`Request Failed With a Status Code: ${res.statusCode}`)); - - } - }); - }); -} - -function debuglog(debugString,logLevel) { - prefix = ""; - switch (logLevel) { - case 0: - prefix = ""; - break; - case 1: - prefix = "-"; - break; - case 2: - prefix = "!"; - break; - } - if (logLevel <= debug) {console.log(prefix + " " + debugString);} -} - -function expandUrl(shortUrl) { - var deferred = Q.defer(); - request( { method: "HEAD", url: shortUrl, followAllRedirects: true }, - function (error, response) { - if (error) { - deferred.reject(new Error(error)); - } else { - deferred.resolve(response.request.href); - } - }); - return deferred.promise; -} - -debuglog("Setting up...",1); -debuglog("userName: " + userName,1); -debuglog("maxTweetScan: " + maxTweetScan,1); -debuglog("debug: " + debug,1); -debuglog("API_URL: " + config[1],1); -debuglog("Enable Quote Tweets: " + modulesToEnable[0],1); -debuglog("Enable Thread Tweets: " + modulesToEnable[1],1); -debuglog("Disable posting to Mastodon: " + disablePosts,1); -debuglog("running from loop: " + printHeader,1); - -//SETUP REMAINDER OF VARIABLES - -const csvFilename = "./URLList.csv"; const localDir = './'; -const imgSavePath = (localDir + userName + '/'); +const imgSavePath = (`${localDir}imgs/${args.userName}/`); if (!fs.existsSync(imgSavePath)){ fs.mkdirSync(imgSavePath); } - -//XPATH CONSTANTS - -const timeLineXPath = `//*[@id="react-root"]/div/div/div[2]/main/div/div/div/div/div/div[3]/div/div/section/div/div`; //the immediate parent div of all tweets - -const tweetXPath = (timeLineXPath + `/div`); //the div containing individual tweet content: (tweetXpath + '[1]') - -//the following xpaths follow an individual tweet xpath: (tweetXpath + '[1]' + variableXPath) - -const urlCardXPath = `/div/div/div/article/div/div/div/div[*]/div[*]/div[*]/div[*]/div/div[2]/a` - -const tweeterHandle = `/div/div/div/article/div/div/div/div[2]/div[2]/div[1]/div/div/div[1]/div/div/div[2]/div/div[1]/a/div/span[contains(text(),"@")]` //text label containing tweeter's handle - -const tweeterName = `/div/div/div/article/div/div/div/div[2]/div[2]/div[1]/div/div/div[1]/div/div/div[1]/div/a/div/div[1]/span/span` //text label containing tweeter's name - -const quoteTweetHandleXPath = `/div/div/div/article/div/div/div/div[2]/div[2]/div[2]/div[2]/div[*]/div[2]/div/div[1]/div/div/div/div/div/div[2]/div[1]/div/div/div/span`; //xpath to text label that reveals if a tweet is a quote tweet (leads to the quote tweeted user's handle) - -const quoteTweetContentXPath= `/div/div/div/article/div/div/div/div[2]/div[2]/div[2]/div[2]/div[*]/div[2][div/div[1]/div/div/div/div/div/div[2]/div[1]/div/div/div/span]` //xpath to locate entirety of Quote Tweeted Content - -const retweetIndicatorXPath = `/div/div/div/article/div/div/div/div[1]/div/div/div/div/div[2]/div/div/div/a/span`; //xpath to text label that reveals if a tweet is a retweet - -const threadIndicatorXPath = `/div/div/div/article/div/a/div/div[2]/div/span`; //xpath to text label that reveals if a tweet is a part of a thread - -const tweetTextXPath = `//div[@data-testid="tweetText"]`; //xpath that leads to div containing all tweet text - -const tweetURLXPath = `//div[3]/a[contains(@href, 'status')]`; //xpath to tweet url - -const singleImageXPath = `//div[2]/div/img[@alt="Image"]`; //xpath to image that reveals if a tweet has one image - -const multiImageXPath = `//div[2]/div[2]/div[2]/div[2]/div/div/div/div/div[2]/div/div[1]/div[1]//a/div/div/img[@alt="Image"]`; //xpath to image that reveals if a tweet has more than one image - -//the following xpaths follow and individual tweet xpath and are used to find all images in a tweet with multiple images: (tweetXpath + '[1]' + multiImage1XPath + x + multiImage2XPath + y + multiImage3XPath) -// the following combinations of x,y variables point to the corresponding image -// 1,1 = first image -// 2,1 = second image -// 2,2 = third image -// 1,2 = fourth image -const multiImage1XPath = `//div[2]/div[2]/div[2]/div[2]/div/div/div/div/div[2]/div/div[`; -const multiImage2XPath = `]/div[`; -const multiImage3XPath = `]//a/div/div/img[@alt="Image"]`; +const csvSaveDir = (`${localDir}csv/`); +const csvFileName = (`${csvSaveDir + args.userName}.csv`); +if (!fs.existsSync(csvSaveDir)){ + fs.mkdirSync(csvSaveDir); +} +var csvOutput = "_"; +debuglog(`csv file name: ${csvFileName}`,2); +debuglog(`user image save path${imgSavePath}`,2); //SETUP HEADLESS WEBDRIVER @@ -212,314 +43,187 @@ const screen = { width: 1920, height: 1080 }; +let chromeOptions = new chrome.Options().addArguments(['user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36']); +if (!args.displayBrowser) {chromeOptions.headless().windowSize(screen);} var driver = new webdriver.Builder() .forBrowser('chrome') - .setChromeOptions(new chrome.Options().headless().windowSize(screen).addArguments(['user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36'])) + .setChromeOptions(chromeOptions) .build(); //START WEBDRIVER AND ZOOM OUT -driver.get('https://mobile.twitter.com/' + userName + '/'); +debuglog("starting webdriver...",2); +driver.get(`https://mobile.twitter.com/${args.userName}/`); +debuglog("started webdriver!",2); driver.executeScript("document.body.style.zoom='35%'"); (async function(){ - //WAIT UNTIL TIMELINE RENDERS - await driver.wait(until.elementLocated(By.xpath(timeLineXPath + `[count(div) > 1]`)), 30000); - //OPEN CSV FILE, CREATE IF NEEDED - - var csvOutput = " "; - await fs.readFile(csvFilename, "utf-8", (err, data) => { - if (err) { - debuglog("Could not get CSV Data!",2) - debuglog(err,1); - writer = csvWriter({sendHeaders: false}); - writer.pipe(fs.createWriteStream(csvFilename)); - writer.write({ - header1: 'URLs' - }); - writer.end(); - } else { - csvOutput = data; - } + debuglog("opening csv",2); + fs.readFile(csvFileName, "utf-8", (err, data) => { + if (err) { + debuglog("Could not get CSV Data!", 2); + debuglog(err, 2); + csv.initCSV(csvFileName); + } else { + debuglog(`CSV OUTPUT IS:\n${data}`, 2); + csvOutput = data; + } }); - - for (var i = 1; i < (maxTweetScan+1); i++) { - //RUN THIS CODE FOR EVERY TWEET SCANNED - debuglog("Processing tweet " + i + " of " + maxTweetScan + "...",1); - //PER-TWEET VARIABLES - var thisTweetXPath = tweetXPath + `[1]`; - var keepTweet = false; - var quotedContent = ""; - + debuglog("opened csv",2); + var processedTweets = [];//DEFINE ARRAY THAT WILL BE POPULATED WITH TWEETS PROCESSED DURING THIS SESSION + for (var t = 1; t < (parseInt(args.tweetCount) + 1); t++) {//LOOP THE NUMBER OF TIMES SPECIFIED IN ARGS + + debuglog(format.notice(`Processing tweet #${t} of ${args.tweetCount}...`),1); + var homeTweet = new Tweets("home",t); //RESET HOME TWEET FOR PROCESSING + var threadTweet = new Tweets("thread",1); //RESET HOME TWEET FOR PROCESSING + var threadTweetArray = []; //ARRAY OF THREAD TWEET OBJECTS + + await elements.waitFor(driver,homeTweet.x.containsDivs,args.timeOut); //WAIT FOR TIMELINE TO POPULATE ITSELF WITH TWEETS //REMOVE NON-PRIMARY TWEETS debuglog("Filtering out disabled tweets...",2) - while (!keepTweet) { - await driver.wait(until.elementLocated(By.xpath(thisTweetXPath)), 30000); - - if (!modulesToEnable[0]) { - //CHECK FOR QUOTE TWEETS - isQT = await driver.findElement(webdriver.By.xpath(thisTweetXPath + quoteTweetContentXPath)).then(function() { - return true; // It existed - }, function(err) { - if (err instanceof webdriver.error.NoSuchElementError) { - return false; // It was not found - } else { - //webdriver.promise.rejected(err); - } - }); - } - if (!modulesToEnable[1]) { - //CHECK FOR THREAD TWEET - isThread = await driver.findElement(webdriver.By.xpath(thisTweetXPath + threadIndicatorXPath)).then(function() { - return true; // It existed - }, function(err) { - if (err instanceof webdriver.error.NoSuchElementError) { - return false; // It was not found - } else { - //webdriver.promise.rejected(err); - } - }); - } - - //CHECK FOR RETWEETS - isRT = await driver.findElement(webdriver.By.xpath(thisTweetXPath + retweetIndicatorXPath)).then(function() { - return true; // It existed - }, function(err) { - if (err instanceof webdriver.error.NoSuchElementError) { - return false; // It was not found - } else { - //webdriver.promise.rejected(err); - } - }); + while (!homeTweet.keep) { + debuglog(`xpath: ${homeTweet.x.path}`,2) //PRINT XPATH OF CURRENT TWEET + await elements.waitFor(driver, homeTweet.x.path,args.timeOut); //WAIT UNTIL CURRENT TWEET IS LOADED - //IF TWEET IS DISABLED, MARK FOR REMOVAL - if (isRT || ((!modulesToEnable[0] && isQT) || (!modulesToEnable[1] && isThread)) ) { - //TWEET IS QT, RT, OR THREAD - keepTweet = false; - driver.executeScript('var element = document.evaluate(`' + thisTweetXPath + '`,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.remove();'); + await homeTweet.identifyElements(driver); //IDENTIFY WHAT ELEMENTS EXIST WITHIN TWEET + + if ((((homeTweet.isRT || homeTweet.isAR) || homeTweet.isPin) || (!args.enableQuotes && homeTweet.isQT)) || (!args.enableThreads && homeTweet.isThread) ) {//IF TWEET IS DISABLED, MARK FOR REMOVAL + debuglog("removing tweet",2); + homeTweet.keep = false; //INDICATE THAT WE ARE NOT READY TO EXIT, CURRENT TWEET IS NOT ELIGIBLE FOR REPOST + await driver.executeScript(`var element = document.evaluate(\`${homeTweet.x.path}\`,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.remove();`); //REMOVE TWEET FROM DOM TO PROCESS NEXT + homeTweet = new Tweets("home",1); //RESET HOME TWEET OBJECT TO MAKE NEW TWEET READY FOR CHECKING } else { - keepTweet = true; + debuglog("keeping tweet! It is eligible for processing"); + homeTweet.keep = true; //INDICATE THAT WE ARE READY TO EXIT, CURRENT TWEET IS ELIGIBLE FOR REPOST } } - //GET TWEET URL - await driver.wait(until.elementLocated(By.xpath(thisTweetXPath + tweetURLXPath)), 1000); - mobileTweetURL = await driver.findElement(By.xpath(thisTweetXPath + tweetURLXPath)).getAttribute('href'); - tweetURL = await mobileTweetURL.replace('mobile.',''); - debuglog(tweetURL,2); + processedTweets.forEach(function(u, uindex) { //CHECK IF TWEET HAS BEEN PROCESSED IN THIS SESSION + debuglog(`${u.url} exists at index ${uindex} ${(u.url == homeTweet.url)}`); + if (u.url == homeTweet.url) {homeTweet.processed = true;} + }) + debuglog(`tweet has been proccessed: ${homeTweet.processed}`); - if (!csvOutput.includes(tweetURL)) { + if (!homeTweet.processed && !csvOutput.includes(homeTweet.url)) { //IF CSV DOES NOT CONTAIN THE TWEET URL + debuglog(`Tweet #${homeTweet.no} has not been processed.`, 1); - //SETUP TEXT FOR TWEET STATUS - var tweetHasText = false; - await driver.wait(until.elementLocated(By.xpath(timeLineXPath + tweetTextXPath)), 1000); - tweetText = "" + if (homeTweet.isThread){ //IF TWEET IS A THREAD, RUN TWEET THREAD STUFF + var threadTweet = new Tweets("thread",1); //CREATE NEW THREAD TWEET OBJECT + var threadTweetArray = []; //ARRAY OF THREAD TWEET OBJECTS + debuglog(`THREAD TIMELINE: ${threadTweet.x.timeLine}`,2); //XPATH OF THREAD TIMELINE - //IS TWEET PART OF MULTISCRAPER, IF SO ADD HEADER - if (printHeader) { - tweeterHandleText = await driver.findElement(By.xpath(thisTweetXPath + tweeterHandle)).getText(); - tweeterNameText = await driver.findElement(By.xpath(thisTweetXPath + tweeterName)).getText(); - tweetText = (tweeterNameText + " (" + tweeterHandleText + ")\r\n" + tweetURL + "\r\n\r\n") - } - - //DOES TWEET HAVE TEXT - tweetHasText = await driver.findElement(webdriver.By.xpath(thisTweetXPath + tweetTextXPath)).then(function() { - return true; // It existed - }, function(err) { - if (err instanceof webdriver.error.NoSuchElementError) { - return false; // It was not found - } else { - webdriver.promise.rejected(err); - } - }); - //IF SO, ADD BODY TEXT TO TWEET TEXT - if (tweetHasText){ - tweetText = tweetText + await driver.findElement(By.xpath(thisTweetXPath + tweetTextXPath)).getText(); - } - - //DOES TWEET HAVE A URL CARD - tweetHasURL = await driver.findElement(webdriver.By.xpath(thisTweetXPath + urlCardXPath)).then(function() { - return true; // It existed - }, function(err) { - if (err instanceof webdriver.error.NoSuchElementError) { - return false; // It was not found - } else { - webdriver.promise.rejected(err); - } - }); - //IF SO, ADD URL TO TWEET TEXT - if (tweetHasURL){ - tweetCardURL = await driver.findElement(By.xpath(thisTweetXPath + urlCardXPath)).getAttribute('href'); - await expandUrl(tweetCardURL) - .then(function (longUrl) { - debuglog("Long URL:" + longUrl,2); - tweetText = tweetText + "\r\n\r\n" + longUrl; - }); - } - - //IS TWEET A QUOTE TWEET - isQT = await driver.findElement(webdriver.By.xpath(thisTweetXPath + quoteTweetContentXPath)).then(function() { - return true; // It existed - }, function(err) { - if (err instanceof webdriver.error.NoSuchElementError) { - return false; // It was not found - } else { - //webdriver.promise.rejected(err); - } - }); - //IF SO, ADD QUOTE TWEET LINK TO TWEET TEXT - if (isQT){ - await driver.sleep(1 * 1000) - quotedContent = await driver.findElement(webdriver.By.xpath(thisTweetXPath + quoteTweetContentXPath)); - await driver.findElement(webdriver.By.xpath(thisTweetXPath + quoteTweetContentXPath)).sendKeys(webdriver.Key.CONTROL, webdriver.Key.ENTER); - var parent = await driver.getWindowHandle(); - var windows = await driver.getAllWindowHandles(); - await driver.switchTo().window(windows[1]).then(() => { - driver.getCurrentUrl().then(url => { - debuglog('current url: "' + url + '"',2); - tweetText = tweetText + "\r\n\r\n" + "Quote tweeting: " + url; - }); - driver.switchTo().window(parent); - }); - await driver.switchTo().window(windows[1]); - await driver.close(); - await driver.switchTo().window(parent); - } - - debuglog(tweetText,1) - - //CODE TO RUN IF TWEET IS NOT IN CSV - debuglog("Tweet #" + i + " has not been processed.", 1); - - //HANDLE SAVING SINGLE IMAGES - var singleImageExisted = await driver.findElement(webdriver.By.xpath(thisTweetXPath + singleImageXPath)).then(function() { - return true; // It existed - }, function(err) { - if (err instanceof webdriver.error.NoSuchElementError) { - return false; // It was not found - } else { - webdriver.promise.rejected(err); - } - }); - if (singleImageExisted) { - debuglog("Tweet #" + i + " contains a single image.", 2) - imageCount = 1; - imageURL = await driver.findElement(webdriver.By.xpath(thisTweetXPath + singleImageXPath)).getAttribute("src"); - await downloadImage(imageURL, imgSavePath + i + "." + 1 +'.jpg') - .then(/*console.log*/) - .catch(console.error); - debuglog("Downloaded " + imageCount + "image from tweet #" + i + ".", 2) - } - - //HANDLE SAVING MULTTIPLE IMAGES - var multiImageExisted = await driver.findElement(webdriver.By.xpath(thisTweetXPath + multiImageXPath)).then(function() { - return true; // It existed - }, function(err) { - if (err instanceof webdriver.error.NoSuchElementError) { - return false; // It was not found - } else { - webdriver.promise.rejected(err); - } - }); - if (multiImageExisted) { - debuglog("Tweet #" + i + " contains multiple images.", 2) - imageCount = 0; - for (var x = 1; x < 3; x++) { - for (var y = 1; y < 3; y++) { - thisIteratExists = await driver.findElement(webdriver.By.xpath(thisTweetXPath + multiImage1XPath + x + multiImage2XPath + y + multiImage3XPath)).then(function() { - return true; // It existed - }, function(err) { - if (err instanceof webdriver.error.NoSuchElementError) { - return false; // It was not found - } else { - debuglog('I hope this doesnt break'); - //webdriver.promise.rejected(err); - } - }); - if (thisIteratExists) { - debuglog(x + "," + y + " Exists!") - iteratImgURL = await driver.findElement(webdriver.By.xpath(thisTweetXPath + multiImage1XPath + x + multiImage2XPath + y + multiImage3XPath)).getAttribute("src"); - imageCount++; - await downloadImage(iteratImgURL, imgSavePath + i + "." + imageCount +'.jpg') - .then(/*console.log*/) - .catch(console.error); - } - } - } - debuglog("Downloaded " + imageCount + "images from tweet #" + i + ".", 2) - } - - //HANDLE POSTING TWEETS TO MASTODON - if (!disablePosts){ - if (singleImageExisted || multiImageExisted) {var imageExisted = true} else {var imageExisted = false} - if (imageExisted) { + driver.executeScript(`window.open("${homeTweet.url}");`); //OPEN THREAD IN NEW TAB + var parent = await driver.getWindowHandle(); + var windows = await driver.getAllWindowHandles(); + await driver.switchTo().window(windows[1]); //SWITCH TO NEW TAB WITH THREAD - //MAKE MASTODON POST WITH IMAGES - debuglog("Uploading images to Mastodon...",1); - var imageArray = []; - for (var f = 1; f < (imageCount+1); f++) { - await M.post('media', { file: fs.createReadStream(imgSavePath + i + '.' + f + '.jpg') }).then(resp => { - imageArray.push(resp.data.id); - }, function(err) { - if (err) { - debuglog(err,1); - } - }) + await elements.waitFor(driver,threadTweet.x.containsDivs,args.timeOut); + await driver.executeScript("document.body.style.zoom='20%'"); + await driver.executeScript("window.scrollTo(0, 0)"); + //await driver.executeScript("window.scrollTo(0, -document.body.scrollHeight)"); + await driver.sleep(1*5000) //WAIT 5 SECONDS TO GIVE BROWSER TIME TO SET ITSELF UP + + await elements.waitFor(driver,threadTweet.x.containsDivs,args.timeOut); //WAIT UNTIL THREAD IS POPULATED WITH DIVS + + for (var r = 1; !threadTweet.entryIsOpen; r++) {//LOOP UNTIL INDICATED THAT WE'VE REACHED THE ENTRY TWEET + threadTweet = new Tweets("thread", r); //RESETS ALL THREAD TWEET VARIABLES TO START FRESH + + debuglog(threadTweet.x.path,2); //PRINTS XPATH TO CURRENT ITERATE DIV + threadTweet.entryIsOpen = await elements.doesExist(driver,threadTweet.x.entryTweet) // CHECKS IF THE CURRENT ITERATE DIV IS THE ONE USED TO OPEN THE THREAD + if (!threadTweet.entryIsOpen){ //CURRENT ITERATE DIV DOES NOT CONTAIN THE TWEET USED TO OPEN THE THREAD + + await threadTweet.identifyElements(driver); //IDENTIFIES WHAT THE TWEET CONTAINS + + debuglog(`current tweet #${threadTweet.no} is not entry to thread`,2); + + debuglog(csvOutput); + + if (processedTweets.some(e => e.url == processedTweets.url)) { + debuglog("TWEET EXISTS IN PROCESSED ARRAY!!",2); + } + + if (!csvOutput.includes(threadTweet.url)) {//CODE TO RUN IF TWEET IS NOT IN CSV + debuglog(`Thread tweet #${threadTweet.no} has not been processed.`, 1); + + await threadTweet.getElementProperties(driver); //COMPILE HEADER, BODY, AND FOOTER + + threadTweet.compileText();//COMPILE TEXT FOR CROSS-POST + + threadTweet.printPreview()//PRINT TWEET PREVIEW + + await threadTweet.downloadImages(driver,imgSavePath); + + await threadTweet.uploadImages(imgSavePath); + } + threadTweetArray.push(threadTweet); + processedTweets.push(threadTweet); + } + } - imageArray.length = 4 - debuglog("Publishing post to Mastodon...",1); - await M.post('statuses', { status: tweetText, media_ids: imageArray }, (err, data) => { - if (err) { - debuglog("Post to Mastodon failed with error: " + err, 1); - } else { - //ADD TWEET TO CSV TO PREVENT FUTURE INDEXING - debuglog("Posting tweet #" + i + " to Mastodon succeeded!", 1); - writer = csvWriter({sendHeaders: false}); - writer.pipe(fs.createWriteStream(csvFilename, {flags: 'a'})); - writer.write({ - header1: tweetURL - }); - writer.end(); - } + + var csvArray = csvOutput.split(/[\r\n]+/); + for (var a = 0;a < threadTweetArray.length; a++) {//SET TWEET OBJECT ID TO SAVED ID IF IT EXISTS IN CSV + debuglog(`CSV ARRAY: ${csvArray}`,2); + csvArray.forEach(function(row, csvIndex) { + debuglog(`csv row: ${row}`); + rowArr = row.split(","); + debuglog(`searching for '${threadTweetArray[a].url}' in '${row}'`,2) + if (row.includes(threadTweetArray[a].url)){ + debuglog(`URL Exists at index ${csvIndex} of csv`,2); + threadTweetArray[a].id = rowArr[1]; + threadTweetArray[a].posted = true; + } + }) + } + + threadTweetArray.forEach(twt =>{//LIST IDs THAT WERE DERIVED FROM CSV + debuglog(`${twt.no} id: ${twt.id}`,2) }) - } else { - //MAKE MASTODON POST WITHOUT IMAGES - debuglog("Publishing post to Mastodon...",1); - - await M.post('statuses', { status: tweetText}, (err, data) => { - if (err) { - debuglog("Post to Mastodon failed with error: " + err, 1); - } else { - //ADD TWEET TO CSV TO PREVENT FUTURE PROCESSING - debuglog("Posting tweet #" + i + " to Mastodon succeeded!", 1); - writer = csvWriter({sendHeaders: false}); - writer.pipe(fs.createWriteStream(csvFilename, {flags: 'a'})); - writer.write({ - header1: tweetURL - }); - writer.end(); + + for (var a = 0;a < threadTweetArray.length; a++) {//POST TO MASTODON REFERENCING ID OF PRIOR OBJECT AS PROMPT + if (a != 0) {threadTweetArray[a].prompt = threadTweetArray[a - 1].id} + if (!threadTweetArray[a].posted){ + debuglog(`posting tweet: ${threadTweetArray[a].no} to mastodon in reply to id: ${threadTweetArray[a].prompt}`, 2); + threadTweetArray[a].id = await mastodon.postStatus(threadTweetArray[a],csvFileName,csvOutput) + debuglog(`POSTED TO MASTODON AND GOT BACK AN ID OF: ${threadTweetArray[a].id}`,2) } - }) + } + + await driver.close(); + await driver.switchTo().window(parent); } - } - } else { - //CODE TO RUN IF TWEET IS IN CSV - debuglog("Tweet #" + i + " has already been processed.",1); - } + await homeTweet.getElementProperties(driver); - if (i < maxTweetScan) {driver.executeScript('var element = document.evaluate(`' + thisTweetXPath + '`,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.remove();');} + homeTweet.compileText();//COMPILE TEXT FOR CROSS-POST + + homeTweet.printPreview();//PRINT TWEET PREVIEW + + await homeTweet.downloadImages(driver,imgSavePath);//DOWNLOAD IMAGES FROM TWITTER + + await homeTweet.uploadImages(imgSavePath);//UPLOAD IMAGES TO MASTODON + + if (threadTweetArray.length>0) {homeTweet.prompt = threadTweetArray[threadTweetArray.length-1].id;} + debuglog(`Publishing post ${homeTweet.no} to Mastodon...`,2); + homeTweet.id = await mastodon.postStatus(homeTweet,csvFileName,csvOutput); + + processedTweets.push(homeTweet); + } else { //HOME TWEET EXISTS IN CSV + debuglog(`Tweet #${homeTweet.no} has already been processed.`,1); //HOME TWEET EXISTS IN CSV + } + + if (homeTweet.no < args.tweetCount) {driver.executeScript(`var element = document.evaluate(\`${homeTweet.x.path}\`,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.remove();`);}//REMOVE TWEET FROM DOM TO PROCESS NEXT TWEET } - //REMOVE SAVED IMAGE FILES - debuglog("Cleaning up...",1); - fs.rm(imgSavePath, { recursive: true, force: true }, (error) => { - //you can handle the error here - }); - debuglog("Finished scraping " + userName + "'s tweets",1) - //EXIT WEBDRIVER - driver.quit(); + debuglog("Cleaning up...",1); //REMOVE SAVED IMAGES + fs.rm(imgSavePath, { recursive: true, force: true }, (error) => { + debuglog(error,2); + }); + debuglog(format.bold(`Finished scraping @${args.userName}'s tweets`),1) //CLOSE WEBDRIVER + setTimeout(() => { + driver.quit(); + }, 100); }()); \ No newline at end of file diff --git a/URLList.csv b/URLList.csv deleted file mode 100644 index 0539374..0000000 --- a/URLList.csv +++ /dev/null @@ -1 +0,0 @@ -URLs diff --git a/multi.js b/multi.js index 4e5903a..28d526b 100644 --- a/multi.js +++ b/multi.js @@ -1,29 +1,39 @@ +//REQUIREMENTS const childProcess = require('child_process') const path = require('path'); +const support = require('./ref/functions/support.js'); + +//FUNCTIONS + async function fork(scriptPath, args = []) { return new Promise((resolve, reject) => { let process = childProcess.fork(scriptPath, args, { cwd: path.dirname(scriptPath) }); - process.on('exit', code => resolve(code)); process.on('error', err => reject(err)); }); } + +//RUNTIME + (async function(){ - const args = process.argv; + const args = [...process.argv]; const defArgs = ["node","path","name","tweetCount","0","write","fromLoop"] - for (var i = 0; i < 2; i++) {args.shift();} - const config = require('fs').readFileSync("./usernameslist.txt").toString().split(/[\r\n]+/); + for (var i = 0; i < 2; i++) {args.shift();} //REMOVES `node ./TwitToMaster` from args + const config = require('fs').readFileSync("./usernameslist.txt").toString().split(/[\r\n]+/);//GET USERNAME LIST AS ARRAY + + const customIndex = args.indexOf("-u"); + console.log(args); + console.log(customIndex); + args.splice(customIndex,2); + console.log(args) + for (let name of config) { - var pArgs = [...args]; - pArgs.splice(0, 0, name); - for (var i = 3; i < 7; i++) { - if (typeof pArgs[i-2] == 'undefined') { - pArgs.push(defArgs[i]); - } - } - console.log("pArgs: " + pArgs); - await fork('./TwitToMast.js', pArgs); + var fArgs = [...args]; + fArgs.push("-u"); + fArgs.push(name); + console.log("args: " + fArgs); + await fork('./TwitToMast.js', fArgs); } }()); diff --git a/null b/null deleted file mode 100644 index caa185b76915b74cb787bdc0631996f9a978c690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171850 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
yk~%KivM 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 `~(^>)0APs~iXmqI?M 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�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

4YZ2APE&7n8{~IydHIE$ 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%0A0I^HnTU| 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 Wupwd2+{<_|MvGTkKQM%&)c@JiV?qxA diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 3a0cae8..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3140 +0,0 @@ -{ - "name": "TwitToMast", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "TwitToMast", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "csv-write-stream": "^2.0.0", - "filesystem": "^1.0.1", - "https": "^1.0.0", - "image-convert": "^0.1.33", - "jimp": "^0.22.4", - "mastodon": "^1.2.2", - "selenium-webdriver": "^4.8.0", - "until": "^0.1.1" - } - }, - "node_modules/@jimp/bmp": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.4.tgz", - "integrity": "sha512-ZDwQ/tLihpZuTCFGGa0zcyZIWHfhvHkrdbsoHUY0GG/JpH/y2xzlm2I48/TicCpoujN8oGKLHIJje0HmVX3xaA==", - "dependencies": { - "@jimp/utils": "^0.22.4", - "bmp-js": "^0.1.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/core": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.4.tgz", - "integrity": "sha512-K7guEYpXV44SCLR35QdPyKqF+mFZaEUAqiSL8qQ/F4N4Ws9JkPzFI/qYTjOkDoKxSWkXlKnlsk1sfMzy0yqA5g==", - "dependencies": { - "@jimp/utils": "^0.22.4", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "isomorphic-fetch": "^3.0.0", - "mkdirp": "^2.1.3", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.6.0" - } - }, - "node_modules/@jimp/custom": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.4.tgz", - "integrity": "sha512-k9m/RfxjPjklUsgZ2nszlyNkodUG/4xlxlif70UELhxW8bdqZqqlQGzwA9p+PUiSnlSJYZjL6q+P8cd7yj1ggA==", - "dependencies": { - "@jimp/core": "^0.22.4" - } - }, - "node_modules/@jimp/gif": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.4.tgz", - "integrity": "sha512-KmN7GoaQTzLAX4JXLBRkIiZAXthgQdKe+Y7BOw4n6CMe6LAS/XCQqrYCG3Av/GqIO7UAKems6D7kIGAUuhpNlQ==", - "dependencies": { - "@jimp/utils": "^0.22.4", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/jpeg": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.4.tgz", - "integrity": "sha512-mMJNhEtJpne65mxpIXEvT0VIzmsKiZWmaFT/c2eQ2tBLEtWAFpkvoP+F7jEaU+F3Ur4fXKFkJ/xOSXtRr/gGNw==", - "dependencies": { - "@jimp/utils": "^0.22.4", - "jpeg-js": "^0.4.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blit": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.4.tgz", - "integrity": "sha512-QQHe+rFarsxJQxWKlyHEMfLyXmUG9AiQky+8WfwjZVBYilIFyiBywOc3sThonOsru+7LOSUDmbN6mvbFk4R+gw==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blur": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.4.tgz", - "integrity": "sha512-p57Ac5LEQckIogiwf7qyOojGvLOD08eMaQd5ylOhet/fbdwAzD/8flWFhSIKsdAVzvnfGcszuLtrsV07jDutTw==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-circle": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.4.tgz", - "integrity": "sha512-T+TpG+s+wM9kKHlpIEfCAfOM+QrYVqcMoWjkULddc0KtaDEhqgGYFhN+/SlzJfDbZKw0xUgIuAw89sXuzMIUjw==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-color": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.4.tgz", - "integrity": "sha512-TZqcqepoCcIlF7VodPPfS3WET+LL5Y/XnXOBk4tWnG5i+lhNrs7/U0HOJY6Iw9o4g267DddnlfKWmunvzBcvOQ==", - "dependencies": { - "@jimp/utils": "^0.22.4", - "tinycolor2": "^1.6.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-contain": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.4.tgz", - "integrity": "sha512-Hl+TO4v+EpRfEl3R6k/bEgOGOpm6JqNfEIyCFWLi6yqJQjMGzBQ0vt+VHe2u3WIFaFrDWsGxeuFZBDzgtjTwxw==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-cover": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.4.tgz", - "integrity": "sha512-KMTQjN/B7r/RNzoLFwnhqhLrgT0kMqTkBMEZQSopj5vPLPNjIX0ElEYC8AIVFKeZAV+1mYkyss+IDdxq4fyRng==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-crop": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.4.tgz", - "integrity": "sha512-8krDt7xzBa1fbtlYCzEMZIgNjTkhgywho0FJpgIMkIUMjaZITS1Ea/Veb3UrWt8EsgQS6hxjGVE/Q1FvP5iPLA==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-displace": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.4.tgz", - "integrity": "sha512-3gBfwYVFrOjp8SUpb7H0UMgqvsG/sxY1PVBIfRW9MUCosiH1eE/Mo5cbxhQ6/w5f3sh23lBmG8W0WuSrnXLorg==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-dither": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.4.tgz", - "integrity": "sha512-oOhdZBDJpSGIoTUhPOIvLIVUwILRWgrWdA4Vbzcyz2RHvaPHS8gdBH0EdIPbJ5agNyFnY8sJWFM7YKx/rLNKsw==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-fisheye": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.4.tgz", - "integrity": "sha512-2myNZyDrwUOV8MKd4NeULnEOojYF7XRbnRHiUPsNptpmK6g/gI4xt+5k7BallAYZD8ZLfZVjstUogsObprHd/Q==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-flip": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.4.tgz", - "integrity": "sha512-9FZ0k5N5leLDefeDjizXXTl17dzo23PYtCD/T4xeSVr96d1pQDwbeIk7pEhhHr1rl98tJe0U/OV2dFXFYauKPw==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-gaussian": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.4.tgz", - "integrity": "sha512-irOSwLdZ9kTq5Wd5dpkMgIMJVwemYcqgnzd04+P6TJGYmem2HR6JUCDpjbET3Fpbo/snFLm4mZ+2A+SmeCGjKA==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-invert": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.4.tgz", - "integrity": "sha512-/WtZeLrF+H+mzbjqudeGvvSxudlHy1kyiP1gVWDxhYNQOuZJI57Vn20kSTYvHBNjvy31LV4/uestyX8j8tE2Qg==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-mask": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.4.tgz", - "integrity": "sha512-U0SrOwBNKkMYTNPTz5CXeJdZ4c5easFlq2B9Txy0kPsav2OraTv8cZjpMxrWUejo/AQGVUDbaGtXMm9pE13/6w==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-normalize": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.4.tgz", - "integrity": "sha512-XJiPBJGCHWmIzUdmL4mWP1Ev5LMp77oMmPXdgQGDty1cxfyo3CbkTjZSsnwF/XLlrQ1yfLW+8JB+ihGKcVEOxA==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-print": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.4.tgz", - "integrity": "sha512-mayiPhg6c7KYjvq3fYOW9ohhXD1eWdEiseV9dAWqTOEbDbohT8S6eTGhVIiVa2sVySLcpNEKZSk07c5EhJAMcw==", - "dependencies": { - "@jimp/utils": "^0.22.4", - "load-bmfont": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-resize": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.4.tgz", - "integrity": "sha512-2wMdpPNGf6Zo2lfJg1QHHQ+ds5baQH75IcFpdjw717dcEISpn1jPG//iClXOGh16OJsRQlwHESaZTgEo/5Dw/g==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-rotate": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.4.tgz", - "integrity": "sha512-g08LBsPENbeA6NVoeq0iuDgAL89+N+aZrvYVKYkiJZIM7vUvueJyAIq4+bjDl4r54OR8XBFX0GsrKsqrULh1eA==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-scale": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.4.tgz", - "integrity": "sha512-cJiLQtTcNk6/+j05R23TFGXy+smDV0BdlmzJVDb+7Ye9qcmWpkdjVSioQQqZr0QScIYKhhRCY/lFTepBx67yzw==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-shadow": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.4.tgz", - "integrity": "sha512-a5hdpzGBzBo91DNiKaGvs8iJbs2bYQmDRm/BrCh4NET+h5l5AwXNu/Ak0bWRhN16YQ55XYNGHer2jOwBPrf2WQ==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-threshold": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.4.tgz", - "integrity": "sha512-jTT/+p2zb2NESzd7O0bVRowiQszoaHeBf2OgP7lFde10fHd+fn78m5brUmSmlGAdlMRwm8S8ZcxTj5ZjdQns5w==", - "dependencies": { - "@jimp/utils": "^0.22.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "node_modules/@jimp/plugins": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.4.tgz", - "integrity": "sha512-yAxcA4UR3Bs7j73I7wt4ty52vm5MzPmr+8DYk8jrS/ng2Z2iuXzbcTe4mf9eEqXYVah3rTIggo4dPjW75DRZtA==", - "dependencies": { - "@jimp/plugin-blit": "^0.22.4", - "@jimp/plugin-blur": "^0.22.4", - "@jimp/plugin-circle": "^0.22.4", - "@jimp/plugin-color": "^0.22.4", - "@jimp/plugin-contain": "^0.22.4", - "@jimp/plugin-cover": "^0.22.4", - "@jimp/plugin-crop": "^0.22.4", - "@jimp/plugin-displace": "^0.22.4", - "@jimp/plugin-dither": "^0.22.4", - "@jimp/plugin-fisheye": "^0.22.4", - "@jimp/plugin-flip": "^0.22.4", - "@jimp/plugin-gaussian": "^0.22.4", - "@jimp/plugin-invert": "^0.22.4", - "@jimp/plugin-mask": "^0.22.4", - "@jimp/plugin-normalize": "^0.22.4", - "@jimp/plugin-print": "^0.22.4", - "@jimp/plugin-resize": "^0.22.4", - "@jimp/plugin-rotate": "^0.22.4", - "@jimp/plugin-scale": "^0.22.4", - "@jimp/plugin-shadow": "^0.22.4", - "@jimp/plugin-threshold": "^0.22.4", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/png": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.4.tgz", - "integrity": "sha512-kDovx9dTyV/TSR40HQHdRyVgNNb7Cny4/0PPEa+xeR7snuDC3dV5hu9s/QJwY0RMGiAkiuKDpiaBuSZuz8dwRQ==", - "dependencies": { - "@jimp/utils": "^0.22.4", - "pngjs": "^6.0.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/tiff": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.4.tgz", - "integrity": "sha512-RStUATRnb+unYzzuGxU+SPZALqh5NxYdcS6UGTBvhCMlijopGiY/iL01wstIOst0ypKIjwbcSVj7mAHn6B7Qbw==", - "dependencies": { - "utif2": "^4.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/types": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.4.tgz", - "integrity": "sha512-v3hm8LGc3we6P6ML0ticiLX7wtdvywrKthYxqVrJVIu3vRL0Z4q3ngFjwzqDmaIF8wC0neq98s/t7ODWfeIiRQ==", - "dependencies": { - "@jimp/bmp": "^0.22.4", - "@jimp/gif": "^0.22.4", - "@jimp/jpeg": "^0.22.4", - "@jimp/png": "^0.22.4", - "@jimp/tiff": "^0.22.4", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/utils": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.4.tgz", - "integrity": "sha512-EPaBMNg4NvVXnMpSFJEsdCQqdSVU2ACreAL+Ipkq19C/FkDEj9Q10t6Mjx8zOe/AAjBQj1vTALS/DykcHOn4bQ==", - "dependencies": { - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/bufferjs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/bufferjs/-/bufferjs-3.0.1.tgz", - "integrity": "sha512-qrCIGPcd9ODawCNyqR2o55zgaC/r7XHZ7oUh2s99uk+NVBS3SjIHigxS1S2KXpt8wsoQxAN55iPi8GIH8TGMRg==", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/configuration-processor": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/configuration-processor/-/configuration-processor-1.1.1.tgz", - "integrity": "sha512-nQYMSZfAxUyBWpCQQh2tk/kJ8Eg6c50klw2edEY1R6xoUJ0Vy6IYQclNYubXR6B0bThDahn/TNQfDD+vzxpTFQ==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/csv-write-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/csv-write-stream/-/csv-write-stream-2.0.0.tgz", - "integrity": "sha512-QTraH6FOYfM5f+YGwx71hW1nR9ZjlWri67/D4CWtiBkdce0UAa91Vc0yyHg0CjC0NeEGnvO/tBSJkA1XF9D9GQ==", - "dependencies": { - "argparse": "^1.0.7", - "generate-object-property": "^1.0.0", - "ndjson": "^1.3.0" - }, - "bin": { - "csv-write": "cli.js" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-container": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-container/-/data-container-1.1.0.tgz", - "integrity": "sha512-WnmEstSHZMOYJsy+BHKVxtZ1M0scmN74pLfm8CwMtQr/AxJjUVXFt3M04T/B2iahhtMxGIiLKFi3nr/tdBmX5Q==", - "dependencies": { - "configuration-processor": "~1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/event-dispatcher": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/event-dispatcher/-/event-dispatcher-2.4.0.tgz", - "integrity": "sha512-08u6SPGt/atk1W5o1Fa2IeH0cme8Fsp42qI1XsdKqZbl+rgcwY/AYtlqV04nylyhKAQ33Zql0rkYH0Z4/TVy8Q==", - "dependencies": { - "configuration-processor": "~1", - "data-container": "~1" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/File": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/File/-/File-0.10.2.tgz", - "integrity": "sha512-gomQVTq/10wIR399uhGTWtYcYneTXbfe3p2RO/NR0MPrLkIyOaE9DCEPXihAm+72epLtXaplitwfJ/wkmj88dg==", - "dependencies": { - "mime": ">= 0.0.0" - } - }, - "node_modules/file-api": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/file-api/-/file-api-0.10.4.tgz", - "integrity": "sha512-RVBXJGmsnQxokdpy264pmsdBjbUuxE6QT2xxhOrO2pzwTetbTNoWVFgkONFWmopm5mellsXrQIQhMY9fjufi9g==", - "dependencies": { - "bufferjs": "> 0.2.0", - "File": ">= 0.10.0", - "file-error": ">= 0.10.0", - "FileList": ">= 0.10.0", - "filereader": ">= 0.10.3", - "formdata": ">= 0.10.0", - "mime": ">= 1.2.11", - "remedial": ">= 1.0.7" - } - }, - "node_modules/file-error": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/file-error/-/file-error-0.10.2.tgz", - "integrity": "sha512-hJsQ7sEz6dM4vuRS7cipKiixV6EymEXHe+TCf2XVWsGTOehzrmcqqKMgeYTmV24XhjWSj+pQj1e5yjPJ7DtQvw==" - }, - "node_modules/file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/FileList": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/FileList/-/FileList-0.10.2.tgz", - "integrity": "sha512-HCe9WvojxLiMEfa3l6jFkQJLzhzDXgQmfnKFoRvhEnsyVoIc5piAQNLyhOwsZsmf8IwDBfr5H71nB8Wi5w0XwA==" - }, - "node_modules/filereader": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/filereader/-/filereader-0.10.3.tgz", - "integrity": "sha512-7F8w6GSXuHLN80ukaVOcHgBaiTRHUZr8GeEhNdqfAECcnBoROg4i8hTl+KqtF4yUPffOJVHEFg4iDJb7xIYFng==" - }, - "node_modules/filesystem": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/filesystem/-/filesystem-1.0.1.tgz", - "integrity": "sha512-IlnKZqVmv+UNR8kVknA47RY1rSfdJxNNmiX0osELJxhNj010cjlXH7nj7Vq1bPBPTrHtVrRYIWymXjVPlxffdw==", - "dependencies": { - "configuration-processor": "~1", - "event-dispatcher": "~2" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha512-J+ler7Ta54FwwNcx6wQRDhTIbNeyDcARMkOcguEqnEdtm0jKvN3Li3PDAb2Du3ubJYEWfYL83XMROXdsXAXycw==" - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/formdata": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/formdata/-/formdata-0.10.4.tgz", - "integrity": "sha512-IsHa+GYLLXHx0RmpUmzQTdwxDjNinxD+1zKOYPLaRwiqTfex5caQhOzgPIjFgJkL0O884Ers76BSHzXJxHvPLw==", - "dependencies": { - "bufferjs": "^2.0.0", - "File": "^0.10.2", - "FileList": "^0.10.2", - "filereader": "^0.10.3", - "foreachasync": "^3.0.0", - "remedial": "^1.0.7" - } - }, - "node_modules/formdata/node_modules/bufferjs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bufferjs/-/bufferjs-2.0.0.tgz", - "integrity": "sha512-VnTCQKC+AJ61OFGe/hn3jRXoIt/B95NUcuxzAwiVT0PFB0KRZImkoDPYdFqDIs7xAs1eJ3yiKcHnuUiiYe7ucQ==", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", - "dependencies": { - "is-property": "^1.0.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", - "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg==" - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/image-convert": { - "version": "0.1.33", - "resolved": "https://registry.npmjs.org/image-convert/-/image-convert-0.1.33.tgz", - "integrity": "sha512-nUK+LJooUoDXYb6g7OtbRHbwNdyjfhrWMGTDblhJi3LJm0uybs9u9pP5LItOYqc3fFvFoGt08Onv27oes60w4w==", - "dependencies": { - "file-api": "^0.10.4", - "images": "^3.0.0", - "request": "^2.79.0" - } - }, - "node_modules/image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "dependencies": { - "@types/node": "16.9.1" - } - }, - "node_modules/images": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/images/-/images-3.2.4.tgz", - "integrity": "sha512-Uq61/Q8XixCRyKvws7tPwboK0O70Dbr4kMQZHw2dqdEhnU6TpaGwyMg0vzQ4aaGtrO9N3etq46XwF7hxbqp8ug==", - "hasInstallScript": true - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "node_modules/jimp": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.4.tgz", - "integrity": "sha512-reGESbcYp38VlGtdAe8qrmbjLLEYXMrQWc2XXb7+czulKfCCidUHEpNfrS3hx5XXMWrAmoYKkxPTqCvll6Q6ug==", - "dependencies": { - "@jimp/custom": "^0.22.4", - "@jimp/plugins": "^0.22.4", - "@jimp/types": "^0.22.4", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/load-bmfont": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", - "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "node_modules/mastodon": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/mastodon/-/mastodon-1.2.2.tgz", - "integrity": "sha512-ixcYkzn6SorH8U2jNc1vwiX89EiVMjzd2aDYFtr191YY9rdoVo+owI6cQo2EjUnzg2RN9WxyBJ9KDuw+R4lt+w==", - "dependencies": { - "bluebird": "^3.1.5", - "mime": "^1.3.4", - "request": "^2.68.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", - "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ndjson": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz", - "integrity": "sha512-hUPLuaziboGjNF7wHngkgVc0FOclR8dDk/HfEvTtDr/iUrqBWiRcRSTK3/nLOqKH33th714BrMmTPtObI9gZxQ==", - "dependencies": { - "json-stringify-safe": "^5.0.1", - "minimist": "^1.2.0", - "split2": "^2.1.0", - "through2": "^2.0.3" - }, - "bin": { - "ndjson": "cli.js" - } - }, - "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" - }, - "node_modules/parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" - }, - "node_modules/parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "dependencies": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" - } - }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "node_modules/phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" - }, - "node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "dependencies": { - "pngjs": "^3.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, - "node_modules/pixelmatch/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "node_modules/remedial": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", - "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==", - "engines": { - "node": "*" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "node_modules/selenium-webdriver": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.8.0.tgz", - "integrity": "sha512-s/HL8WNwy1ggHR244+tAhjhyKMJnZLt1HKJ6Gn7nQgVjB/ybDF+46Uui0qI2J7AjPNJzlUmTncdC/jg/kKkn0A==", - "dependencies": { - "jszip": "^3.10.0", - "tmp": "^0.2.1", - "ws": ">=8.11.0" - }, - "engines": { - "node": ">= 14.20.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "dependencies": { - "through2": "^2.0.2" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" - }, - "node_modules/tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "node_modules/until": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/until/-/until-0.1.1.tgz", - "integrity": "sha512-WoXRtltRMS87Iwilt72d4Er3CMaQmzPCTx3B16LCXty/3Xl5VJhccyn0nSyotfh1TyH4IzoTgfZ747wXVpLhvQ==" - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utif2": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.0.1.tgz", - "integrity": "sha512-KMaD76dbzK1VjbwsckHJiqDjhP3pbpwyV+FdqkY6XFQenc2o/HS6pjPSYdu4+NQMHf2NLTW+nVP/eFP1CvOYQQ==", - "dependencies": { - "pako": "^1.0.11" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/ws": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", - "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" - }, - "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - } - }, - "dependencies": { - "@jimp/bmp": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.4.tgz", - "integrity": "sha512-ZDwQ/tLihpZuTCFGGa0zcyZIWHfhvHkrdbsoHUY0GG/JpH/y2xzlm2I48/TicCpoujN8oGKLHIJje0HmVX3xaA==", - "requires": { - "@jimp/utils": "^0.22.4", - "bmp-js": "^0.1.0" - } - }, - "@jimp/core": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.4.tgz", - "integrity": "sha512-K7guEYpXV44SCLR35QdPyKqF+mFZaEUAqiSL8qQ/F4N4Ws9JkPzFI/qYTjOkDoKxSWkXlKnlsk1sfMzy0yqA5g==", - "requires": { - "@jimp/utils": "^0.22.4", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "isomorphic-fetch": "^3.0.0", - "mkdirp": "^2.1.3", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.6.0" - } - }, - "@jimp/custom": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.4.tgz", - "integrity": "sha512-k9m/RfxjPjklUsgZ2nszlyNkodUG/4xlxlif70UELhxW8bdqZqqlQGzwA9p+PUiSnlSJYZjL6q+P8cd7yj1ggA==", - "requires": { - "@jimp/core": "^0.22.4" - } - }, - "@jimp/gif": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.4.tgz", - "integrity": "sha512-KmN7GoaQTzLAX4JXLBRkIiZAXthgQdKe+Y7BOw4n6CMe6LAS/XCQqrYCG3Av/GqIO7UAKems6D7kIGAUuhpNlQ==", - "requires": { - "@jimp/utils": "^0.22.4", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - } - }, - "@jimp/jpeg": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.4.tgz", - "integrity": "sha512-mMJNhEtJpne65mxpIXEvT0VIzmsKiZWmaFT/c2eQ2tBLEtWAFpkvoP+F7jEaU+F3Ur4fXKFkJ/xOSXtRr/gGNw==", - "requires": { - "@jimp/utils": "^0.22.4", - "jpeg-js": "^0.4.4" - } - }, - "@jimp/plugin-blit": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.4.tgz", - "integrity": "sha512-QQHe+rFarsxJQxWKlyHEMfLyXmUG9AiQky+8WfwjZVBYilIFyiBywOc3sThonOsru+7LOSUDmbN6mvbFk4R+gw==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-blur": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.4.tgz", - "integrity": "sha512-p57Ac5LEQckIogiwf7qyOojGvLOD08eMaQd5ylOhet/fbdwAzD/8flWFhSIKsdAVzvnfGcszuLtrsV07jDutTw==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-circle": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.4.tgz", - "integrity": "sha512-T+TpG+s+wM9kKHlpIEfCAfOM+QrYVqcMoWjkULddc0KtaDEhqgGYFhN+/SlzJfDbZKw0xUgIuAw89sXuzMIUjw==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-color": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.4.tgz", - "integrity": "sha512-TZqcqepoCcIlF7VodPPfS3WET+LL5Y/XnXOBk4tWnG5i+lhNrs7/U0HOJY6Iw9o4g267DddnlfKWmunvzBcvOQ==", - "requires": { - "@jimp/utils": "^0.22.4", - "tinycolor2": "^1.6.0" - } - }, - "@jimp/plugin-contain": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.4.tgz", - "integrity": "sha512-Hl+TO4v+EpRfEl3R6k/bEgOGOpm6JqNfEIyCFWLi6yqJQjMGzBQ0vt+VHe2u3WIFaFrDWsGxeuFZBDzgtjTwxw==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-cover": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.4.tgz", - "integrity": "sha512-KMTQjN/B7r/RNzoLFwnhqhLrgT0kMqTkBMEZQSopj5vPLPNjIX0ElEYC8AIVFKeZAV+1mYkyss+IDdxq4fyRng==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-crop": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.4.tgz", - "integrity": "sha512-8krDt7xzBa1fbtlYCzEMZIgNjTkhgywho0FJpgIMkIUMjaZITS1Ea/Veb3UrWt8EsgQS6hxjGVE/Q1FvP5iPLA==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-displace": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.4.tgz", - "integrity": "sha512-3gBfwYVFrOjp8SUpb7H0UMgqvsG/sxY1PVBIfRW9MUCosiH1eE/Mo5cbxhQ6/w5f3sh23lBmG8W0WuSrnXLorg==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-dither": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.4.tgz", - "integrity": "sha512-oOhdZBDJpSGIoTUhPOIvLIVUwILRWgrWdA4Vbzcyz2RHvaPHS8gdBH0EdIPbJ5agNyFnY8sJWFM7YKx/rLNKsw==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-fisheye": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.4.tgz", - "integrity": "sha512-2myNZyDrwUOV8MKd4NeULnEOojYF7XRbnRHiUPsNptpmK6g/gI4xt+5k7BallAYZD8ZLfZVjstUogsObprHd/Q==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-flip": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.4.tgz", - "integrity": "sha512-9FZ0k5N5leLDefeDjizXXTl17dzo23PYtCD/T4xeSVr96d1pQDwbeIk7pEhhHr1rl98tJe0U/OV2dFXFYauKPw==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-gaussian": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.4.tgz", - "integrity": "sha512-irOSwLdZ9kTq5Wd5dpkMgIMJVwemYcqgnzd04+P6TJGYmem2HR6JUCDpjbET3Fpbo/snFLm4mZ+2A+SmeCGjKA==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-invert": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.4.tgz", - "integrity": "sha512-/WtZeLrF+H+mzbjqudeGvvSxudlHy1kyiP1gVWDxhYNQOuZJI57Vn20kSTYvHBNjvy31LV4/uestyX8j8tE2Qg==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-mask": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.4.tgz", - "integrity": "sha512-U0SrOwBNKkMYTNPTz5CXeJdZ4c5easFlq2B9Txy0kPsav2OraTv8cZjpMxrWUejo/AQGVUDbaGtXMm9pE13/6w==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-normalize": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.4.tgz", - "integrity": "sha512-XJiPBJGCHWmIzUdmL4mWP1Ev5LMp77oMmPXdgQGDty1cxfyo3CbkTjZSsnwF/XLlrQ1yfLW+8JB+ihGKcVEOxA==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-print": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.4.tgz", - "integrity": "sha512-mayiPhg6c7KYjvq3fYOW9ohhXD1eWdEiseV9dAWqTOEbDbohT8S6eTGhVIiVa2sVySLcpNEKZSk07c5EhJAMcw==", - "requires": { - "@jimp/utils": "^0.22.4", - "load-bmfont": "^1.4.1" - } - }, - "@jimp/plugin-resize": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.4.tgz", - "integrity": "sha512-2wMdpPNGf6Zo2lfJg1QHHQ+ds5baQH75IcFpdjw717dcEISpn1jPG//iClXOGh16OJsRQlwHESaZTgEo/5Dw/g==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-rotate": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.4.tgz", - "integrity": "sha512-g08LBsPENbeA6NVoeq0iuDgAL89+N+aZrvYVKYkiJZIM7vUvueJyAIq4+bjDl4r54OR8XBFX0GsrKsqrULh1eA==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-scale": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.4.tgz", - "integrity": "sha512-cJiLQtTcNk6/+j05R23TFGXy+smDV0BdlmzJVDb+7Ye9qcmWpkdjVSioQQqZr0QScIYKhhRCY/lFTepBx67yzw==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-shadow": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.4.tgz", - "integrity": "sha512-a5hdpzGBzBo91DNiKaGvs8iJbs2bYQmDRm/BrCh4NET+h5l5AwXNu/Ak0bWRhN16YQ55XYNGHer2jOwBPrf2WQ==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugin-threshold": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.4.tgz", - "integrity": "sha512-jTT/+p2zb2NESzd7O0bVRowiQszoaHeBf2OgP7lFde10fHd+fn78m5brUmSmlGAdlMRwm8S8ZcxTj5ZjdQns5w==", - "requires": { - "@jimp/utils": "^0.22.4" - } - }, - "@jimp/plugins": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.4.tgz", - "integrity": "sha512-yAxcA4UR3Bs7j73I7wt4ty52vm5MzPmr+8DYk8jrS/ng2Z2iuXzbcTe4mf9eEqXYVah3rTIggo4dPjW75DRZtA==", - "requires": { - "@jimp/plugin-blit": "^0.22.4", - "@jimp/plugin-blur": "^0.22.4", - "@jimp/plugin-circle": "^0.22.4", - "@jimp/plugin-color": "^0.22.4", - "@jimp/plugin-contain": "^0.22.4", - "@jimp/plugin-cover": "^0.22.4", - "@jimp/plugin-crop": "^0.22.4", - "@jimp/plugin-displace": "^0.22.4", - "@jimp/plugin-dither": "^0.22.4", - "@jimp/plugin-fisheye": "^0.22.4", - "@jimp/plugin-flip": "^0.22.4", - "@jimp/plugin-gaussian": "^0.22.4", - "@jimp/plugin-invert": "^0.22.4", - "@jimp/plugin-mask": "^0.22.4", - "@jimp/plugin-normalize": "^0.22.4", - "@jimp/plugin-print": "^0.22.4", - "@jimp/plugin-resize": "^0.22.4", - "@jimp/plugin-rotate": "^0.22.4", - "@jimp/plugin-scale": "^0.22.4", - "@jimp/plugin-shadow": "^0.22.4", - "@jimp/plugin-threshold": "^0.22.4", - "timm": "^1.6.1" - } - }, - "@jimp/png": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.4.tgz", - "integrity": "sha512-kDovx9dTyV/TSR40HQHdRyVgNNb7Cny4/0PPEa+xeR7snuDC3dV5hu9s/QJwY0RMGiAkiuKDpiaBuSZuz8dwRQ==", - "requires": { - "@jimp/utils": "^0.22.4", - "pngjs": "^6.0.0" - } - }, - "@jimp/tiff": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.4.tgz", - "integrity": "sha512-RStUATRnb+unYzzuGxU+SPZALqh5NxYdcS6UGTBvhCMlijopGiY/iL01wstIOst0ypKIjwbcSVj7mAHn6B7Qbw==", - "requires": { - "utif2": "^4.0.1" - } - }, - "@jimp/types": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.4.tgz", - "integrity": "sha512-v3hm8LGc3we6P6ML0ticiLX7wtdvywrKthYxqVrJVIu3vRL0Z4q3ngFjwzqDmaIF8wC0neq98s/t7ODWfeIiRQ==", - "requires": { - "@jimp/bmp": "^0.22.4", - "@jimp/gif": "^0.22.4", - "@jimp/jpeg": "^0.22.4", - "@jimp/png": "^0.22.4", - "@jimp/tiff": "^0.22.4", - "timm": "^1.6.1" - } - }, - "@jimp/utils": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.4.tgz", - "integrity": "sha512-EPaBMNg4NvVXnMpSFJEsdCQqdSVU2ACreAL+Ipkq19C/FkDEj9Q10t6Mjx8zOe/AAjBQj1vTALS/DykcHOn4bQ==", - "requires": { - "regenerator-runtime": "^0.13.3" - } - }, - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" - }, - "aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==" - }, - "bufferjs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/bufferjs/-/bufferjs-3.0.1.tgz", - "integrity": "sha512-qrCIGPcd9ODawCNyqR2o55zgaC/r7XHZ7oUh2s99uk+NVBS3SjIHigxS1S2KXpt8wsoQxAN55iPi8GIH8TGMRg==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "configuration-processor": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/configuration-processor/-/configuration-processor-1.1.1.tgz", - "integrity": "sha512-nQYMSZfAxUyBWpCQQh2tk/kJ8Eg6c50klw2edEY1R6xoUJ0Vy6IYQclNYubXR6B0bThDahn/TNQfDD+vzxpTFQ==" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "csv-write-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/csv-write-stream/-/csv-write-stream-2.0.0.tgz", - "integrity": "sha512-QTraH6FOYfM5f+YGwx71hW1nR9ZjlWri67/D4CWtiBkdce0UAa91Vc0yyHg0CjC0NeEGnvO/tBSJkA1XF9D9GQ==", - "requires": { - "argparse": "^1.0.7", - "generate-object-property": "^1.0.0", - "ndjson": "^1.3.0" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-container": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-container/-/data-container-1.1.0.tgz", - "integrity": "sha512-WnmEstSHZMOYJsy+BHKVxtZ1M0scmN74pLfm8CwMtQr/AxJjUVXFt3M04T/B2iahhtMxGIiLKFi3nr/tdBmX5Q==", - "requires": { - "configuration-processor": "~1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "event-dispatcher": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/event-dispatcher/-/event-dispatcher-2.4.0.tgz", - "integrity": "sha512-08u6SPGt/atk1W5o1Fa2IeH0cme8Fsp42qI1XsdKqZbl+rgcwY/AYtlqV04nylyhKAQ33Zql0rkYH0Z4/TVy8Q==", - "requires": { - "configuration-processor": "~1", - "data-container": "~1" - } - }, - "exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "File": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/File/-/File-0.10.2.tgz", - "integrity": "sha512-gomQVTq/10wIR399uhGTWtYcYneTXbfe3p2RO/NR0MPrLkIyOaE9DCEPXihAm+72epLtXaplitwfJ/wkmj88dg==", - "requires": { - "mime": ">= 0.0.0" - } - }, - "file-api": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/file-api/-/file-api-0.10.4.tgz", - "integrity": "sha512-RVBXJGmsnQxokdpy264pmsdBjbUuxE6QT2xxhOrO2pzwTetbTNoWVFgkONFWmopm5mellsXrQIQhMY9fjufi9g==", - "requires": { - "bufferjs": "> 0.2.0", - "File": ">= 0.10.0", - "file-error": ">= 0.10.0", - "FileList": ">= 0.10.0", - "filereader": ">= 0.10.3", - "formdata": ">= 0.10.0", - "mime": ">= 1.2.11", - "remedial": ">= 1.0.7" - } - }, - "file-error": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/file-error/-/file-error-0.10.2.tgz", - "integrity": "sha512-hJsQ7sEz6dM4vuRS7cipKiixV6EymEXHe+TCf2XVWsGTOehzrmcqqKMgeYTmV24XhjWSj+pQj1e5yjPJ7DtQvw==" - }, - "file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "requires": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - } - }, - "FileList": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/FileList/-/FileList-0.10.2.tgz", - "integrity": "sha512-HCe9WvojxLiMEfa3l6jFkQJLzhzDXgQmfnKFoRvhEnsyVoIc5piAQNLyhOwsZsmf8IwDBfr5H71nB8Wi5w0XwA==" - }, - "filereader": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/filereader/-/filereader-0.10.3.tgz", - "integrity": "sha512-7F8w6GSXuHLN80ukaVOcHgBaiTRHUZr8GeEhNdqfAECcnBoROg4i8hTl+KqtF4yUPffOJVHEFg4iDJb7xIYFng==" - }, - "filesystem": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/filesystem/-/filesystem-1.0.1.tgz", - "integrity": "sha512-IlnKZqVmv+UNR8kVknA47RY1rSfdJxNNmiX0osELJxhNj010cjlXH7nj7Vq1bPBPTrHtVrRYIWymXjVPlxffdw==", - "requires": { - "configuration-processor": "~1", - "event-dispatcher": "~2" - } - }, - "foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha512-J+ler7Ta54FwwNcx6wQRDhTIbNeyDcARMkOcguEqnEdtm0jKvN3Li3PDAb2Du3ubJYEWfYL83XMROXdsXAXycw==" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "formdata": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/formdata/-/formdata-0.10.4.tgz", - "integrity": "sha512-IsHa+GYLLXHx0RmpUmzQTdwxDjNinxD+1zKOYPLaRwiqTfex5caQhOzgPIjFgJkL0O884Ers76BSHzXJxHvPLw==", - "requires": { - "bufferjs": "^2.0.0", - "File": "^0.10.2", - "FileList": "^0.10.2", - "filereader": "^0.10.3", - "foreachasync": "^3.0.0", - "remedial": "^1.0.7" - }, - "dependencies": { - "bufferjs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bufferjs/-/bufferjs-2.0.0.tgz", - "integrity": "sha512-VnTCQKC+AJ61OFGe/hn3jRXoIt/B95NUcuxzAwiVT0PFB0KRZImkoDPYdFqDIs7xAs1eJ3yiKcHnuUiiYe7ucQ==" - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", - "requires": { - "is-property": "^1.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "requires": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", - "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg==" - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "image-convert": { - "version": "0.1.33", - "resolved": "https://registry.npmjs.org/image-convert/-/image-convert-0.1.33.tgz", - "integrity": "sha512-nUK+LJooUoDXYb6g7OtbRHbwNdyjfhrWMGTDblhJi3LJm0uybs9u9pP5LItOYqc3fFvFoGt08Onv27oes60w4w==", - "requires": { - "file-api": "^0.10.4", - "images": "^3.0.0", - "request": "^2.79.0" - } - }, - "image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "requires": { - "@types/node": "16.9.1" - } - }, - "images": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/images/-/images-3.2.4.tgz", - "integrity": "sha512-Uq61/Q8XixCRyKvws7tPwboK0O70Dbr4kMQZHw2dqdEhnU6TpaGwyMg0vzQ4aaGtrO9N3etq46XwF7hxbqp8ug==" - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "requires": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "jimp": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.4.tgz", - "integrity": "sha512-reGESbcYp38VlGtdAe8qrmbjLLEYXMrQWc2XXb7+czulKfCCidUHEpNfrS3hx5XXMWrAmoYKkxPTqCvll6Q6ug==", - "requires": { - "@jimp/custom": "^0.22.4", - "@jimp/plugins": "^0.22.4", - "@jimp/types": "^0.22.4", - "regenerator-runtime": "^0.13.3" - } - }, - "jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "requires": { - "immediate": "~3.0.5" - } - }, - "load-bmfont": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", - "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "requires": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "mastodon": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/mastodon/-/mastodon-1.2.2.tgz", - "integrity": "sha512-ixcYkzn6SorH8U2jNc1vwiX89EiVMjzd2aDYFtr191YY9rdoVo+owI6cQo2EjUnzg2RN9WxyBJ9KDuw+R4lt+w==", - "requires": { - "bluebird": "^3.1.5", - "mime": "^1.3.4", - "request": "^2.68.0" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "requires": { - "dom-walk": "^0.1.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - }, - "mkdirp": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", - "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==" - }, - "ndjson": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz", - "integrity": "sha512-hUPLuaziboGjNF7wHngkgVc0FOclR8dDk/HfEvTtDr/iUrqBWiRcRSTK3/nLOqKH33th714BrMmTPtObI9gZxQ==", - "requires": { - "json-stringify-safe": "^5.0.1", - "minimist": "^1.2.0", - "split2": "^2.1.0", - "through2": "^2.0.3" - } - }, - "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" - }, - "parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" - }, - "parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "requires": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" - } - }, - "parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" - }, - "pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "requires": { - "pngjs": "^3.0.0" - }, - "dependencies": { - "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" - } - } - }, - "pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "requires": { - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "remedial": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", - "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==" - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "selenium-webdriver": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.8.0.tgz", - "integrity": "sha512-s/HL8WNwy1ggHR244+tAhjhyKMJnZLt1HKJ6Gn7nQgVjB/ybDF+46Uui0qI2J7AjPNJzlUmTncdC/jg/kKkn0A==", - "requires": { - "jszip": "^3.10.0", - "tmp": "^0.2.1", - "ws": ">=8.11.0" - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "requires": { - "through2": "^2.0.2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "requires": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" - }, - "tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" - } - }, - "token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "requires": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "until": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/until/-/until-0.1.1.tgz", - "integrity": "sha512-WoXRtltRMS87Iwilt72d4Er3CMaQmzPCTx3B16LCXty/3Xl5VJhccyn0nSyotfh1TyH4IzoTgfZ747wXVpLhvQ==" - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "utif2": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.0.1.tgz", - "integrity": "sha512-KMaD76dbzK1VjbwsckHJiqDjhP3pbpwyV+FdqkY6XFQenc2o/HS6pjPSYdu4+NQMHf2NLTW+nVP/eFP1CvOYQQ==", - "requires": { - "pako": "^1.0.11" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - } - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "ws": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", - "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", - "requires": {} - }, - "xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "requires": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" - }, - "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - } - } -} diff --git a/ref/classes/arguments.js b/ref/classes/arguments.js new file mode 100644 index 0000000..b958e29 --- /dev/null +++ b/ref/classes/arguments.js @@ -0,0 +1,48 @@ +Array.prototype.findReg = function(match) { + var reg = match; + return this.filter(function(item){ + return typeof item == 'string' && item.match(reg); + }); +} + +class Args { + constructor() { + this.help = this.getFlag("h",); //show help screen + this.displayBrowser = this.getFlag("b"); //show browser running (disable headless) + this.enablePosts = this.getFlag("p"); //enable posting images or statuses to Mastodon + this.forceCSV = this.getFlag("c"); //force logging tweets to CSV, even if not posted to Mastodon (by request or failure) + this.printMeta = this.getFlag("m"); //include Display Name, handle, and URL in Mastodon post + this.enableQuotes = this.getFlag("q"); //enable cross-posting quote tweets + this.enableThreads = this.getFlag("t"); //enable cross-posting thread tweets + this.reQuotes = this.getFlag("r"); //put links to quote tweets at top of mastodon posts + + var userNamePreFormat = this.getArgument("-u","Twitter",false); + this.userName = userNamePreFormat.replace('@','') + this.tweetCount = this.getArgument("-n",5); + this.debug = this.getArgument("-d",1); + this.timeOut = this.getArgument("-w",30000); + } + + getFlag(char){ + let args = [...process.argv]; + var regex = new RegExp(`-\\S*[${char}]\\S*`, "g"); + return args.indexOf(args.findReg(regex)[0]) > -1 ? true : false; + } + + getArgument(flag, def, isInt = true) { + const args = [...process.argv]; + const customIndex = args.indexOf(flag); + const customValue = (customIndex > -1) ? args[customIndex + 1] : undefined; + let flagValue = customValue || def; + flagValue = isInt ? parseInt(flagValue) || def : flagValue; + return flagValue; + } +} + + + + + + + +module.exports = Args \ No newline at end of file diff --git a/ref/classes/formats.js b/ref/classes/formats.js new file mode 100644 index 0000000..ef8d7fa --- /dev/null +++ b/ref/classes/formats.js @@ -0,0 +1,15 @@ +const colors = require('cli-color'); + +class Formats { + constructor() { + this.success = colors.green.bold; + this.error = colors.red.bold; + this.warn = colors.yellow; + this.notice = colors.blue.bold; + this.bold = colors.bold; + this.underline = colors.underline; + this.italic = colors.italic; + } +} + +module.exports = Formats \ No newline at end of file diff --git a/ref/classes/tweets.js b/ref/classes/tweets.js new file mode 100644 index 0000000..09277cc --- /dev/null +++ b/ref/classes/tweets.js @@ -0,0 +1,245 @@ +const webdriver = require('selenium-webdriver'); +const By = webdriver.By; +//const { format } = require('fast-csv'); + +const elements = require('../functions/elements.js'); //link support.js +const XPathObjects = require('../classes/xpaths.js'); //link xpaths.js +const Args = require('../classes/arguments.js'); +const args = new Args(); +const support = require('../functions/support.js'); +const debuglog = support.debuglog; +const funcs = require('../functions/functions.js'); //link functions.js +const mastodon = require('../functions/mastodon.js'); //link mastodon.js +const Formats = require('../classes/formats.js'); +const format = new Formats(); + +//const homeX = new XPathObjects.TweetPaths("home"); //import xpath class object for home timeline +//const threadX = new XPathObjects.TweetPaths("thread"); //import xpath class object for thread timeline + +class Tweets { + constructor(orig,i) { + //parameters + this.orig = orig; + this.index = i-1; + this.no = i; + this.processed = false; + + //detect to filter out + this.isRT = false; + this.isAR = false; + this.isPin = false; + this.keep = false; + + //detect to move into thread + this.isThread = false; + + //processed text for posting + this.text = ""; + + //header + this.name = ""; + this.handle = ""; + this.url = ""; + this.header = ""; + + //body + this.hasBody = false; + this.body = ""; + this.hasLinks = false; + this.links = ""; + + //footer + this.hasVideo = false; + this.isQT = false; + this.quoteLink = ""; + this.footer = ""; + + //media + this.hasSingleImage = false; + this.hasMultiImage = false; + this.hasImages = false; + this.imgArray = []; + this.imgCount = 0; + this.imgUrl = ""; + this.iterateExists = false; + this.iteratePath = ""; + + //mastodon + this.id = 0; + this.prompt = 0; + this.posted = false; + + if (orig == "thread") { + this.threadLength = 0; + this.entryIsOpen = false; + } + //xpaths of tweet & elements + this.x = new XPathObjects.TweetPaths(orig,i); + } + + compileText(){ + const sectionArray = [this.header, this.body, this.footer]; + const nonEmptySections = sectionArray.filter(section => section !== ''); + this.text = nonEmptySections.join('\r\n\r\n'); + } + + appendSection(txt, section) { + switch (section) { + case 'header': + this.header += this.header ? `\r\n${txt}` : txt; + break; + case 'body': + this.body += this.body ? `\r\n${txt}` : txt; + break; + case 'footer': + this.footer += this.footer ? `\r\n${txt}` : txt; + break; + default: + throw new Error(`Invalid section: ${section}`); + } + } + + async identifyElements(driver){ + await elements.waitFor(driver,this.x.tweet,args.timeOut); //WAIT FOR TWEET URL OF CURRENT ITERATE TWEET + + this.isAR = await elements.doesExist(driver,this.x.ageRestricted);//IS TWEET AGE-RESTRICTED? + if (this.isAR){ + return; + } + + var mTweetURL = await elements.getAttribute(driver,this.x.tweetURL,'href') //GET URL OF TWEET + this.url = await mTweetURL.replace('://mobile.','://'); //SAVE TWEET URL TO TWEET OBJECT WITHOUT MOBILE + + this.hasBody = await elements.doesExist(driver,this.x.tweetText);//DOES TWEET HAVE BODY TEST? + this.hasLinks = await elements.doesExist(driver,this.x.urlCard);//DOES TWEET HAVE URL CARDS + this.hasVideo = await elements.doesExist(driver,this.x.video);//DOES TWEET HAVE VIDEO MEDIA? + + this.isQT = await elements.doesExist(driver, this.x.quoteTweetContent);//IS TWEET A QUOTE TWEET + this.isThread = await elements.doesExist(driver,this.x.detectThread);//IS TWEET A PART OF THREAD + + this.isRT = await elements.doesExist(driver,this.x.detectRT);//CHECK FOR RETWEETS + this.isPin = await elements.doesExist(driver,this.x.pinnedTweet);//IS TWEET PINNED + + this.hasSingleImage = await elements.doesExist(driver, this.x.singleImage);//DOES TWEET HAVE SINGLE IMAGE? + this.hasMultiImage = await elements.doesExist(driver,this.x.multiImage);//DOES TWEET HAVE MULTIPLE IMAGES? + this.hasImages = this.hasSingleImage || this.hasMultiImage;//DOES TWEET HAVE ANY MEDIA? + + } + + async getElementProperties(driver){ + if (args.printMeta) { //IF TWEET HEADER IS ENABLED + debuglog("running header stuff",2); + this.handle = await elements.getText(driver,this.x.tweeterHandle);//GET TEXT OF TWEETER HANDLE (@) + this.name = await elements.getText(driver,this.x.tweeterName);//GET TEXT OF TWEETER NAME (DISPLAY NAME) + this.appendSection(`${this.name} (${this.handle})\r\n${this.url}`,'header');//COMBINE HEADER COMPONENTS WITH URL + debuglog(`Tweet Header:\r\n${this.header}`); + } + + if (this.hasBody){//IF TWEET HAS BODY TEXT + debuglog("running body text stuff",2); + /*use this later to make emojis work? https://stackoverflow.com/questions/65328118/convert-img-with-alt-attribute-to-text-with-selenium-webdriver + await driver.findElement(webdriver.By.xpath(this.x.timeLine)) // GETS NUMBER OF ELEMENTS IN THREAD, SHOULD NOT ITERATE MORE THAN THIS MANY TIMES. NOT USED ANYMORE + .findElements(webdriver.By.xpath(this.x.emoji)) + .then(function(elements){ + debuglog("Found emoji!",2); + //this.threadLength = elements.length; + });*/ + const bodyText = await elements.getText(driver,this.x.tweetText);//SET TWEET BODY TO TEXT OF TWEET + this.appendSection(bodyText,'body'); + debuglog(`Tweet Body:\r\n${this.body}`); + } + + if (this.hasLinks){//IF TWEET HAS URL CARD + debuglog("running url card stuff",2); + var tweetCardURL = await elements.getAttribute(driver,this.x.urlCard,"href");//GET URL OF URL CARD + this.links = await funcs.expandUrl(tweetCardURL); + this.appendSection(this.links,'body'); + debuglog(`Tweet link: ${this.links}`); + } + + if (this.isQT){ //IF THREAD IS A QUOTE TWEET, GET URL AND ADD TO EITHER HEADER OR FOOTER + debuglog("running quote tweet stuff",2); + await driver.findElement(By.xpath(this.x.quoteTweetContent)).sendKeys(webdriver.Key.CONTROL, webdriver.Key.ENTER);//OPEN QUOTE TWEET IN NEW TAB + this.parent = await driver.getWindowHandle(); + var windows = await driver.getAllWindowHandles(); + await driver.switchTo().window(windows[windows.length-1]).then(() => { //SWITCH TO NEW TAB WITH QUOTED TWEET + driver.getCurrentUrl().then(url => { + this.quoteLink = url.replace('://mobile.','://'); //MAKE MOBILE TWEET NON-MOBILE + const text = args.reQuotes //DETERMINE HOW TO FORMAT QUOTE LINK DEPENDING ON RELAVANT ARGUMENT + ? `Re: ${this.quoteLink}` + : `« Quoting ${this.quoteLink} »`; + args.reQuotes ? this.appendSection(text,'header') : this.appendSection(text,'footer'); //PLACE QUOTE LINK AT HEADER OR FOOTER OF TWEET + }); + driver.switchTo().window(this.parent);//SWITCH BACK TO ORIGINAL TAB + }); + await driver.switchTo().window(windows[windows.length-1]);//SWITCH TO NEW TAB AGAIN BECAUSE THAT'S THE ONLY WAY I COULD MAKE THIS PART WORK + await driver.close();//CLOSE NEW TAB + await driver.switchTo().window(this.parent);//SWITCH BACK TO ORIGINAL TAB... AGAIN + debuglog(`Tweet Header: ${this.header}`) + debuglog(`Tweet Footer: ${this.footer}`); + } + + if (this.hasVideo) {//IF TWEET HAS NON-POSTABLE MEDIA, APPEND FOOTER DETAILING SO + debuglog("running video stuff",2); + this.appendSection(`⚠ Original tweet had attachment(s) that couldn't be cross-posted. View it at ${homeTweet.url}`,'footer'); + debuglog(`Tweet Footer: ${this.footer}`); + } + } + + async downloadImages(driver,imgSavePath) { + if (this.hasSingleImage) { + debuglog(`${this.orig} Tweet #${this.no} contains a single image.`, 2) + this.imgCount = 1; + this.imgUrl = await elements.getAttribute(driver,this.x.singleImage,"src") + const jpgPath = `${imgSavePath}${this.orig == 'home' ? '' : 'r'}${this.no}.${this.imgCount}.jpg` + await funcs.downloadImage(this.imgUrl, jpgPath) + .then(debuglog) + .catch(console.error); + debuglog(`Downloaded ${this.imgCount} image from tweet #${this.no}.`, 2) + } else if (this.hasMultiImage) { + debuglog(`${this.orig} Tweet #${this.no} contains multiple images.`, 2) + this.imgCount = 0; + for (var x = 1; x < 3; x++) { + for (var y = 1; y < 3; y++) { + this.iterateExists = await elements.doesExist(driver,this.x.multiImages(x,y)); + if (this.iterateExists) { + debuglog(`${x},${y} Exists!`); + this.imgUrl = await elements.getAttribute(driver,this.x.multiImages(x,y),'src') + debuglog(this.imgUrl,2); + this.imgCount++ + const jpgPath = `${imgSavePath}${this.orig == 'home' ? '' : 'r'}${this.no}.${this.imgCount}.jpg` + await funcs.downloadImage(this.imgUrl, jpgPath) + .then(debuglog) + .catch(console.error); + } + } + } + debuglog(`Downloaded ${this.imgCount} images from tweet #${this.no}.`,1) + } + } + + async uploadImages(imgSavePath) { + if (this.hasImages) {debuglog("Uploading images to Mastodon...",1);} + for (var f = 1; f < (this.imgCount+1); f++) { + var jpgPath = `${imgSavePath}${this.orig == 'home' ? '' : 'r'}${this.no}.${f}.jpg` + debuglog(`uploading image to mastodon: ${jpgPath}`); + var imgid = await mastodon.postMedia(jpgPath) + debuglog(`mastodon image id: ${imgid}`); + this.imgArray.push(imgid); + } + } + + async printPreview(){ + const postPreviewMessage = `${format.success('Mastodon Post Preview:')} +╔${'═'.repeat(process.stdout.columns-2)}╗ +${this.text} +╚${'═'.repeat(process.stdout.columns-2)}╝`; + debuglog(postPreviewMessage, 1); + } +} + +module.exports = Tweets + + + + diff --git a/ref/classes/xpaths.js b/ref/classes/xpaths.js new file mode 100644 index 0000000..21d9070 --- /dev/null +++ b/ref/classes/xpaths.js @@ -0,0 +1,60 @@ +class TweetPaths { + constructor(orig,i) { + if (orig == 'home') { + this.timeLine = "//*[@id='react-root']/div/div/div[2]/main/div/div/div/div/div/div[3]/div/div/section/div/div"; //the immediate parent div of all tweets + } else if (orig == 'thread') { + this.timeLine = "/html/body/div[1]/div/div/div[2]/main/div/div/div/div[1]/div/section/div/div" //thread tweet xpath + } + this.tweet = (`${this.timeLine}/div`); //the div containing individual tweet content: (tweetXpath + '[1]') + this.containsDivs = (`${this.timeLine}[count(div) > 1]`) //timeline conntaining divs + this.path = `${this.tweet}[${orig == 'home' ? 1 : i}]`; + + //the following xpaths follow an individual tweet xpath: (tweetXpath + '[1]' + variableXPath) + this.urlCard = `${this.path}/div/div/div/article/div/div/div/div[*]/div[*]/div[*]/div[*]/div/div[2]/a` + this.tweeterHandle = `${this.path}/div/div/div/article/div/div/div/div[2]/div[2]/div[1]/div/div/div[1]/div/div/div[2]/div/div[1]/a/div/span[contains(text(),'@')]` /*text label containing tweeter's handle*/ + this.tweeterName = `${this.path}/div/div/div/article/div/div/div/div[2]/div[2]/div[1]/div/div/div[1]/div/div/div[1]/div/a/div/div[1]/span` /*text label containing tweeter's name*/ + this.quoteTweetHandle = `${this.path}/div/div/div/article/div/div/div/div[2]/div[2]/div[2]/div[2]/div[*]/div[2]/div/div[1]/div/div/div/div/div/div[2]/div[1]/div/div/div/span`; //xpath to text label that reveals if a tweet is a quote tweet (leads to the quote tweeted user's handle) + this.quoteTweetContent = `${this.path}/div/div/div/article/div/div/div/div[2]/div[2]/div[2]/div[2]/div[*]/div[2][div/div[1]/div/div/div/div/div/div[2]/div[1]/div/div/div/span]` /*xpath to locate entirety of Quote Tweeted Content*/ + + this.ageRestricted = `${this.path}/div/div/div/article//span/span[1]/span[contains(text(),'Age-restricted')]`; //xpath that reveals if tweet is age-restricted (& therefore not visible) + this.pinnedTweet = `${this.path}/div/div/div/article/div/div/div/div[1]/div/div/div/div/div[2]/div/div/div/span[contains(text(),'Pinned')]` /*//xpath that reveals if tweet is pinned*/ + + this.tweetText = `${this.path}//div[@data-testid='tweetText']`; //xpath that leads to div containing all tweet text + //this.emoji = this.path + "//img"; //xpath that leads to div containing all tweet text + this.tweetURL = `${this.path}//div[3]/a[contains(@href, 'status')]`; //xpath to tweet url + this.video = `${this.path}//div[1]//video`; //xpath that leads to video + this.singleImage = `${this.path}//div[1]/div/div/div/div/a/div/div[2]/div/img[@alt='Image']`; //xpath to image that reveals if a tweet has one image + this.multiImage = `${this.path}//div[2]/div[2]/div[2]/div[2]/div/div/div/div/div[2]/div/div[1]/div[1]//a/div/div/img[@alt='Image']`; //xpath to image that reveals if a tweet has more than one image + + if (orig == 'home') { //home timeline only + this.detectThread = `${this.path}/div/div/div/article/div/a/div/div[2]/div/span`; //xpath to text label that reveals if a tweet is a part of a thread from home timeline + this.detectRT = `${this.path}/div/div/div/article/div/div/div/div[1]/div/div/div/div/div[2]/div/div/div/a/span`; //xpath to text label that reveals if a tweet is a retweet + } else if (orig == 'thread'){ //thread timeline only + this.entryTweet = `${this.path}/div/div/div/article/div/div/div/div[3]/div[5]/div/div[1]/div/a` /*xpath that reveals if tweet is open in thread //openThreadTweetTSXPath*/ + } + + //the following xpaths follow an individual tweet xpath and are used to find all images in a tweet with multiple images: (tweetXpath + '[1]' + multiImage1XPath + x + multiImage2XPath + y + multiImage3XPath) + // the following combinations of x,y variables point to the corresponding image + // 1,1 = first image + // 2,1 = second image + // 2,2 = third image + // 1,2 = fourth image + this.multiImage1 = "//div[2]/div[2]/div[2]/div[2]/div/div/div/div/div[2]/div/div["; + this.multiImage2 = "]/div["; + this.multiImage3 = "]//a/div/div/img[@alt='Image']"; + } + tweetElement(i, pathFromTweet) { + let xPath = (this.path + pathFromTweet); + return xPath; + } + multiImages(x,y) { + let xPath = (this.path + this.multiImage1 + x + this.multiImage2 + y + this.multiImage3); + return xPath; + } +} + +module.exports = { TweetPaths } + + + + diff --git a/ref/functions/csv.js b/ref/functions/csv.js new file mode 100644 index 0000000..ac9b269 --- /dev/null +++ b/ref/functions/csv.js @@ -0,0 +1,45 @@ +const csvWriter = require('csv-write-stream'); +const fs = require('fs'); +const support = require('../functions/support.js'); +const debuglog = support.debuglog; + +async function initCSV(csvFN){ + writer = csvWriter({sendHeaders: false}); + writer.pipe(fs.createWriteStream(csvFN)); + writer.write({ + header1: 'URLs', + header2: 'IDs', + header3: 'Origin' + }); + writer.end(); +} + +async function openCSV(csvFN){ + await fs.readFile(csvFN, "utf-8", (err, data) => { + if (!err) { + return data; + } + }); + return output; +} +async function appendToCSV(url,id,orig,csvFN,fc){ + debuglog(`writing '${url}' to CSV!!`,2) + writer = csvWriter({sendHeaders: false}); + writer.pipe(fs.createWriteStream(csvFN, {flags: 'a'})); + debuglog(`file contents: ${fc}`); + if (!fc.includes(url)){ + writer.write({ + header1: url, + header2: id, + header3: orig + }); + } + writer.end(); +} + +module.exports = { initCSV,appendToCSV,openCSV }; + + + + + diff --git a/ref/functions/elements.js b/ref/functions/elements.js new file mode 100644 index 0000000..bf8f45e --- /dev/null +++ b/ref/functions/elements.js @@ -0,0 +1,37 @@ +const webdriver = require('selenium-webdriver'); +const By = webdriver.By; +const until = webdriver.until; + +async function doesExist(drvr,path){ + exists = drvr.findElement(By.xpath(path)).then(function() { + return true; // It existed + }, function(err) { + if (err instanceof webdriver.error.NoSuchElementError) { + return false; // It was not found + } + }); + return exists; +} + +async function waitFor(drvr,xpath,ms){ + await drvr.wait(until.elementLocated(By.xpath(xpath)), ms); +} + +async function getAttribute(drvr,xpath,attribute){ + return drvr.findElement(By.xpath(xpath)).getAttribute(attribute); +} + +async function getText(drvr,xpath){ + return drvr.findElement(By.xpath(xpath)).getText(); +} + +async function getElement(drvr,xpath){ + return drvr.findElement(By.xpath(xpath)); +} + +module.exports = { doesExist,waitFor,getAttribute,getText,getElement }; + + + + + diff --git a/ref/functions/functions.js b/ref/functions/functions.js new file mode 100644 index 0000000..507f28a --- /dev/null +++ b/ref/functions/functions.js @@ -0,0 +1,41 @@ +const fs = require('fs'); +const client = require('https'); +var { tall } = require('tall') + +function downloadImage(url, filepath) { + return new Promise((resolve, reject) => { + client.get(url, (res) => { + if (res.statusCode === 200) { + res.pipe(fs.createWriteStream(filepath)) + .on('error', reject) + .once('close', () => resolve(filepath)); + } else { + res.resume(); + reject(new Error(`Request Failed With a Status Code: ${res.statusCode}`)); + } + }); + }); +} + +async function expandUrl(shortUrl) { + try { + const unshortenedUrl = await tall(shortUrl); + return unshortenedUrl; + } catch (err) { + console.error('Error unshortening url: ', err) + return ""; + } + } + +function rand(min, max) { + return Math.floor( + Math.random() * (max - min + 1) + min + ) +} + +module.exports = { downloadImage,expandUrl,rand }; + + + + + diff --git a/ref/functions/mastodon.js b/ref/functions/mastodon.js new file mode 100644 index 0000000..807d6b2 --- /dev/null +++ b/ref/functions/mastodon.js @@ -0,0 +1,80 @@ +const fs = require('fs'); +const Masto = require('mastodon'); + +const support = require('../functions/support.js'); +const csv = require('../functions/csv.js'); +const debuglog = support.debuglog; +const funcs = require('../functions/functions.js'); +const Args = require('../classes/arguments.js'); +const args = new Args(); +const Formats = require('../classes/formats.js'); +const format = new Formats(); + +function setupMastodon(){ + const config = fs.readFileSync("./config.txt").toString().split(/[\r\n]+/); + var M = new Masto({ + access_token: config[0], + api_url: config[1] + }) + return M; +} + +async function postMedia(path){ + id = 0; + if (args.enablePosts){ + var M = setupMastodon(); + await M.post('media', { file: fs.createReadStream(path) }).then(resp => { + id = resp.data.id; + }, function(err) { + if (err) { + debuglog(err,0); + return "err"; + } + }) + } else if (args.forceCSV) { + return funcs.rand(1,100); + } + return id; +} + +async function postStatus(tweet,file,csvc){ + var id = 0; + if (args.enablePosts){ + var M = setupMastodon(); + params = { status: tweet.text } + debuglog(`${tweet.no} is a reply to ${tweet.prompt}`); + if (tweet.hasImages) {//POST HAS IMAGES + debuglog("post has images!!",2) + debuglog(`images array: ${tweet.imgArray}`,2) + Object.assign(params, { media_ids: tweet.imgArray }); + } + if (tweet.prompt != 0) {//POST IS A REPLY + debuglog("reply to: " + tweet.prompt,2) + Object.assign(params, { in_reply_to_id: tweet.prompt }); + } + await M.post('statuses', params, (err, data) => { + if (err) { + debuglog(format.error(`Post to Mastodon failed with error: ${err}`), 1); + return "err"; + } else { + //ADD TWEET TO CSV TO PREVENT FUTURE PROCESSING + csv.appendToCSV(tweet.url,data.id,tweet.orig,file,csvc); + debuglog(`posted to mastodon and got back id: ${data.id}`); + debuglog(format.bold(`Successfully posted ${tweet.url} to Mastodon!`),1); + id = data.id; + } + }) + } else if (args.forceCSV) { + var fakeID = funcs.rand(1,100); + csv.appendToCSV(tweet.url,fakeID,(`forced ${tweet.orig}`),file,csvc); + id = fakeID; + } + return id; +} + +module.exports = { postMedia,postStatus }; + + + + + diff --git a/ref/functions/support.js b/ref/functions/support.js new file mode 100644 index 0000000..5d6e264 --- /dev/null +++ b/ref/functions/support.js @@ -0,0 +1,87 @@ +const fs = require('fs'); +const Args = require('../classes/arguments.js'); +const args = new Args(); + +const Formats = require('../classes/formats.js'); +const format = new Formats(); + +function printHelp() { //PRINT USAGE TO CONSOLE + const usageText = fs.readFileSync('./usage.txt', 'utf-8'); + const formattedUsage = usageText.replace(/{([^{}]+)}/g, format.bold('$1')) + .replace(/~([^~]+)~/g, format.underline('$1')) + .replace(/<([^<>]+)>/g, format.italic('$1')) + .replace(/(\r\n|\r|\n)/g, '\n░ '); + debuglog(formattedUsage,1); +} + +function logArguments() {//PRINT ARGUMENTS TO CONSOLE + debuglog("Settings: ", 2); + debuglog(`-h help: ${args.help}`, 2); + debuglog(`-q quotes: ${args.enableQuotes}`, 2); + debuglog(`-t threads: ${args.enableThreads}`, 2); + debuglog(`-b displayBrowser: ${args.displayBrowser}`, 2); + debuglog(`-p enablePosts: ${args.enablePosts}`, 2); + debuglog(`-c forceCSV: ${args.forceCSV}`, 2); + debuglog(`-m printMeta: ${args.printMeta}`, 2); + debuglog(`-u userName: ${args.userName}`, 2); + debuglog(`-n tweetCount: ${args.tweetCount}`, 2); + debuglog(`-d debug: ${args.debug}`, 2); + debuglog(`-w timeout: ${args.timeOut}`, 2); + + debuglog(`Scraping ${format.bold(args.tweetCount)} tweet(s) from ${format.bold(`@${args.userName}`)}...`, 1); + debuglog(`Browser is${args.displayBrowser ? "" : " not"} visible`, 1); + debuglog(`Tweets${args.enableQuotes ? ", Quote" : ""}${args.enableThreads ? ", Thread" : ""} Tweets will${args.enablePosts ? "" : " not"} be posted to Mastodon`, 1); + debuglog(`Tweet URLs will${args.forceCSV ? "" : " not"} be forcibly added to CSV file`, 1); + debuglog(`Name, handle, and URL will${args.printMeta ? "" : " not"} be added to the body text`, 1); +} + + +function debuglog(debugString,logLevel = 2) {//CUSTOM CONSOLE LOG THAT ALLOWS USER-SET DEBUG OUTPUT LEVELS + const prefixes = { + 0: " ", + 1: "░", + 2: "█", + }; + const prefix = prefixes[logLevel]; + if (logLevel <= args.debug) { + console.log(`${prefix} ${debugString}`); + } +} + +function validateArgs() { + if (args.help) { + printHelp(); + process.exit(0); + } + + const userNameRegex = /^@?(\w){1,15}$/g; + const usernameError = format.error("Uh-oh! It seems like the username doesn't work! Make sure you're entering the user's handle as it appears on-screen."); + const helpText = format.notice("For help: $node ./TwitToMast.js -h"); + const tweetCountError = format.error(`Expected Integer greater than 0, got '${args.tweetCount}' instead`); + const debugError = format.error(`Expected 0-2, got '${args.debug}' instead`); + + if (!userNameRegex.test(args.userName)) { + debuglog(usernameError, 0); + debuglog(helpText, 0); + process.exit(1); + } + + if (args.tweetCount < 1) { + debuglog(tweetCountError, 0); + debuglog(helpText, 0); + process.exit(1); + } + + if (args.debug < 0 || args.debug > 2) { + debuglog(debugError, 0); + debuglog(helpText, 0); + process.exit(1); + } + } + +module.exports = { printHelp,logArguments,debuglog,validateArgs }; + + + + + diff --git a/usage.txt b/usage.txt new file mode 100644 index 0000000..281343d --- /dev/null +++ b/usage.txt @@ -0,0 +1,42 @@ + +{Usage} + {node ./TwitToMast.js} [{-htqrpmbc}] [{-u} ~username~] [{-n} ~tweetcount~] [{-d} ~debuglevel~] [{-w} ~timeout~] + {node ./multi.js} [{-htqrpmbc}] [{-n} ~tweetcount~] [{-d} ~debuglevel~] [{-w} ~timeout~] + +{Arguments} + {-h:} - show help screen (you made it here!) + {-u:} ~username~ + - the twitter handle of the user whose account will be scraped + <- defaults to 'Twitter' (@twitter)> + {-n:} ~tweetcount~ + - the number of enabled tweets that will be scraped from the targeted account + <- defaults to 5> + {-t:} - tweets that are part of threads will be included in the scan + {-q:} - quote tweets will be included in the scan + {-r:} - Link to quoted tweet will appear in the header, preceded by "re: " + - default behavior posts link at bottom of Mastodon post preceded by "Quoting " + {-p:} - enable/disable posting to Mastodon + {-m:} - include user's name, handle, and link to tweet + {-b:} - display browser (disable headless mode) + {-c:} - force URL to be logged to file if posts are disabled + {-d:} ~debuglevel~ + - amount of information to print to console + <0: only errors> + <1: current task + tweet Text (default)> + <2: pretty much everything> + {-w:} ~timeout~ + - length of time (in ms) to wait for page elements to load + <- defaults to 30000 (30 seconds)> + +{config.txt} + {Line 1: API_KEY} + - Your Access Token obtained from Mastodon > Preferences > Development > Application + {Line 2: API_URL} + - https://~your mastodon server url~/api/v1/ + +{Examples} + {Scrape 10 most recent tweets, quote tweets, and thread tweets from @twitter account, and post to Mastodon} + $node ./TwitToMast.js -qtp -u twitter -n 10 + {Scrape 10 most recent tweets, quote tweets, and thread tweets from accounts listed in usernameslist.txt, and post to Mastodon} + $node ./multi.js -qtp -n 10 + diff --git a/usernameslist.txt b/usernameslist.txt index b330850..1c412b9 100644 --- a/usernameslist.txt +++ b/usernameslist.txt @@ -9,4 +9,4 @@ TwitterBlue TwitterDesign TwitterEng Policy -TwitterDev +TwitterDev \ No newline at end of file