From 093836c319bfabc0d089da7f57e067b776536bd5 Mon Sep 17 00:00:00 2001 From: Lightemerald Date: Fri, 19 May 2023 23:03:11 +0200 Subject: [PATCH] Fixed and improved modules, adding first part support for AWS accounts --- main.js | 21 ++- modules/awsHandler.js | 78 ++++++++++ modules/codeHandler.js | 31 ++-- modules/driverManager.js | 84 +++++++---- modules/identityHandler.js | 3 +- package-lock.json | 298 ++++++++++++++++++++++++++++++++++++- package.json | 1 + 7 files changed, 470 insertions(+), 46 deletions(-) create mode 100644 modules/awsHandler.js diff --git a/main.js b/main.js index c33c922..1d05d74 100644 --- a/main.js +++ b/main.js @@ -3,8 +3,10 @@ require('dotenv').config(); const { connect, disconnect } = require('./modules/codeHandler'); const { createDriver } = require('./modules/driverManager'); const { createAccount } = require('./modules/microsoftHandler'); +const { createAWSAccount } = require('./modules/awsHandler'); +const args = process.argv.slice(2); -async function main() { +async function microsoft() { const numAccounts = 1; await connect(); const accountPromises = []; @@ -19,4 +21,19 @@ async function main() { await disconnect(); } -main(); \ No newline at end of file +async function aws() { + await connect(); + await createAWSAccount(createDriver()); + await disconnect(); +} + +for (let i = 0; i < args.length; i++) { + if (args[i].startsWith('--')) { + if (args[i] === '--aws') { + aws(); + } + else { + microsoft(); + } + } +} \ No newline at end of file diff --git a/modules/awsHandler.js b/modules/awsHandler.js new file mode 100644 index 0000000..c2f2fc1 --- /dev/null +++ b/modules/awsHandler.js @@ -0,0 +1,78 @@ +// const fs = require('fs'); +// const path = require('path'); +const { By, Key, until } = require('selenium-webdriver'); + +const { createIdentity } = require('./identityHandler'); +const { getCodeFromEmail } = require('./codeHandler'); +const { clickTime, urlTime, timeoutLoading } = require('./speedHandler').getSpeed(); + +async function createAWSAccount(driver) { + + try { + const identity = await createIdentity(); + console.log(identity); + + await driver.get('https://aws.amazon.com/'); + await driver.sleep(urlTime); + + await driver.wait(until.titleContains('Cloud Computing'), timeoutLoading); + + await driver.findElement(By.css('button[data-id="awsccc-cb-btn-accept"]')).click(); + await driver.sleep(clickTime); + + await driver.findElement(By.css('a.lb-btn-p-primary[href="https://portal.aws.amazon.com/gp/aws/developer/registration/index.html?nc2=h_ct&src=header_signup"]')).click(); + await driver.sleep(urlTime); + + await driver.wait(until.titleContains('AWS Console'), timeoutLoading); + + await driver.findElement(By.id('awsui-input-0')).sendKeys(identity.email); + await driver.findElement(By.id('awsui-input-1')).sendKeys(identity.first_name + '.' + identity.last_name); + await driver.findElement(By.id('awsui-input-1')).sendKeys(Key.RETURN); + await driver.sleep(clickTime); + + const code = await getCodeFromEmail(); + await driver.findElement(By.id('awsui-input-2')).sendKeys(`${code}`); + await driver.findElement(By.id('awsui-input-2')).sendKeys(Key.RETURN); + await driver.sleep(urlTime); + + await driver.findElement(By.id('awsui-input-3')).sendKeys(identity.password); + await driver.findElement(By.id('awsui-input-4')).sendKeys(identity.password); + await driver.findElement(By.id('awsui-input-4')).sendKeys(Key.RETURN); + await driver.sleep(urlTime); + + await driver.findElement(By.id('awsui-radio-button-2')).click(); + await driver.findElement(By.id('awsui-input-5')).sendKeys(identity.first_name + ' ' + identity.last_name); + + await driver.findElement(By.id('awsui-select-1-textbox')).click(); + await driver.findElement(By.id('awsui-select-1-dropdown-option-74')).click(); + + // add a dynamic way to set the phone number + await driver.findElement(By.id('awsui-input-7')).sendKeys('0666666666'); + + await driver.findElement(By.id('awsui-select-2')).click(); + await driver.findElement(By.id('awsui-select-2-dropdown-option-74')).click(); + + await driver.findElement(By.id('awsui-input-9')).sendKeys(identity.address); + + await driver.findElement(By.id('awsui-input-11')).sendKeys('Paris'); + await driver.findElement(By.id('awsui-input-12')).sendKeys('Ile-de-France'); + await driver.findElement(By.id('awsui-input-13')).sendKeys(Math.floor(Math.random() * (75017 - 75001 + 1)) + 75001); + + await driver.findElement(By.id('awsui-checkbox-0')).click(); + await driver.findElement(By.id('awsui-input-13')).sendKeys(Key.RETURN); + await driver.sleep(urlTime); + + await driver.findElement(By.id('awsui-input-15')).sendKeys(identity.first_name + ' ' + identity.last_name); + await driver.findElement(By.id('awsui-select-4')).click(); + await driver.findElement(By.id('awsui-select-4-dropdown-option-5')).click(); + + // wait until user finished card verification + + } + finally { + // await driver.quit(); + } + return; +} + +module.exports = { createAWSAccount }; \ No newline at end of file diff --git a/modules/codeHandler.js b/modules/codeHandler.js index 880082e..851e73f 100644 --- a/modules/codeHandler.js +++ b/modules/codeHandler.js @@ -23,17 +23,28 @@ mailListener.on('error', function(err) { function getCodeFromEmail() { return new Promise((resolve) => { mailListener.on('mail', function(mail, seqno, attributes) { - if (mail.subject.trim() !== 'Verify your email address') return; if (!attributes) return; - const text = mail.text.trim(); - const match = text.match(/code: (\d+)/i); - if (match) { - const imap = mailListener.imap; - imap.addFlags(attributes.uid, '\\Seen', (err) => { - if (err) console.log('Error marking email as seen:', err); - // else console.log('Email marked as seen'); - }); - resolve(match[1]); + if (mail.subject.trim() == 'Verify your email address') { + const text = mail.text.trim(); + const match = text.match(/code: (\d+)/i); + if (match) { + const imap = mailListener.imap; + imap.addFlags(attributes.uid, '\\Seen', (err) => { + if (err) console.log('Error marking email as seen:', err); + }); + resolve(match[1]); + } + } + else if (mail.subject.trim() == 'AWS Email Verification') { + const text = mail.text.trim(); + const match = text.match(/code:\s*(\d+)/i); + if (match) { + const imap = mailListener.imap; + imap.addFlags(attributes.uid, '\\Seen', (err) => { + if (err) console.log('Error marking email as seen:', err); + }); + resolve(match[1]); + } } }); }); diff --git a/modules/driverManager.js b/modules/driverManager.js index b97fd5d..d4d751d 100644 --- a/modules/driverManager.js +++ b/modules/driverManager.js @@ -13,39 +13,66 @@ const userAgents = new Map([ const userAgent = userAgents.get(args.find(arg => arg.startsWith('--userAgent='))?.split('=')[1] ?? 'desktop'); function createDriverChrome() { - const driver = new Builder() - .forBrowser('chrome') - .setChromeOptions( - new chrome.Options() - .windowSize({ width: 1024, height: 768 }) - .addArguments(`--user-agent=${userAgent}`), - ) - .build(); - return driver; + try { + const driver = new Builder() + .withCapabilities({ + 'goog:chromeOptions': { + excludeSwitches: [ + 'enable-automation', + 'useAutomationExtension', + ], + }, + }) + .forBrowser('chrome') + .setChromeOptions( + new chrome.Options() + .windowSize({ width: 1024, height: 768 }) + .addArguments(`--user-agent=${userAgent}`), + ) + .build(); + return driver; + } + catch (err) { + console.log(err); + console.log('Chrome/chromium or chromedriver not installed'); + return null; + } } function createDriverFirefox() { - const driver = new Builder() - .forBrowser('firefox') - .setFirefoxOptions( - new firefox.Options() - .windowSize({ width: 1024, height: 768 }) - .addArguments(`--user-agent=${userAgent}`), - ) - .build(); - return driver; + try { + const driver = new Builder() + .forBrowser('firefox') + .setFirefoxOptions( + new firefox.Options() + .windowSize({ width: 1024, height: 768 }) + .addArguments(`--user-agent=${userAgent}`), + ) + .build(); + return driver; + } + catch (err) { + console.log('Firefox or geckodriver not installed'); + return null; + } } function createDriverEdge() { - const driver = new Builder() - .forBrowser('MicrosoftEdge') - .setEdgeOptions( - new edge.Options() - .windowSize({ width: 1024, height: 768 }) - .addArguments(`--user-agent=${userAgent}`), - ) - .build(); - return driver; + try { + const driver = new Builder() + .forBrowser('MicrosoftEdge') + .setEdgeOptions( + new edge.Options() + .windowSize({ width: 1024, height: 768 }) + .addArguments(`--user-agent=${userAgent}`), + ) + .build(); + return driver; + } + catch (err) { + console.log('Edge or edge driver not installed'); + return null; + } } function createDriver() { @@ -71,6 +98,9 @@ function createDriver() { default: driver = createDriverChrome(); } + if (!driver) { + process.exit(1); + } console.log(`Using ${browserType} browser with user agent: ${userAgent}`); return driver; } diff --git a/modules/identityHandler.js b/modules/identityHandler.js index 0b40c0c..eaf9fa4 100644 --- a/modules/identityHandler.js +++ b/modules/identityHandler.js @@ -5,8 +5,7 @@ function createIdentity() { const lastName = faker.name.lastName(); const birthDate = faker.date.between('1960-01-01', '2004-12-31'); const email = firstName + '.' + lastName + '@aostia.org'; - const password = generatePassword(12); - return { first_name: firstName, last_name: lastName, birth_date: birthDate, email: email, password: password }; + return { first_name: firstName, last_name: lastName, birth_date: birthDate, email: email, password: generatePassword(12), address: faker.address.streetAddress() }; } function generatePassword(length) { diff --git a/package-lock.json b/package-lock.json index 90c4a32..0e1ecc0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,6 +6,7 @@ "": { "dependencies": { "bluebird": "^3.7.2", + "chromedriver": "^113.0.0", "cron": "^2.3.0", "dotenv": "^16.0.3", "faker": "^6.6.6", @@ -166,6 +167,26 @@ "url": "https://ko-fi.com/killymxi" } }, + "node_modules/@testim/chrome-version": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.3.tgz", + "integrity": "sha512-g697J3WxV/Zytemz8aTuKjTGYtta9+02kva3C1xc7KXB8GdbfE1akGJIsZLyY/FSh2QrnE+fiB7vmWU3XNcb6A==" + }, + "node_modules/@types/node": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.1.tgz", + "integrity": "sha512-DqJociPbZP1lbZ5SQPk4oag6W7AyaGMO6gSfRwq3PWl4PXTwJpRQJhDq4W0kzrg3w6tJ1SwlvGZ5uKFHY13LIg==", + "optional": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -192,6 +213,17 @@ "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz", "integrity": "sha512-aQX7AISOMM7HFE0iZ3+YnD07oIeJqWGVnJ+ZIKaBZAk03ftmVYVqsGas/rbXKR21n4D/hKCSHypvcyOkds/xzg==" }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -243,6 +275,21 @@ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==" }, + "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/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -262,6 +309,14 @@ "concat-map": "0.0.1" } }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -287,6 +342,27 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chromedriver": { + "version": "113.0.0", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-113.0.0.tgz", + "integrity": "sha512-UnQlt2kPicYXVNHPzy9HfcWvEbKJjjKAEaatdcnP/lCIRwuSoZFVLH0HVDAGdbraXp3dNVhfE2Qx7gw8TnHnPw==", + "hasInstallScript": true, + "dependencies": { + "@testim/chrome-version": "^1.1.3", + "axios": "^1.2.1", + "compare-versions": "^5.0.1", + "extract-zip": "^2.0.1", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^1.1.0", + "tcp-port-used": "^1.0.1" + }, + "bin": { + "chromedriver": "bin/chromedriver" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -305,6 +381,22 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "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/compare-versions": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-5.0.3.tgz", + "integrity": "sha512-4UZlZP8Z99MGEY+Ovg/uJxJuvoXuN4M6B3hKaiackiHrgzQFEe3diJi1mf1PNHbFujM7FvLrK2bpgIaImbtZ1A==" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -341,7 +433,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -357,8 +448,7 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/deepmerge": { "version": "4.3.1", @@ -368,6 +458,14 @@ "node": ">=0.10.0" } }, + "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/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -455,6 +553,14 @@ "node": ">=8.10.0" } }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -622,6 +728,25 @@ "node": ">=0.10.0" } }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, "node_modules/faker": { "version": "6.6.6", "resolved": "https://registry.npmjs.org/faker/-/faker-6.6.6.tgz", @@ -654,6 +779,14 @@ "reusify": "^1.0.4" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -701,11 +834,57 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "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/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -808,6 +987,18 @@ "entities": "^4.4.0" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -884,6 +1075,14 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -914,6 +1113,24 @@ "node": ">=8" } }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, + "node_modules/is2": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", + "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==", + "dependencies": { + "deep-is": "^0.1.3", + "ip-regex": "^4.1.0", + "is-url": "^1.2.4" + }, + "engines": { + "node": ">=v0.10.0" + } + }, "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -1159,6 +1376,25 @@ "node": ">=10.0.0" } }, + "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/mimelib": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.3.1.tgz", @@ -1183,8 +1419,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -1351,6 +1586,11 @@ "url": "https://ko-fi.com/killymxi" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -1365,6 +1605,20 @@ "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/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -1584,6 +1838,31 @@ "node": ">=8" } }, + "node_modules/tcp-port-used": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", + "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", + "dependencies": { + "debug": "4.3.1", + "is2": "^2.0.6" + } + }, + "node_modules/tcp-port-used/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -1714,6 +1993,15 @@ } } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 160a2f3..c537366 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "dependencies": { "bluebird": "^3.7.2", + "chromedriver": "^113.0.0", "cron": "^2.3.0", "dotenv": "^16.0.3", "faker": "^6.6.6",