Fixed and improved modules, adding first part support for AWS accounts

This commit is contained in:
2023-05-19 23:03:11 +02:00
parent 331b110eb8
commit 093836c319
7 changed files with 470 additions and 46 deletions

21
main.js
View File

@@ -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();
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();
}
}
}

78
modules/awsHandler.js Normal file
View File

@@ -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 };

View File

@@ -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]);
}
}
});
});

View File

@@ -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;
}

View File

@@ -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) {

298
package-lock.json generated
View File

@@ -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",

View File

@@ -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",