diff --git a/.editorconfig b/.editorconfig index f66a115555..d2a7f03910 100644 --- a/.editorconfig +++ b/.editorconfig @@ -9,9 +9,4 @@ trim_trailing_whitespace = true insert_final_newline = true [*.md] -indent_style = space -indent_size = 4 - -[*.ts] -indent_style = tab indent_size = 4 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000000..58b2223f15 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +build/ +docs/ diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000000..f95bb333f0 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "./node_modules/gts/" +} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3859fe36ee..aa9b9e3dc9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -4,7 +4,7 @@ on: branches: - main jobs: - build-and-lint: + build-lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -18,11 +18,12 @@ jobs: restore-keys: ${{ runner.os }}-node- - name: Add problem matcher run: echo "::add-matcher::.github/xo-problem-matcher.json" - - name: Pull dependencies - run: | - npm ci - npm run build - npm run lint + - name: Install dependencies + run: npm ci + - name: Compile TypeScript + run: npm run compile + - name: Run linter + run: npm run lint build-docker: runs-on: ubuntu-latest steps: diff --git a/.gitignore b/.gitignore index b5d3571ea9..973352e6c2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,8 +2,8 @@ .vs/ .vscode/ build/ +coverage/ node_modules/ -src/config/*.yaml .env dotenv diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000000..ff15483392 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,3 @@ +module.exports = { + ...require('gts/.prettierrc.json') +} diff --git a/Dockerfile b/Dockerfile index 2df675b97f..ac522e25e5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:14.15.0-alpine3.12 AS builder +FROM node:14.15.4-alpine3.12 AS builder LABEL org.opencontainers.image.source="https://github.com/jef/streetmerchant" @@ -12,20 +12,20 @@ COPY tsconfig.json tsconfig.json RUN npm ci COPY src/ src/ -RUN npm run build +RUN npm run compile RUN npm prune --production -FROM node:14.15.0-alpine3.12 +FROM node:14.15.4-alpine3.12 RUN apk add --no-cache chromium ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser \ - DOCKER=true + DOCKER=true RUN addgroup -S appuser && adduser -S -g appuser appuser \ - && mkdir -p /home/appuser/Downloads /app \ - && chown -R appuser:appuser /home/appuser \ - && chown -R appuser:appuser /app + && mkdir -p /home/appuser/Downloads /app \ + && chown -R appuser:appuser /home/appuser \ + && chown -R appuser:appuser /app USER appuser diff --git a/docs/getting-started.md b/docs/getting-started.md index a05b3edc6a..d12817f47b 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -64,7 +64,7 @@ To customize streetmerchant, make a copy of `dotenv-example` as `dotenv` and mak The command `npm run start:dev` can be used instead of `npm run start` to automatically restart the project when filesystem changes are detected in the `src/` folder or `dotenv` file. -Use `npm run lint` to see any linting uses and `npm run lint:fix` to automatically fix the issues it can. +Use `npm run lint` to see any linting uses and `npm run fix` to automatically fix the issues it can. ### Developing in Docker diff --git a/docs/javascripts/tables.js b/docs/javascripts/tables.js index 4081247fd3..dddc5e3ddc 100644 --- a/docs/javascripts/tables.js +++ b/docs/javascripts/tables.js @@ -1,6 +1,6 @@ -app.document$.subscribe(function() { - var tables = document.querySelectorAll("article table") - tables.forEach(function(table) { - new Tablesort(table) - }) -}) \ No newline at end of file +app.document$.subscribe(() => { + const tables = document.querySelectorAll('article table'); + tables.forEach(table => { + new Tablesort(table); + }); +}); diff --git a/package-lock.json b/package-lock.json index f0fc029413..03b7030f63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,66 +4,18 @@ "lockfileVersion": 1, "dependencies": { "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { "@babel/highlight": "^7.10.4" } }, - "@babel/generator": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", - "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", - "dev": true, - "requires": { - "@babel/types": "^7.12.5", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "@babel/highlight": { @@ -129,74 +81,12 @@ } } }, - "@babel/parser": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.7.tgz", - "integrity": "sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==", + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@babel/template": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", - "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7" - } - }, - "@babel/traverse": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.9.tgz", - "integrity": "sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "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 - } - } - }, - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, "@cliqz/adblocker": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@cliqz/adblocker/-/adblocker-1.19.0.tgz", @@ -254,11 +144,6 @@ "@types/node": "^14.11.2", "tslib": "^2.0.3" } - }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" } } }, @@ -275,18 +160,6 @@ "@types/ws": "^7.2.7", "tslib": "^2.0.3", "ws": "^7.4.2" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - }, - "ws": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz", - "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==" - } } }, "@d-fischer/cross-fetch": { @@ -319,13 +192,6 @@ "requires": { "detect-node": "^2.0.4", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "@d-fischer/promise.allsettled": { @@ -356,14 +222,9 @@ }, "dependencies": { "@types/node": { - "version": "12.19.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.12.tgz", - "integrity": "sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw==" - }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + "version": "12.19.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.14.tgz", + "integrity": "sha512-2U9uLN46+7dv9PiS8VQJcHhuoOjiDPZOLAt0WuA1EanEknIMae+2QbMhayF7cgGqjvRVIfNpt+6jLPczJZFiRw==" } } }, @@ -374,13 +235,6 @@ "requires": { "@types/node": "^14.11.2", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "@d-fischer/typed-event-emitter": { @@ -390,13 +244,6 @@ "requires": { "@types/node": "^14.11.2", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "@dabh/diagnostics": { @@ -434,153 +281,12 @@ "https-proxy-agent": "^5.0.0", "socks-proxy-agent": "^5.0.0", "tough-cookie": "^4.0.0" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", - "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==" - }, - "@szmarczak/http-timer": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", - "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "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==", - "requires": { - "debug": "4" - } - }, - "cacheable-request": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", - "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^2.0.0" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - } - }, - "defer-to-connect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", - "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==" - }, - "got": { - "version": "11.8.1", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.1.tgz", - "integrity": "sha512-9aYdZL+6nHmvJwHALLwKSUZ0hMwGaJGYv3hoPLPgnT8BoBXm1SjnZeky+91tfwJaDzun2s4RsBRy48IEYv2q2Q==", - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.1", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "keyv": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", - "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", - "requires": { - "json-buffer": "3.0.1" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "p-cancelable": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", - "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" - }, - "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "requires": { - "lowercase-keys": "^2.0.0" - } - }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } } }, "@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", + "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -590,40 +296,25 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.19", + "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true - }, - "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 - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true } } }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, "@jef/pushbullet": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/@jef/pushbullet/-/pushbullet-2.4.3.tgz", @@ -637,47 +328,29 @@ "ws": "^7.3.1" } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "dependencies": { - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - } - } - }, "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.3", + "@nodelib/fs.stat": "2.0.4", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.3", + "@nodelib/fs.scandir": "2.1.4", "fastq": "^1.6.0" } }, @@ -719,9 +392,43 @@ "integrity": "sha512-yvwa+aCyYI/UjeD39BnpMypG8N06l86wIDW1/PAc6ihBRnodIfZDwccxQN3n1t74wduzaz74m4ZMHZnB06567Q==" }, "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", + "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==" + }, + "@sinonjs/commons": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz", + "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@sinonjs/samsam": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", + "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, "@slack/logger": { @@ -752,15 +459,26 @@ "is-stream": "^1.1.0", "p-queue": "^6.6.1", "p-retry": "^4.0.0" + }, + "dependencies": { + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } } }, "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", + "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", "requires": { - "defer-to-connect": "^1.0.1" + "defer-to-connect": "^2.0.0" } }, "@tootallnate/once": { @@ -857,16 +575,6 @@ "resolved": "https://registry.npmjs.org/@types/firefox-webext-browser/-/firefox-webext-browser-82.0.0.tgz", "integrity": "sha512-zKHePkjMx42KIUUZCPcUiyu1tpfQXH9VR4iDYfns3HvmKVJzt/TAFT+DFVroos8BI9RH78YgF3Hi/wlC6R6cKA==" }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, "@types/har-format": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.5.tgz", @@ -885,18 +593,24 @@ "@types/node": "*" } }, + "@types/is-windows": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/is-windows/-/is-windows-1.0.0.tgz", + "integrity": "sha512-tJ1rq04tGKuIJoWIH0Gyuwv4RQ3+tIu7wQrC0MV47raQ44kIzXSSFKfrxFUOWVRvesoF7mrTqigXmqoZJsXwTg==", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, "@types/json-schema": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", "dev": true }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true - }, "@types/keyv": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", @@ -910,18 +624,18 @@ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.167.tgz", "integrity": "sha512-w7tQPjARrvdeBkX/Rwg95S592JwxqOjmms3zWQ0XZgSyxSLdzWaYH3vErBhdVS/lRBX7F8aBYcYJYTr5TMGOzw==" }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, "@types/minimist": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", "dev": true }, + "@types/mocha": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.0.tgz", + "integrity": "sha512-/Sge3BymXo4lKc31C8OINJgXLaw+7vL1/L1pGiBNpGrBiT8FQiaFpSYV0uhTaG4y78vcMBTMFsWaHDvuD+xGzQ==", + "dev": true + }, "@types/node": { "version": "14.14.21", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.21.tgz", @@ -972,12 +686,6 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, "@types/puppeteer": { "version": "5.4.2", "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.2.tgz", @@ -1009,7 +717,20 @@ "@types/node": "*", "@types/tough-cookie": "*", "form-data": "^2.5.0" - } + }, + "dependencies": { + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } }, "@types/responselike": { "version": "1.0.0", @@ -1024,6 +745,21 @@ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" }, + "@types/sinon": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.10.tgz", + "integrity": "sha512-/faDC0erR06wMdybwI/uR8wEKV/E83T0k4sepIpB7gXuy2gzx2xiOjmztq6a2Y6rIGJ04D+6UU0VBmWy+4HEMA==", + "dev": true, + "requires": { + "@types/sinonjs__fake-timers": "*" + } + }, + "@types/sinonjs__fake-timers": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz", + "integrity": "sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg==", + "dev": true + }, "@types/tough-cookie": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz", @@ -1068,104 +804,71 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.9.1.tgz", - "integrity": "sha512-QRLDSvIPeI1pz5tVuurD+cStNR4sle4avtHhxA+2uyixWGFjKzJ+EaFVRW6dA/jOgjV5DTAjOxboQkRDE8cRlQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz", + "integrity": "sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.9.1", - "@typescript-eslint/scope-manager": "4.9.1", + "@typescript-eslint/experimental-utils": "4.13.0", + "@typescript-eslint/scope-manager": "4.13.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", "regexpp": "^3.0.0", "semver": "^7.3.2", "tsutils": "^3.17.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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 - } } }, "@typescript-eslint/experimental-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.9.1.tgz", - "integrity": "sha512-c3k/xJqk0exLFs+cWSJxIjqLYwdHCuLWhnpnikmPQD2+NGAx9KjLYlBDcSI81EArh9FDYSL6dslAUSwILeWOxg==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz", + "integrity": "sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.9.1", - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/typescript-estree": "4.9.1", + "@typescript-eslint/scope-manager": "4.13.0", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/typescript-estree": "4.13.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.9.1.tgz", - "integrity": "sha512-Gv2VpqiomvQ2v4UL+dXlQcZ8zCX4eTkoIW+1aGVWT6yTO+6jbxsw7yQl2z2pPl/4B9qa5JXeIbhJpONKjXIy3g==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.13.0.tgz", + "integrity": "sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.9.1", - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/typescript-estree": "4.9.1", + "@typescript-eslint/scope-manager": "4.13.0", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/typescript-estree": "4.13.0", "debug": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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 - } } }, "@typescript-eslint/scope-manager": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.9.1.tgz", - "integrity": "sha512-sa4L9yUfD/1sg9Kl8OxPxvpUcqxKXRjBeZxBuZSSV1v13hjfEJkn84n0An2hN8oLQ1PmEl2uA6FkI07idXeFgQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz", + "integrity": "sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/visitor-keys": "4.9.1" + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/visitor-keys": "4.13.0" } }, "@typescript-eslint/types": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.9.1.tgz", - "integrity": "sha512-fjkT+tXR13ks6Le7JiEdagnwEFc49IkOyys7ueWQ4O8k4quKPwPJudrwlVOJCUQhXo45PrfIvIarcrEjFTNwUA==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.13.0.tgz", + "integrity": "sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.9.1.tgz", - "integrity": "sha512-bzP8vqwX6Vgmvs81bPtCkLtM/Skh36NE6unu6tsDeU/ZFoYthlTXbBmpIrvosgiDKlWTfb2ZpPELHH89aQjeQw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz", + "integrity": "sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/visitor-keys": "4.9.1", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/visitor-keys": "4.13.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -1174,29 +877,6 @@ "tsutils": "^3.17.1" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -1205,25 +885,25 @@ "requires": { "is-extglob": "^2.1.1" } - }, - "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 } } }, "@typescript-eslint/visitor-keys": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.9.1.tgz", - "integrity": "sha512-9gspzc6UqLQHd7lXQS7oWs+hrYggspv/rk6zzEMhCbYwPE/sF7oxo7GAjkS35Tdlt7wguIG+ViWCPtVZHz/ybQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz", + "integrity": "sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g==", "dev": true, "requires": { - "@typescript-eslint/types": "4.9.1", + "@typescript-eslint/types": "4.13.0", "eslint-visitor-keys": "^2.0.0" } }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, "@webassemblyjs/ast": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", @@ -1402,10 +1082,9 @@ } }, "acorn": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", - "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", - "dev": true + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" }, "acorn-globals": { "version": "6.0.0", @@ -1414,13 +1093,6 @@ "requires": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - } } }, "acorn-jsx": { @@ -1435,9 +1107,12 @@ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" }, "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==" + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } }, "ajv": { "version": "6.12.6", @@ -1567,115 +1242,17 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, - "array-find": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", - "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", - "dev": true - }, - "array-includes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", - "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "get-intrinsic": "^1.0.1", - "is-string": "^1.0.5" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, "array.prototype.map": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.3.tgz", @@ -1710,9 +1287,9 @@ } }, "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, "asap": { @@ -1728,68 +1305,15 @@ "safer-buffer": "~2.1.0" } }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async": { @@ -1802,18 +1326,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -1839,43 +1351,6 @@ "requires": { "axios": "^0.21.1", "type-fest": "^0.15.1" - }, - "dependencies": { - "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", - "requires": { - "follow-redirects": "^1.10.0" - } - }, - "follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" - } - } - }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } } }, "balanced-match": { @@ -1883,71 +1358,10 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + "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", @@ -1958,9 +1372,9 @@ } }, "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "bl": { @@ -1973,12 +1387,6 @@ "readable-stream": "^3.4.0" } }, - "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", - "dev": true - }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -2041,94 +1449,21 @@ "fill-range": "^7.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", - "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==", + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserslist": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", + "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==", "dev": true, "requires": { "caniuse-lite": "^1.0.30001173", @@ -2138,16 +1473,10 @@ "node-releases": "^1.1.69" } }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", - "dev": true - }, "buffer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.0.tgz", - "integrity": "sha512-cd+5r1VLBwUqTrmnzW+D7ABkJUM6mr7uv1dv+6jRw4Rcl7tFIFHDqHPL98LhpGFn3dbAt3gtLxtrWp4m1kFrqg==", + "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" @@ -2168,33 +1497,64 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "c8": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.4.0.tgz", + "integrity": "sha512-K8I7MEe2i4L91YBX3HtV10kKpU5uqGeyjtsdGS2FxfT0pk15d9jthujjR1ORRLrCJ4tXuDK9PSH2vChzRDoAZw==", "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.2", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "furi": "^2.0.0", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.0.2", + "rimraf": "^3.0.0", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^7.1.0", + "yargs": "^16.0.0", + "yargs-parser": "^20.0.0" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + } } }, "cacheable-lookup": { @@ -2203,43 +1563,28 @@ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" }, "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", + "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", "requires": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", + "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } + "responselike": "^2.0.0" } }, "call-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", - "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "requires": { "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.0" + "get-intrinsic": "^1.0.2" } }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, "callback-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/callback-stream/-/callback-stream-1.1.0.tgz", @@ -2249,11 +1594,6 @@ "readable-stream": "> 1.0.0 < 3.0.0" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -2296,13 +1636,6 @@ "requires": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "camelcase": { @@ -2320,12 +1653,20 @@ "camelcase": "^5.3.1", "map-obj": "^4.0.0", "quick-lru": "^4.0.1" + }, + "dependencies": { + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + } } }, "caniuse-lite": { - "version": "1.0.30001177", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001177.tgz", - "integrity": "sha512-6Ld7t3ifCL02jTj3MxPMM5wAYjbo4h/TAQGFTgv1inihP1tWnWp8mxxT4ut4JBEHLbpFXEXJJQ119JCJTBkYDw==", + "version": "1.0.30001178", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001178.tgz", + "integrity": "sha512-VtdZLC0vsXykKni8Uztx45xynytOi71Ufx9T8kHptSw9AL4dpqailUJJHavttuzUe1KYuBYtChiWv+BAb7mPmQ==", "dev": true }, "caseless": { @@ -2342,6 +1683,12 @@ "supports-color": "^7.1.0" } }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, "cheerio": { "version": "1.0.0-rc.5", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.5.tgz", @@ -2369,14 +1716,14 @@ } }, "chokidar": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.0.tgz", - "integrity": "sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.3.1", + "fsevents": "~2.1.2", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -2416,6 +1763,14 @@ "dev": true, "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "ci-info": { @@ -2424,54 +1779,38 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "restore-cursor": "^3.1.0" } }, - "clean-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", - "integrity": "sha1-jffHquUf02h06PjQW5GAvBGj/tc=", + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true - }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -2497,16 +1836,6 @@ "mimic-response": "^1.0.0" } }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", @@ -2596,18 +1925,6 @@ "minimist": "^1.1.0" } }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2638,108 +1955,27 @@ "xdg-basedir": "^4.0.0" } }, - "confusing-browser-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", - "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "dev": true, - "requires": { - "buf-compare": "^1.0.0", - "is-error": "^2.2.0" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" + "safe-buffer": "~5.1.1" }, "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "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==", "dev": true } } }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "create-require": { "version": "1.1.1", @@ -2758,25 +1994,6 @@ "which": "^2.0.1" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, "crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -2849,13 +2066,6 @@ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "decamelize": { @@ -2893,12 +2103,18 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } } }, "deep-extend": { @@ -2911,25 +2127,15 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, - "deep-strict-equal": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz", - "integrity": "sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=", - "dev": true, - "requires": { - "core-assert": "^0.2.0" - } - }, "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" }, "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", + "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==" }, "define-properties": { "version": "1.1.3", @@ -2939,72 +2145,15 @@ "object-keys": "^1.0.12" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "denque": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", - "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", + "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==" }, "detect-indent": { "version": "6.0.0", @@ -3027,25 +2176,6 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -3101,12 +2231,6 @@ "entities": "^2.0.0" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, "domelementtype": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", @@ -3152,13 +2276,6 @@ "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "dot-json": { @@ -3202,11 +2319,6 @@ "stream-shift": "^1.0.0" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -3254,34 +2366,11 @@ } }, "electron-to-chromium": { - "version": "1.3.639", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.639.tgz", - "integrity": "sha512-bwl6/U6xb3d3CNufQU9QeO1L32ueouFwW4bWANSwdXR7LVqyLzWjNbynoKNfuC38QFB5Qn7O0l2KLqBkcXnC3Q==", + "version": "1.3.641", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.641.tgz", + "integrity": "sha512-b0DLhsHSHESC1I+Nx6n4w4Lr61chMd3m/av1rZQhS2IXTzaS5BMM5N+ldWdMIlni9CITMRM09m8He4+YV/92TA==", "dev": true }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -3301,15 +2390,6 @@ "once": "^1.4.0" } }, - "enhance-visitors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/enhance-visitors/-/enhance-visitors-1.0.0.tgz", - "integrity": "sha1-qpRdBdpGVnKh69OP7i7T2oUY6Vo=", - "dev": true, - "requires": { - "lodash": "^4.13.1" - } - }, "enhanced-resolve": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", @@ -3334,12 +2414,6 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" }, - "env-editor": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.1.tgz", - "integrity": "sha512-suh+Vm00GnPQgXpmONTkcUT9LgBSL6sJrRnJxbykT0j+ONjzmIS+1U3ne467ArdZN/42/npp+GnhtwkLQ+vUjw==", - "dev": true - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -3347,6 +2421,14 @@ "dev": true, "requires": { "is-arrayish": "^0.2.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + } } }, "es-abstract": { @@ -3385,6 +2467,13 @@ "is-set": "^2.0.1", "is-string": "^1.0.5", "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } } }, "es-module-lexer": { @@ -3431,53 +2520,16 @@ "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" - }, - "dependencies": { - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - } } }, "eslint": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.15.0.tgz", - "integrity": "sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz", + "integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", + "@eslint/eslintrc": "^0.3.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -3501,7 +2553,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", + "lodash": "^4.17.20", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -3510,20 +2562,11 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^5.2.3", + "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "glob-parent": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", @@ -3548,522 +2591,158 @@ "is-extglob": "^2.1.1" } }, - "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 + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } } } }, - "eslint-ast-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-ast-utils/-/eslint-ast-utils-1.1.0.tgz", - "integrity": "sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA==", + "eslint-config-prettier": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz", + "integrity": "sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA==", + "dev": true + }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", "dev": true, "requires": { - "lodash.get": "^4.4.2", - "lodash.zip": "^4.2.0" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" } }, - "eslint-config-prettier": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.0.0.tgz", - "integrity": "sha512-8Y8lGLVPPZdaNA7JXqnvETVC7IiVRgAP6afQu9gOQRn90YY3otMNh+x7Vr2vMePQntF+5erdSUBqSzCmU/AxaQ==", - "dev": true - }, - "eslint-config-xo": { - "version": "0.33.1", - "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.33.1.tgz", - "integrity": "sha512-ZdnT4Q/m3CLCX0o3nKKW3Q8CfNiRy/ojkeffLtz8f0EQJMHP/9fJyncIvI0mik1wE61EI6PHrXdLeAbeb62cZw==", + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "dev": true, "requires": { - "confusing-browser-globals": "1.0.9" + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, - "eslint-config-xo-typescript": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.36.0.tgz", - "integrity": "sha512-wze9CboL9XHj4KRfqFedXjsJ9yM7iiJJnnVgiXJWdwzPXewFfdIUWHQVRoEYjGZ94cA8kVBkKnTCp8pi3EU3HQ==", - "dev": true + "eslint-plugin-prettier": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", + "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } }, - "eslint-formatter-pretty": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.0.0.tgz", - "integrity": "sha512-QgdeZxQwWcN0TcXXNZJiS6BizhAANFhCzkE7Yl9HKB7WjElzwED6+FbbZB2gji8ofgJTGPqKm6VRCNT3OGCeEw==", + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "eslint-rule-docs": "^1.1.5", - "log-symbols": "^4.0.0", - "plur": "^4.0.0", - "string-width": "^4.2.0", - "supports-hyperlinks": "^2.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" } }, - "eslint-import-resolver-node": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", - "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" + "eslint-visitor-keys": "^1.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true } } }, - "eslint-import-resolver-webpack": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.0.tgz", - "integrity": "sha512-hZWGcmjaJZK/WSCYGI/y4+FMGQZT+cwW/1E/P4rDwFj2PbanlQHISViw4ccDJ+2wxAqjgwBfxwy3seABbVKDEw==", + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { - "array-find": "^1.0.0", - "debug": "^2.6.9", - "enhanced-resolve": "^0.9.1", - "find-root": "^1.1.0", - "has": "^1.0.3", - "interpret": "^1.2.0", - "lodash": "^4.17.15", - "node-libs-browser": "^1.0.0 || ^2.0.0", - "resolve": "^1.13.1", - "semver": "^5.7.1" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "enhanced-resolve": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", - "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.2.0", - "tapable": "^0.1.8" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "tapable": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", - "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true } } }, - "eslint-module-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - } - } - }, - "eslint-plugin-ava": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-11.0.0.tgz", - "integrity": "sha512-UMGedfl/gIKx1tzjGtAsTSJgowyAEZU2VWmpoWXYcuuV4B2H4Cu90yuMgMPEVt1mQlIZ21L7YM2CSpHUFJo/LQ==", - "dev": true, - "requires": { - "deep-strict-equal": "^0.2.0", - "enhance-visitors": "^1.0.0", - "eslint-utils": "^2.1.0", - "espree": "^7.2.0", - "espurify": "^2.0.1", - "import-modules": "^2.0.0", - "micro-spelling-correcter": "^1.1.1", - "pkg-dir": "^4.2.0", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - } - }, - "eslint-plugin-eslint-comments": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", - "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "ignore": "^5.0.5" - } - }, - "eslint-plugin-import": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", - "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", - "dev": true, - "requires": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.0", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", - "tsconfig-paths": "^3.9.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } - }, - "eslint-plugin-no-use-extend-native": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.5.0.tgz", - "integrity": "sha512-dBNjs8hor8rJgeXLH4HTut5eD3RGWf9JUsadIfuL7UosVQ/dnvOKwxEcRrXrFxrMZ8llUVWT+hOimxJABsAUzQ==", - "dev": true, - "requires": { - "is-get-set-prop": "^1.0.0", - "is-js-type": "^2.0.0", - "is-obj-prop": "^1.0.0", - "is-proto-prop": "^2.0.0" - } - }, - "eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-plugin-prettier": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.2.0.tgz", - "integrity": "sha512-kOUSJnFjAUFKwVxuzy6sA5yyMx6+o9ino4gCdShzBNx4eyFRudWRYKCFolKjoM40PEiuU6Cn7wBLfq3WsGg7qg==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-promise": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", - "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", - "dev": true - }, - "eslint-plugin-unicorn": { - "version": "23.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-23.0.0.tgz", - "integrity": "sha512-Vabo3cjl6cjyhcf+76CdQEY6suOFzK0Xh3xo0uL9VDYrDJP5+B6PjV0tHTYm82WZmFWniugFJM3ywHSNYTi/ZQ==", - "dev": true, - "requires": { - "ci-info": "^2.0.0", - "clean-regexp": "^1.0.0", - "eslint-ast-utils": "^1.1.0", - "eslint-template-visitor": "^2.2.1", - "eslint-utils": "^2.1.0", - "import-modules": "^2.0.0", - "lodash": "^4.17.20", - "pluralize": "^8.0.0", - "read-pkg-up": "^7.0.1", - "regexp-tree": "^0.1.21", - "reserved-words": "^0.1.2", - "safe-regex": "^2.1.1", - "semver": "^7.3.2" - }, - "dependencies": { - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "eslint-rule-docs": { - "version": "1.1.216", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.216.tgz", - "integrity": "sha512-+Gs6G41O/A/aBj3JJWI2CwFZZ5XxkOPdlz2NRGujEqfYtAnZIIQHdVn7mw6wIZ0nGefLXpBqAekJkW8LbSsqvg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-template-visitor": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-2.2.1.tgz", - "integrity": "sha512-q3SxoBXz0XjPGkUpwGVAwIwIPIxzCAJX1uwfVc8tW3v7u/zS7WXNH3I2Mu2MDz2NgSITAyKLRaQFPHu/iyKxDQ==", - "dev": true, - "requires": { - "babel-eslint": "^10.1.0", - "eslint-visitor-keys": "^1.3.0", - "esquery": "^1.3.1", - "multimap": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "espurify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-2.0.1.tgz", - "integrity": "sha512-7w/dUrReI/QbJFHRwfomTlkQOXaB1NuCrBRn5Y26HXn5gvh18/19AgLbayVrNxXQfkckvgrJloWyvZDuJ7dhEA==", - "dev": true - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" + "estraverse": "^5.1.0" }, "dependencies": { "estraverse": { @@ -4117,155 +2796,51 @@ "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", "dev": true }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true } } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" } }, "extract-zip": { @@ -4277,21 +2852,6 @@ "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "extsprintf": { @@ -4311,9 +2871,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -4360,9 +2920,9 @@ "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, "fastq": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz", - "integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", + "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -4381,6 +2941,15 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, "file-entry-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", @@ -4399,28 +2968,11 @@ "to-regex-range": "^5.0.1" } }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, "find-exec": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/find-exec/-/find-exec-1.0.1.tgz", "integrity": "sha512-4o6QkGkpg3xK5s/47rdK9LDZRsE4JR1mrXnaAOXBngG6UKeIDJXfwtNCAkljgyy6VRh75D3FFaB0tii9vDEtIA==" }, - "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -4430,6 +2982,12 @@ "path-exists": "^4.0.0" } }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -4469,56 +3027,45 @@ "for-in": "^1.0.1" } }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "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" } }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, - "fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", - "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, @@ -4533,38 +3080,42 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "furi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/furi/-/furi-2.0.0.tgz", + "integrity": "sha512-uKuNsaU0WVaK/vmvj23wW1bicOFfyqSsAIH71bRZx8kA4Xj+YCHin7CJKJJjkIsmxYaPFLk9ljmjEyB7xF7WvQ==", + "dev": true, + "requires": { + "@types/is-windows": "^1.0.0", + "is-windows": "^1.0.2" + } + }, "g": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/g/-/g-2.0.1.tgz", "integrity": "sha1-C1lj69DKcOO8jGdmk0oCGCHIuFc=" }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-intrinsic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", - "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1" } }, - "get-set-props": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-set-props/-/get-set-props-0.1.0.tgz", - "integrity": "sha1-mYR1wXhEVobQsyJG2l3428++jqM=", - "dev": true - }, "get-ssl-certificate": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/get-ssl-certificate/-/get-ssl-certificate-2.3.3.tgz", "integrity": "sha512-aKYXS1S5+2IYw4W5+lKC/M+lvaNYPe0PhnQ144NWARcBg35H3ZvyVZ6y0LNGtiAxggFBHeO7LaVGO4bgHK4g1Q==" }, - "get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true - }, "get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -4573,12 +3124,6 @@ "pump": "^3.0.0" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -4626,11 +3171,6 @@ "unique-stream": "^2.0.2" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -4667,12 +3207,12 @@ "dev": true }, "global-dirs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", - "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", "dev": true, "requires": { - "ini": "^1.3.5" + "ini": "1.3.7" } }, "globals": { @@ -4693,242 +3233,35 @@ } }, "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" } }, "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } + "version": "11.8.1", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.1.tgz", + "integrity": "sha512-9aYdZL+6nHmvJwHALLwKSUZ0hMwGaJGYv3hoPLPgnT8BoBXm1SjnZeky+91tfwJaDzun2s4RsBRy48IEYv2q2Q==", + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.1", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" } }, "graceful-fs": { @@ -4936,11 +3269,41 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, + "gts": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/gts/-/gts-3.1.0.tgz", + "integrity": "sha512-Pbj3ob1VR1IRlEVEBNtKoQ1wHOa8cZz62KEojK8Fn/qeS2ClWI4gLNfhek3lD68aZSmUEg8TFb6AHXIwUMgyqQ==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^4.2.0", + "@typescript-eslint/parser": "^4.2.0", + "chalk": "^4.1.0", + "eslint": "^7.10.0", + "eslint-config-prettier": "^7.0.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.1.4", + "execa": "^5.0.0", + "inquirer": "^7.3.3", + "json5": "^2.1.3", + "meow": "^9.0.0", + "ncp": "^2.0.0", + "prettier": "^2.1.2", + "rimraf": "^3.0.2", + "update-notifier": "^5.0.0", + "write-file-atomic": "^3.0.3" + } + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -4954,109 +3317,42 @@ "ajv": "^6.12.3", "har-schema": "^2.0.0" } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, "has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", "dev": true }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true }, "help-me": { "version": "1.1.0", @@ -5069,17 +3365,6 @@ "xtend": "^4.0.0" } }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "hooman": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/hooman/-/hooman-1.2.6.tgz", @@ -5088,30 +3373,16 @@ "jsdom": "^16.3.0", "tough-cookie": "^4.0.0", "user-agents": "^1.0.559" - }, - "dependencies": { - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } } }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", + "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "html-encoding-sniffer": { "version": "2.0.1", @@ -5121,6 +3392,12 @@ "whatwg-encoding": "^1.0.5" } }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "htmlparser2": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.0.0.tgz", @@ -5145,29 +3422,6 @@ "@tootallnate/once": "1", "agent-base": "6", "debug": "4" - }, - "dependencies": { - "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==", - "requires": { - "debug": "4" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "http-signature": { @@ -5187,45 +3441,23 @@ "requires": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" - }, - "dependencies": { - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" - } } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "requires": { - "agent-base": "5", + "agent-base": "6", "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -5252,9 +3484,9 @@ "dev": true }, "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -5267,12 +3499,6 @@ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true }, - "import-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-2.0.0.tgz", - "integrity": "sha512-iczM/v9drffdNnABOKwj0f9G3cFDon99VcG1mxeBsdqnbd+vnQ5c2uAiCHNQITqFTOPaEvwg3VjoWCur0uHLEw==", - "dev": true - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -5304,11 +3530,26 @@ "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", "dev": true }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + } }, "ip": { "version": "1.1.5", @@ -5333,21 +3574,8 @@ "@types/node": "^14.14.19", "klona": "^2.0.4", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, - "irregular-plurals": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.2.0.tgz", - "integrity": "sha512-YqTdPLfwP7YFN0SsD3QUVCkm9ZG2VzOXv3DOrw5G5mkMbVwptTwVcFv7/C0vOpBmgTxAeTG19XpUs1E522LW9Q==", - "dev": true - }, "is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", @@ -5357,15 +3585,6 @@ "is-windows": "^1.0.1" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-arguments": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", @@ -5375,10 +3594,9 @@ } }, "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "is-binary-path": { "version": "2.1.0", @@ -5417,50 +3635,16 @@ "has": "^1.0.3" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, "is-docker": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==" }, - "is-error": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", - "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==", - "dev": true - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -5477,16 +3661,6 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "is-get-set-prop": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-get-set-prop/-/is-get-set-prop-1.0.0.tgz", - "integrity": "sha1-JzGHfk14pqae3M5rudaLB3nnYxI=", - "dev": true, - "requires": { - "get-set-props": "^0.1.0", - "lowercase-keys": "^1.0.0" - } - }, "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", @@ -5505,15 +3679,6 @@ "is-path-inside": "^3.0.1" } }, - "is-js-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-js-type/-/is-js-type-2.0.0.tgz", - "integrity": "sha1-c2FwBtZZtOtHKbunR9KHgt8PfiI=", - "dev": true, - "requires": { - "js-types": "^1.0.0" - } - }, "is-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", @@ -5530,9 +3695,9 @@ "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" }, "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", "dev": true }, "is-number": { @@ -5547,16 +3712,6 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, - "is-obj-prop": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-obj-prop/-/is-obj-prop-1.0.0.tgz", - "integrity": "sha1-s03nnEULjXxzqyzfZ9yHWtuF+A4=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0", - "obj-props": "^1.0.0" - } - }, "is-path-inside": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", @@ -5564,10 +3719,9 @@ "dev": true }, "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" }, "is-plain-object": { "version": "2.0.4", @@ -5582,16 +3736,6 @@ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=" }, - "is-proto-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-proto-prop/-/is-proto-prop-2.0.0.tgz", - "integrity": "sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg==", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0", - "proto-props": "^2.0.0" - } - }, "is-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", @@ -5664,9 +3808,9 @@ "dev": true }, "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -5683,6 +3827,33 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, "iterate-iterator": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", @@ -5713,12 +3884,6 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "js-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/js-types/-/js-types-1.0.0.tgz", - "integrity": "sha1-0kLmSU7Vcq08koCfyL7X92h8vwM=", - "dev": true - }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -5767,11 +3932,6 @@ "xml-name-validator": "^3.0.0" }, "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, "parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", @@ -5789,17 +3949,10 @@ } } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "json-parse-better-errors": { "version": "1.0.2", @@ -5842,24 +3995,6 @@ "minimist": "^1.2.5" } }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, "jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", @@ -5877,11 +4012,6 @@ "semver": "^5.6.0" }, "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -5900,6 +4030,12 @@ "verror": "1.10.0" } }, + "just-extend": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.1.tgz", + "integrity": "sha512-aWgeGFW67BP3e5181Ep1Fv2v8z//iBJfrvyTnq8wG86vEESwmonn1zPBJ0VfmT9CJq2FIT0VsETtrNFm2a+SHA==", + "dev": true + }, "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -5920,12 +4056,11 @@ } }, "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", + "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", "requires": { - "json-buffer": "3.0.0" + "json-buffer": "3.0.1" } }, "kind-of": { @@ -5966,30 +4101,12 @@ "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" }, "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "line-column-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/line-column-path/-/line-column-path-2.0.0.tgz", - "integrity": "sha512-nz3A+vi4bElhwd62E9+Qk/f9BDYLSzD/4Hy1rir0I4GnMxSTezSymzANyph5N1PgRZ3sSbA+yR5hOuXxc71a0Q==", - "dev": true, + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "requires": { - "type-fest": "^0.4.1" - }, - "dependencies": { - "type-fest": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", - "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", - "dev": true - } + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "lines-and-columns": { @@ -5998,29 +4115,6 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - } - } - }, "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -6088,14 +4182,8 @@ }, "lodash.sortby": { "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "lodash.zip": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=", - "dev": true + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, "log-symbols": { "version": "4.0.0", @@ -6116,13 +4204,6 @@ "fecha": "^4.2.0", "ms": "^2.1.1", "triple-beam": "^1.3.0" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "loose-envify": { @@ -6139,26 +4220,17 @@ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "requires": { "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -6184,51 +4256,20 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, "map-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==" }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "memory-fs": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", - "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", - "dev": true - }, "meow": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.0.0.tgz", - "integrity": "sha512-nbsTRz2fwniJBFgUkcdISq8y/q9n9VbiHYbfwklFh5V4V2uAcxtKQkDc0yCLPM/kP0d+inZBewn3zJqewHE7kg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, "requires": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", "decamelize-keys": "^1.1.0", "hard-rejection": "^2.1.0", "minimist-options": "4.1.0", @@ -6240,90 +4281,6 @@ "yargs-parser": "^20.2.3" }, "dependencies": { - "hosted-git-info": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", - "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", - "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", - "dev": true, - "requires": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", - "validate-npm-package-license": "^3.0.1" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, "type-fest": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", @@ -6333,9 +4290,9 @@ } }, "merge-deep": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", - "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz", + "integrity": "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==", "requires": { "arr-union": "^3.1.0", "clone-deep": "^0.2.4", @@ -6370,34 +4327,6 @@ "pascal-case": "^3.1.1", "snake-case": "^3.0.3", "url-join": "^4.0.1" - }, - "dependencies": { - "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", - "requires": { - "follow-redirects": "^1.10.0" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "messaging-api-telegram": { @@ -6413,29 +4342,8 @@ "messaging-api-common": "^1.0.4", "ts-invariant": "^0.4.4", "warning": "^4.0.3" - }, - "dependencies": { - "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", - "requires": { - "follow-redirects": "^1.10.0" - } - }, - "follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" - } } }, - "micro-spelling-correcter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/micro-spelling-correcter/-/micro-spelling-correcter-1.1.1.tgz", - "integrity": "sha512-lkJ3Rj/mtjlRcHk6YyCbvZhyWTOzdBvTHsxMmZSk5jxN1YyVSQ+JETAom55mdzfcyDrY/49Z7UCW760BK30crg==", - "dev": true - }, "micromatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", @@ -6446,42 +4354,30 @@ "picomatch": "^2.0.5" } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz", + "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==" }, "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" }, "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", "requires": { - "mime-db": "1.44.0" + "mime-db": "1.45.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -6493,18 +4389,6 @@ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -6529,62 +4413,301 @@ "kind-of": "^6.0.3" }, "dependencies": { - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" + } + } + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "mocha": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz", + "integrity": "sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.4.3", + "debug": "4.2.0", + "diff": "4.0.2", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.14.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.2", + "nanoid": "3.1.12", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "7.2.0", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.0.2", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true - } - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" - } - } - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, "mqtt": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.2.6.tgz", @@ -6603,86 +4726,34 @@ "split2": "^3.1.0", "ws": "^7.3.1", "xtend": "^4.0.2" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "mqtt-packet": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.6.0.tgz", - "integrity": "sha512-LvghnKMFC70hKWMVykmhJarlO5e7lT3t9s9A2qPCUx+lazL3Mq55U+eCV0eLi7/nRRQYvEUWo/2tTo89EjnCJQ==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.7.0.tgz", + "integrity": "sha512-GzgeeCirQpB59FyhHvf8BLiIYgxctPSxuSyaF2vWnkt7paX7jtuQ8Gpl+DkHCxZmYuv7GQE6zcUAegpafd0MqQ==", "requires": { "bl": "^4.0.2", "debug": "^4.1.1", "process-nextick-args": "^2.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "multimap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz", - "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } + "nanoid": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz", + "integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==", + "dev": true }, "natural-compare": { "version": "1.4.0", @@ -6690,12 +4761,31 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true + }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "nise": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/nise/-/nise-4.0.4.tgz", + "integrity": "sha512-bTTRUNlemx6deJa+ZyoCUTRvH3liK5+N6VQZ4NIw90AgDXY6iPnsqplNFf6STcj+ePk0H/xqxnP75Lr0J0Fq3A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0", + "@sinonjs/fake-timers": "^6.0.0", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, "no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -6703,13 +4793,6 @@ "requires": { "lower-case": "^2.0.2", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "node-fetch": { @@ -6732,94 +4815,6 @@ "get-ssl-certificate": "^2.3.3" } }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "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==", - "dev": true, - "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" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "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==", - "dev": true - } - } - }, "node-notifier": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.0.tgz", @@ -6831,6 +4826,13 @@ "shellwords": "^0.1.1", "uuid": "^8.3.0", "which": "^2.0.2" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } } }, "node-pagerduty": { @@ -6846,16 +4848,6 @@ "request-promise-native": "1.0.5" }, "dependencies": { - "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" - } - }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -6914,11 +4906,6 @@ "psl": "^1.1.24", "punycode": "^1.4.1" } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } }, @@ -6951,6 +4938,33 @@ "update-notifier": "^4.1.0" }, "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -6966,10 +4980,10 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", "dev": true }, "semver": { @@ -6986,6 +5000,27 @@ "requires": { "has-flag": "^3.0.0" } + }, + "update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + } } } }, @@ -6999,23 +5034,15 @@ } }, "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", + "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", + "hosted-git-info": "^3.0.6", + "resolve": "^1.17.0", + "semver": "^7.3.2", "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, "normalize-path": { @@ -7030,20 +5057,19 @@ "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" }, "npm": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/npm/-/npm-7.1.1.tgz", - "integrity": "sha512-66kBbZSTTLGrAyNPou2dUoVjAxDBZZiJkMdukGac3tUJf33tq3c86zW0rVKN+j5pUdWyJKyK3DnzEmJIcq06mw==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.4.2.tgz", + "integrity": "sha512-N722v+UZ0PiwZG53xLM70bKNxpkG2M+KHCHjLpWnc0mYNs/Ddk4K1dmCEwLWOneUBozfqSSuMbeIdxmFYJ3Cfw==", "requires": { - "@npmcli/arborist": "^2.0.0", + "@npmcli/arborist": "^2.0.5", "@npmcli/ci-detect": "^1.2.0", - "@npmcli/config": "^1.2.4", + "@npmcli/config": "^1.2.8", "@npmcli/run-script": "^1.8.1", "abbrev": "~1.1.1", "ansicolors": "~0.3.2", "ansistyles": "~0.1.3", "aproba": "^2.0.0", "archy": "~1.0.0", - "bin-links": "^2.2.1", "byte-size": "^7.0.0", "cacache": "^15.0.5", "chalk": "^4.1.0", @@ -7051,14 +5077,13 @@ "cli-columns": "^3.1.2", "cli-table3": "^0.6.0", "columnify": "~1.5.4", - "editor": "~1.0.0", "glob": "^7.1.4", "graceful-fs": "^4.2.3", "hosted-git-info": "^3.0.6", - "inherits": "^2.0.4", - "ini": "^1.3.6", + "ini": "^2.0.0", "init-package-json": "^2.0.1", "is-cidr": "^4.0.2", + "json-parse-even-better-errors": "*", "leven": "^3.1.0", "libnpmaccess": "^4.0.1", "libnpmfund": "^1.0.2", @@ -7069,13 +5094,14 @@ "libnpmsearch": "^3.1.0", "libnpmteam": "^2.0.2", "libnpmversion": "^1.0.7", - "make-fetch-happen": "^8.0.12", + "make-fetch-happen": "^8.0.13", + "minipass": "^3.1.3", + "minipass-pipeline": "^1.2.4", "mkdirp": "^1.0.4", "mkdirp-infer-owner": "^2.0.0", "ms": "^2.1.2", "node-gyp": "^7.1.2", "nopt": "^5.0.0", - "normalize-package-data": "^3.0.0", "npm-audit-report": "^2.1.4", "npm-package-arg": "^8.1.0", "npm-pick-manifest": "^6.1.0", @@ -7084,19 +5110,20 @@ "npm-user-validate": "^1.0.1", "npmlog": "~4.1.2", "opener": "^1.5.2", - "pacote": "^11.1.13", + "pacote": "^11.2.1", "parse-conflict-json": "^1.1.1", "qrcode-terminal": "^0.12.0", "read": "~1.0.7", "read-package-json": "^3.0.0", "read-package-json-fast": "^1.2.1", + "readdir-scoped-modules": "^1.1.0", "rimraf": "^3.0.2", "semver": "^7.3.4", - "sorted-object": "~2.0.1", "ssri": "^8.0.0", - "tar": "^6.0.5", + "tar": "^6.1.0", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", + "treeverse": "^1.0.4", "uuid": "^8.3.1", "validate-npm-package-name": "~3.0.0", "which": "^2.0.2", @@ -7104,13 +5131,13 @@ }, "dependencies": { "@npmcli/arborist": { - "version": "2.0.0", + "version": "2.0.5", "bundled": true, "requires": { "@npmcli/installed-package-contents": "^1.0.5", "@npmcli/map-workspaces": "^1.0.1", - "@npmcli/metavuln-calculator": "^1.0.0", - "@npmcli/move-file": "^1.0.1", + "@npmcli/metavuln-calculator": "^1.0.1", + "@npmcli/move-file": "^1.1.0", "@npmcli/name-from-folder": "^1.0.1", "@npmcli/node-gyp": "^1.0.1", "@npmcli/run-script": "^1.8.1", @@ -7123,13 +5150,15 @@ "npm-install-checks": "^4.0.0", "npm-package-arg": "^8.1.0", "npm-pick-manifest": "^6.1.0", - "pacote": "^11.1.13", + "npm-registry-fetch": "^9.0.0", + "pacote": "^11.2.1", "parse-conflict-json": "^1.1.1", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^1.0.1", "read-package-json-fast": "^1.2.1", "readdir-scoped-modules": "^1.1.0", "semver": "^7.3.4", + "tar": "^6.1.0", "treeverse": "^1.0.4", "walk-up-path": "^1.0.0" } @@ -7139,10 +5168,10 @@ "bundled": true }, "@npmcli/config": { - "version": "1.2.4", + "version": "1.2.8", "bundled": true, "requires": { - "ini": "^1.3.5", + "ini": "^2.0.0", "mkdirp-infer-owner": "^2.0.0", "nopt": "^5.0.0", "semver": "^7.3.4", @@ -7185,7 +5214,7 @@ } }, "@npmcli/metavuln-calculator": { - "version": "1.0.0", + "version": "1.0.2", "bundled": true, "requires": { "cacache": "^15.0.5", @@ -7194,10 +5223,20 @@ } }, "@npmcli/move-file": { - "version": "1.0.1", + "version": "1.1.0", "bundled": true, "requires": { - "mkdirp": "^1.0.4" + "mkdirp": "^1.0.4", + "rimraf": "^2.7.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "bundled": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "@npmcli/name-from-folder": { @@ -7585,10 +5624,6 @@ "safer-buffer": "^2.1.0" } }, - "editor": { - "version": "1.0.0", - "bundled": true - }, "emoji-regex": { "version": "8.0.0", "bundled": true @@ -7823,7 +5858,7 @@ "bundled": true }, "ini": { - "version": "1.3.6", + "version": "2.0.0", "bundled": true }, "init-package-json": { @@ -8023,7 +6058,7 @@ } }, "make-fetch-happen": { - "version": "8.0.12", + "version": "8.0.13", "bundled": true, "requires": { "agentkeepalive": "^4.1.3", @@ -8295,7 +6330,7 @@ } }, "pacote": { - "version": "11.1.13", + "version": "11.2.1", "bundled": true, "requires": { "@npmcli/git": "^2.0.1", @@ -8316,7 +6351,7 @@ "read-package-json-fast": "^1.1.3", "rimraf": "^3.0.2", "ssri": "^8.0.0", - "tar": "^6.0.1" + "tar": "^6.1.0" } }, "parse-conflict-json": { @@ -8546,10 +6581,6 @@ "socks": "^2.3.3" } }, - "sorted-object": { - "version": "2.0.1", - "bundled": true - }, "spdx-correct": { "version": "3.1.1", "bundled": true, @@ -8643,7 +6674,7 @@ } }, "tar": { - "version": "6.0.5", + "version": "6.1.0", "bundled": true, "requires": { "chownr": "^2.0.0", @@ -8782,6 +6813,15 @@ } } }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, "nth-check": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", @@ -8800,40 +6840,6 @@ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, - "obj-props": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/obj-props/-/obj-props-1.3.0.tgz", - "integrity": "sha512-k2Xkjx5wn6eC3537SWAXHzB6lkI81kS+icMKMkh4nG3w7shWG6MaWOBrNvhWVOszrtL5uxdfymQQfPUxwY+2eg==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "object-inspect": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", @@ -8844,15 +6850,6 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", @@ -8864,49 +6861,6 @@ "object-keys": "^1.1.1" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", - "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -8923,6 +6877,15 @@ "fn.name": "1.x.x" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "open": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/open/-/open-7.3.1.tgz", @@ -8932,46 +6895,17 @@ "is-wsl": "^2.1.1" } }, - "open-editor": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/open-editor/-/open-editor-2.0.1.tgz", - "integrity": "sha512-B3KdD7Pl8jYdpBSBBbdYaqVUI3whQjLl1G1+CvhNc8+d7GzKRUq+VuCIx1thxGiqD2oBGRvsZz7QWrBsFP2yVA==", - "dev": true, - "requires": { - "env-editor": "^0.4.0", - "line-column-path": "^2.0.0", - "open": "^6.2.0" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - } - } - }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" } }, "ordered-read-streams": { @@ -8982,11 +6916,6 @@ "readable-stream": "^2.0.1" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -9016,17 +6945,16 @@ } } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", + "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" }, "p-finally": { "version": "1.0.0", @@ -9065,12 +6993,6 @@ } } }, - "p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "dev": true - }, "p-retry": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.2.0.tgz", @@ -9105,6 +7027,132 @@ "semver": "^6.2.0" }, "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -9113,12 +7161,6 @@ } } }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -9128,19 +7170,6 @@ "callsites": "^3.0.0" } }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, "parse-json": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", @@ -9173,27 +7202,8 @@ "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -9221,25 +7231,29 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -9256,12 +7270,6 @@ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -9278,37 +7286,15 @@ "find-exec": "1.0.1" } }, - "plur": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", - "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", - "dev": true, - "requires": { - "irregular-plurals": "^3.2.0" - } - }, - "pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true - }, "pop-iterate": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz", "integrity": "sha1-zqz9q0q/NT16DyqqLB/Hs/lBO6M=" }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "prepend-http": { "version": "2.0.0", @@ -9336,12 +7322,6 @@ "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.3.tgz", "integrity": "sha512-fSrR66n0l6roW9Rx4rSLMyTPTjRTiXy5RVqDOurACQ6si1rKHHKDU5gwBJoCsIV0R3o9gi+K50akl/qyw1C74A==" }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -9352,12 +7332,6 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, - "proto-props": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/proto-props/-/proto-props-2.0.0.tgz", - "integrity": "sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==", - "dev": true - }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -9374,28 +7348,6 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -9459,18 +7411,19 @@ "ws": "^7.2.3" }, "dependencies": { - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==" + }, + "https-proxy-agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", "requires": { - "ms": "2.1.2" + "agent-base": "5", + "debug": "4" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -9505,18 +7458,6 @@ "debug": "^4.1.1", "node-fetch": "^2.6.0", "puppeteer-extra-plugin": "^3.1.8" - }, - "dependencies": { - "puppeteer-extra-plugin": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/puppeteer-extra-plugin/-/puppeteer-extra-plugin-3.1.8.tgz", - "integrity": "sha512-bTKhY0q+T3qM59fcdKnxwlT+KA1XpKKb8vUxFtd7PH/TGA04AOO+WQJx9npU1nA4NXZKU2xs2KZNn/A+1Cachw==", - "requires": { - "@types/debug": "^4.1.0", - "debug": "^4.1.1", - "merge-deep": "^3.0.1" - } - } } }, "puppeteer-extra-plugin-block-resources": { @@ -9535,18 +7476,6 @@ "requires": { "debug": "^4.1.1", "puppeteer-extra-plugin": "^3.1.8" - }, - "dependencies": { - "puppeteer-extra-plugin": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/puppeteer-extra-plugin/-/puppeteer-extra-plugin-3.1.8.tgz", - "integrity": "sha512-bTKhY0q+T3qM59fcdKnxwlT+KA1XpKKb8vUxFtd7PH/TGA04AOO+WQJx9npU1nA4NXZKU2xs2KZNn/A+1Cachw==", - "requires": { - "@types/debug": "^4.1.0", - "debug": "^4.1.1", - "merge-deep": "^3.0.1" - } - } } }, "pushover-notifications": { @@ -9579,28 +7508,15 @@ "strict-uri-encode": "^2.0.0" } }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, "randombytes": { "version": "2.1.0", @@ -9611,16 +7527,6 @@ "safe-buffer": "^5.1.0" } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -9638,88 +7544,74 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true } } }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "dependencies": { - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { - "pify": "^2.0.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true } } }, "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true } } @@ -9782,33 +7674,6 @@ "redis-errors": "^1.0.0" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - } - } - }, - "regexp-tree": { - "version": "0.1.21", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.21.tgz", - "integrity": "sha512-kUUXjX4AnqnR8KRTCrayAo9PzYMRKmVoGgaz2tBuz0MF3g1ZbGebmtW0yFHfFK9CmBjQKeYIgoL22pFLBJY7sw==", - "dev": true - }, "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", @@ -9816,9 +7681,9 @@ "dev": true }, "registry-auth-token": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", - "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", "dev": true, "requires": { "rc": "^1.2.8" @@ -9843,18 +7708,6 @@ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -9882,20 +7735,14 @@ "uuid": "^3.3.2" }, "dependencies": { - "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==", + "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": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "psl": "^1.1.28", + "punycode": "^2.1.1" } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } }, @@ -9915,19 +7762,42 @@ "request-promise-core": "1.1.4", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" + }, + "dependencies": { + "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" + } + } } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, - "reserved-words": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", - "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", - "dev": true - }, "resolve": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", @@ -9943,49 +7813,29 @@ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==" }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", "requires": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "^2.0.0" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } }, "retry": { "version": "0.12.0", @@ -10006,41 +7856,45 @@ "glob": "^7.1.3" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "rootpath": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/rootpath/-/rootpath-0.1.2.tgz", "integrity": "sha1-Wzeah9ypBum5HWkKWZQ5vvJn6ms=" }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, "run-parallel": { "version": "1.1.10", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", "dev": true }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, - "safe-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", - "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", - "dev": true, - "requires": { - "regexp-tree": "~0.1.1" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -10071,9 +7925,12 @@ "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==" }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } }, "semver-diff": { "version": "3.1.1", @@ -10101,44 +7958,17 @@ "randombytes": "^2.1.0" } }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "shallow-clone": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", @@ -10196,62 +8026,37 @@ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", "requires": { "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - } - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } + } + }, + "sinon": { + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.3.tgz", + "integrity": "sha512-m+DyAWvqVHZtjnjX/nuShasykFeiZ+nPuEfD4G3gpvKGkXRhkF/6NSt2qN2FjZhfrcHXFzUzI+NLnk+42fnLEw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.1", + "@sinonjs/fake-timers": "^6.0.1", + "@sinonjs/samsam": "^5.3.0", + "diff": "^4.0.2", + "nise": "^4.0.4", + "supports-color": "^7.1.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } }, "smart-buffer": { @@ -10266,130 +8071,6 @@ "requires": { "dot-case": "^3.0.4", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" } }, "socks": { @@ -10409,44 +8090,14 @@ "agent-base": "6", "debug": "4", "socks": "^2.3.3" - }, - "dependencies": { - "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==", - "requires": { - "debug": "4" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "sort-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.1.0.tgz", - "integrity": "sha512-/sRdxzkkPFUYiCrTr/2t+104nDc9AgDmEpeVYuvOWYQe3Djk1GWO6lVw3Vx2jfh1SsR0eehhd1nvFYlzt5e99w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", "requires": { "is-plain-obj": "^2.0.0" - }, - "dependencies": { - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - } } }, "source-list-map": { @@ -10460,19 +8111,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", @@ -10483,12 +8121,6 @@ "source-map": "^0.6.0" } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -10526,175 +8158,46 @@ "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "requires": { - "readable-stream": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "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" - } - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "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==", - "dev": true, - "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" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "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==", - "dev": true, - "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" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "requires": { + "readable-stream": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "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" } }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, "stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -10751,10 +8254,10 @@ "ansi-regex": "^5.0.0" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, "strip-indent": { @@ -10767,9 +8270,9 @@ } }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { @@ -10780,70 +8283,40 @@ "has-flag": "^4.0.0" } }, - "supports-hyperlinks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", - "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", - "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - } - }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { + "ajv": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", + "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true } } }, @@ -10865,9 +8338,9 @@ } }, "tar-stream": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", - "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "requires": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -10926,6 +8399,17 @@ } } }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -10951,11 +8435,6 @@ "xtend": "~4.0.1" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -10994,26 +8473,26 @@ "xtend": "~4.0.0" } }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, "tldts-core": { - "version": "5.6.82", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.6.82.tgz", - "integrity": "sha512-dNKGP/fq1b48V+4szvQ7xAQLp3imnIOXsCx/nQeuBTZJ/X4wrXIeYEFrg9+kNENViZEe7Sbbh6L7LesdK7sgdQ==" + "version": "5.6.83", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.6.83.tgz", + "integrity": "sha512-VzTF0y21FYSPLi64G1YaUDerJu+rLmWRLeny2+CnrJj8VHEhw1cGNyMZNHUB9bJS1SIu8dcw54RSkA9Kbru6FA==" }, "tldts-experimental": { - "version": "5.6.82", - "resolved": "https://registry.npmjs.org/tldts-experimental/-/tldts-experimental-5.6.82.tgz", - "integrity": "sha512-SE/lQm3bjb9F5FE+Qj3eiOUFShTAsjMDxMKiow1z1qFOht+l/YL7C0OxD6pEjeuksgruOQH3attwKUXVPxqVcQ==", + "version": "5.6.83", + "resolved": "https://registry.npmjs.org/tldts-experimental/-/tldts-experimental-5.6.83.tgz", + "integrity": "sha512-CPvpyYIspIsbfEhEYLX3WT3l/pwNN3NIbsiSOqNO27jNU6FuEihArP382JZjYy/lLba3Odrei1yxQxWF74lmhQ==", + "requires": { + "tldts-core": "^5.6.83" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, "requires": { - "tldts-core": "^5.6.82" + "os-tmpdir": "~1.0.2" } }, "to-absolute-glob": { @@ -11025,56 +8504,12 @@ "is-negated-glob": "^1.0.0" } }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - } - } - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -11098,102 +8533,6 @@ "got": "~11.8.0", "hooman": "~1.2.6", "write-json-file": "~4.3.0" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", - "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==" - }, - "@szmarczak/http-timer": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", - "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "cacheable-request": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", - "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^2.0.0" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - } - }, - "defer-to-connect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", - "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==" - }, - "got": { - "version": "11.8.1", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.1.tgz", - "integrity": "sha512-9aYdZL+6nHmvJwHALLwKSUZ0hMwGaJGYv3hoPLPgnT8BoBXm1SjnZeky+91tfwJaDzun2s4RsBRy48IEYv2q2Q==", - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.1", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "keyv": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", - "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", - "requires": { - "json-buffer": "3.0.1" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - }, - "p-cancelable": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", - "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" - }, - "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "requires": { - "lowercase-keys": "^2.0.0" - } - } } }, "touch": { @@ -11206,12 +8545,13 @@ } }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" } }, "tr46": { @@ -11239,6 +8579,13 @@ "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", "requires": { "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "ts-node": { @@ -11255,49 +8602,28 @@ "yn": "3.1.1" } }, - "tsconfig-paths": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" }, "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", + "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", "dev": true, "requires": { "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -11350,13 +8676,6 @@ "twitch-api-call": "^4.4.0", "twitch-auth": "^4.4.0", "twitch-common": "^4.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "twitch-api-call": { @@ -11370,13 +8689,6 @@ "node-fetch": "^2.6.1", "tslib": "^2.0.3", "twitch-common": "^4.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "twitch-auth": { @@ -11390,13 +8702,6 @@ "tslib": "^2.0.3", "twitch-api-call": "^4.4.0", "twitch-common": "^4.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "twitch-chat-client": { @@ -11414,13 +8719,6 @@ "tslib": "^2.0.3", "twitch-auth": "^4.4.0", "twitch-common": "^4.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "twitch-common": { @@ -11430,13 +8728,6 @@ "requires": { "@d-fischer/logger": "^3.1.0", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } } }, "twitter": { @@ -11449,14 +8740,19 @@ } }, "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "requires": { - "prelude-ls": "^1.2.1" + "prelude-ls": "~1.1.2" } }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "type-fest": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.15.1.tgz", @@ -11512,6 +8808,12 @@ "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -11524,20 +8826,8 @@ "version": "0.0.22", "resolved": "https://registry.npmjs.org/underscore-keypath/-/underscore-keypath-0.0.22.tgz", "integrity": "sha1-SKUoOSu278QkvhyqVtpLX6zPJk0=", - "requires": { - "underscore": "*" - } - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "requires": { + "underscore": "*" } }, "unique-stream": { @@ -11559,122 +8849,40 @@ } }, "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, "update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.0.1.tgz", + "integrity": "sha512-BuVpRdlwxeIOvmc32AGYvO1KVdPlsmqSh8KDDBxS6kDE5VR7R8OMP1d8MdhaVBvxl4H3551k9akXr0Y1iIB2Wg==", "dev": true, "requires": { "boxen": "^4.2.0", - "chalk": "^3.0.0", + "chalk": "^4.1.0", "configstore": "^5.0.1", "has-yarn": "^2.1.0", "import-lazy": "^2.1.0", "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", + "is-installed-globally": "^0.3.2", + "is-npm": "^5.0.0", "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.2", "semver-diff": "^3.1.1", "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } } }, "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "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" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, "url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -11698,12 +8906,6 @@ "prepend-http": "^2.0.0" } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, "user-agents": { "version": "1.0.559", "resolved": "https://registry.npmjs.org/user-agents/-/user-agents-1.0.559.tgz", @@ -11713,32 +8915,15 @@ "lodash.clonedeep": "^4.5.0" } }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "v8-compile-cache": { "version": "2.2.0", @@ -11746,6 +8931,25 @@ "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, + "v8-to-istanbul": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz", + "integrity": "sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -11766,12 +8970,6 @@ "extsprintf": "^1.2.0" } }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -11817,9 +9015,9 @@ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" }, "webpack": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.14.0.tgz", - "integrity": "sha512-PFtfqXIKT6EG+k4L7d9whUPacN2XvxlUMc8NAQvN+sF9G8xPQqrCDGDiXbAdyGNz+/OP6ioxnUKybBBZ1kp/2A==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.15.0.tgz", + "integrity": "sha512-y/xG+ONDz78yn3VvP6gAvGr1/gkxOgitvHSXBmquyN8KDtrGEyE3K9WkXOPB7QmfcOBCpO4ELXwNcCYQnEmexA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -11848,6 +9046,12 @@ "webpack-sources": "^2.1.1" }, "dependencies": { + "acorn": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", + "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", + "dev": true + }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -11937,6 +9141,54 @@ "isexe": "^2.0.0" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -11978,11 +9230,6 @@ "triple-beam": "^1.2.0" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -12017,6 +9264,23 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, + "workerpool": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz", + "integrity": "sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -12044,19 +9308,12 @@ "make-dir": "^3.0.0", "sort-keys": "^4.0.0", "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - } } }, "ws": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz", + "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==" }, "xdg-basedir": { "version": "4.0.0", @@ -12079,170 +9336,36 @@ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, - "xo": { - "version": "0.36.1", - "resolved": "https://registry.npmjs.org/xo/-/xo-0.36.1.tgz", - "integrity": "sha512-Y4ZlBipRa9BYZDzGUV8PbCVgdP0qD5HfbM2x6Ilp8NKkdQMQXD2OyeJL0hyeAyXe+9X25VZSfeHBmSDi/DHXFA==", - "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "^4.9.1", - "@typescript-eslint/parser": "^4.9.1", - "arrify": "^2.0.1", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", - "eslint": "^7.15.0", - "eslint-config-prettier": "^7.0.0", - "eslint-config-xo": "^0.33.1", - "eslint-config-xo-typescript": "^0.36.0", - "eslint-formatter-pretty": "^4.0.0", - "eslint-import-resolver-webpack": "^0.13.0", - "eslint-plugin-ava": "^11.0.0", - "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-no-use-extend-native": "^0.5.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.2.0", - "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-unicorn": "^23.0.0", - "find-cache-dir": "^3.3.1", - "find-up": "^5.0.0", - "fs-extra": "^9.0.1", - "get-stdin": "^8.0.0", - "globby": "^9.2.0", - "has-flag": "^4.0.0", - "imurmurhash": "^0.1.4", - "is-path-inside": "^3.0.2", - "json-stable-stringify-without-jsonify": "^1.0.1", - "json5": "^2.1.3", - "lodash": "^4.17.20", - "meow": "^8.0.0", - "micromatch": "^4.0.2", - "open-editor": "^2.0.1", - "p-reduce": "^2.1.0", - "path-exists": "^4.0.0", - "prettier": "^2.2.1", - "resolve-cwd": "^3.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.4", - "slash": "^3.0.0", - "to-absolute-glob": "^2.0.2", - "typescript": "^4.1.2", - "update-notifier": "^5.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "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 - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "update-notifier": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.0.1.tgz", - "integrity": "sha512-BuVpRdlwxeIOvmc32AGYvO1KVdPlsmqSh8KDDBxS6kDE5VR7R8OMP1d8MdhaVBvxl4H3551k9akXr0Y1iIB2Wg==", - "dev": true, - "requires": { - "boxen": "^4.2.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.2", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.2", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - } - } - } - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } }, "yargs-parser": { "version": "20.2.4", @@ -12250,6 +9373,32 @@ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + } + } + }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/package.json b/package.json index 56317f6e8a..607736da40 100644 --- a/package.json +++ b/package.json @@ -3,15 +3,22 @@ "description": "The world's easiest, most powerful stock checker", "main": "src/index.ts", "scripts": { - "all": "npm run build && npm run lint", - "build": "tsc", - "lint": "xo", - "lint:fix": "xo --fix", - "start": "npm run build && node build/index.js", + "all": "npm run compile && npm run lint && npm run test", + "fix": "gts fix", + "lint": "gts lint", + "clean": "gts clean", + "compile": "tsc", + "pretest": "npm run compile", + "posttest": "npm run lint", + "start": "npm run compile && node build/src/index.js", "start:dev": "nodemon --config nodemon.json", - "start:production": "node build/index.js", - "test:notification": "npm run build && node build/__test__/notification-test.js", - "test:notification:production": "node build/__test__/notification-test.js" + "start:production": "node build/src/index.js", + "test": "c8 mocha 'build/test/**/test-*.js' --exclude 'build/test/functional/**/test-*.js'", + "test:notification": "npm run compile && node build/test/functional/test-notification.js", + "test:notification:production": "node build/test/functional/test-notification.js" + }, + "engines": { + "node": ">=12.0.0 <15.0.0" }, "repository": { "type": "git", @@ -61,26 +68,21 @@ "devDependencies": { "@types/async": "^3.2.5", "@types/cheerio": "^0.22.23", + "@types/mocha": "^8.2.0", "@types/node": "^14.14.21", "@types/node-fetch": "^2.5.8", "@types/node-notifier": "^8.0.0", "@types/nodemailer": "^6.4.0", "@types/puppeteer": "^5.4.2", + "@types/sinon": "^9.0.10", "@types/twitter": "^1.7.0", + "c8": "^7.4.0", + "gts": "^3.1.0", + "mocha": "^8.2.1", "nodemon": "^2.0.7", + "sinon": "^9.2.3", "ts-node": "^9.1.1", "typescript": "^4.1.3", - "webpack": "^5.14.0", - "xo": "^0.36.1" - }, - "xo": { - "prettier": true, - "ignores": "docs/javascripts", - "rules": { - "no-warning-comments": "off", - "sort-imports": "error", - "sort-keys": "error", - "sort-vars": "error" - } + "webpack": "^5.14.0" } } diff --git a/src/__test__/notification-test.ts b/src/__test__/notification-test.ts deleted file mode 100644 index dc630ae6e7..0000000000 --- a/src/__test__/notification-test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import {Link, Store} from '../store/model'; -import {sendNotification} from '../notification'; - -const link: Link = { - brand: 'test:brand', - cartUrl: 'https://www.example.com/cartUrl', - model: 'test:model', - price: 100, - series: 'test:series', - url: 'https://www.example.com/url' -}; - -const store: Store = { - currency: '', - labels: { - inStock: { - container: 'test:container', - text: ['test:text'] - } - }, - links: [link], - name: 'test:name' -}; - -/** - * Send test email. - */ -sendNotification(link, store); diff --git a/src/adblocker.ts b/src/adblocker.ts index 7fc58dbbbe..7f4652e84d 100644 --- a/src/adblocker.ts +++ b/src/adblocker.ts @@ -2,23 +2,23 @@ import {Page} from 'puppeteer'; import {PuppeteerExtraPluginAdblocker} from 'puppeteer-extra-plugin-adblocker'; export const adBlocker = new PuppeteerExtraPluginAdblocker({ - blockTrackers: true + blockTrackers: true, }); export async function enableBlockerInPage(page: Page) { - const blockerObject = await adBlocker.getBlocker(); - if (blockerObject.isBlockingEnabled(page)) { - return; - } + const blockerObject = await adBlocker.getBlocker(); + if (blockerObject.isBlockingEnabled(page)) { + return; + } - await blockerObject.enableBlockingInPage(page); + await blockerObject.enableBlockingInPage(page); } export async function disableBlockerInPage(page: Page) { - const blockerObject = await adBlocker.getBlocker(); - if (!blockerObject.isBlockingEnabled(page)) { - return; - } + const blockerObject = await adBlocker.getBlocker(); + if (!blockerObject.isBlockingEnabled(page)) { + return; + } - await blockerObject.disableBlockingInPage(page); + await blockerObject.disableBlockingInPage(page); } diff --git a/src/banner.ts b/src/banner.ts index 5bd2734a59..3f1eefa186 100644 --- a/src/banner.ts +++ b/src/banner.ts @@ -4,7 +4,7 @@ import {readFileSync} from 'fs'; const version = readFileSync('version.txt', 'utf8'); export const banner = { - asciiVersion: ` + asciiVersion: ` ██████ ▄▄▄█████▓ ██▀███ ▓█████ ▓█████▄▄▄█████▓ ███▄ ▄███▓▓█████ ██▀███ ▄████▄ ██░ ██ ▄▄▄ ███▄ █ ▄▄▄█████▓ ▒██ ▒ ▓ ██▒ ▓▒▓██ ▒ ██▒▓█ ▀ ▓█ ▀▓ ██▒ ▓▒▓██▒▀█▀ ██▒▓█ ▀ ▓██ ▒ ██▒▒██▀ ▀█ ▓██░ ██▒▒████▄ ██ ▀█ █ ▓ ██▒ ▓▒ ░ ▓██▄ ▒ ▓██░ ▒░▓██ ░▄█ ▒▒███ ▒███ ▒ ▓██░ ▒░▓██ ▓██░▒███ ▓██ ░▄█ ▒▒▓█ ▄ ▒██▀▀██░▒██ ▀█▄ ▓██ ▀█ ██▒▒ ▓██░ ▒░ @@ -15,11 +15,11 @@ export const banner = { ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ${version}`, - render(ascii: boolean, hexColor: string) { - return chalk - .hex(hexColor) - .bold(ascii ? this.asciiVersion : this.stringVersion); - }, - stringVersion: `STREETMERCHANT -${version}` + render(ascii: boolean, hexColor: string) { + return chalk + .hex(hexColor) + .bold(ascii ? this.asciiVersion : this.stringVersion); + }, + stringVersion: `STREETMERCHANT +${version}`, }; diff --git a/src/config.ts b/src/config.ts index 24ea997089..c2c187312b 100644 --- a/src/config.ts +++ b/src/config.ts @@ -2,28 +2,29 @@ import {existsSync, readFileSync} from 'fs'; import {banner} from './banner'; import dotenv from 'dotenv'; import path from 'path'; +import * as console from 'console'; if (process.env.npm_config_conf) { - if ( - existsSync(path.resolve(__dirname, '../' + process.env.npm_config_conf)) - ) { - dotenv.config({ - path: path.resolve(__dirname, '../' + process.env.npm_config_conf) - }); - } else { - dotenv.config({path: path.resolve(__dirname, '../.env')}); - } -} else if (existsSync(path.resolve(__dirname, '../dotenv'))) { - dotenv.config({path: path.resolve(__dirname, '../dotenv')}); + if ( + existsSync(path.resolve(__dirname, '../../' + process.env.npm_config_conf)) + ) { + dotenv.config({ + path: path.resolve(__dirname, '../../' + process.env.npm_config_conf), + }); + } else { + dotenv.config({path: path.resolve(__dirname, '../../.env')}); + } +} else if (existsSync(path.resolve(__dirname, '../../dotenv'))) { + dotenv.config({path: path.resolve(__dirname, '../../dotenv')}); } else { - dotenv.config({path: path.resolve(__dirname, '../.env')}); + dotenv.config({path: path.resolve(__dirname, '../../.env')}); } console.info( - banner.render( - envOrBoolean(process.env.ASCII_BANNER, false), - envOrString(process.env.BANNER_COLOR, '#808080') - ) + banner.render( + envOrBoolean(process.env.ASCII_BANNER, false), + envOrString(process.env.BANNER_COLOR, '#808080') + ) ); /** @@ -33,15 +34,15 @@ console.info( * @param array Default array. If not set, is `[]`. */ function envOrArray( - environment: string | undefined, - array?: string[] + environment: string | undefined, + array?: string[] ): string[] { - return (environment - ? environment.includes('\n') - ? environment.split('\n') - : environment.split(',') - : array ?? [] - ).map((s) => s.trim()); + return (environment + ? environment.includes('\n') + ? environment.split('\n') + : environment.split(',') + : array ?? [] + ).map(s => s.trim()); } /** @@ -51,10 +52,10 @@ function envOrArray( * @param boolean Default boolean. If not set, is `true`. */ function envOrBoolean( - environment: string | undefined, - boolean?: boolean + environment: string | undefined, + boolean?: boolean ): boolean { - return environment ? environment === 'true' : boolean ?? true; + return environment ? environment === 'true' : boolean ?? true; } /** @@ -64,7 +65,7 @@ function envOrBoolean( * @param string Default string. If not set, is `''`. */ function envOrString(environment: string | undefined, string?: string): string { - return environment ? environment : string ?? ''; + return environment ? environment : string ?? ''; } /** @@ -74,7 +75,7 @@ function envOrString(environment: string | undefined, string?: string): string { * @param number Default number. If not set, is `0`. */ function envOrNumber(environment: string | undefined, number?: number): number { - return environment ? Number(environment) : number ?? 0; + return environment ? Number(environment) : number ?? 0; } /** @@ -90,31 +91,31 @@ function envOrNumber(environment: string | undefined, number?: number): number { * @param number Default number. If not set, is `0`. */ function envOrNumberMin( - environmentMin: string | undefined, - environmentMax: string | undefined, - number?: number + environmentMin: string | undefined, + environmentMax: string | undefined, + number?: number ) { - if (environmentMin || environmentMax) { - if (environmentMin && environmentMax) { - return Number( - Number(environmentMin) < Number(environmentMax) - ? environmentMin - : environmentMax - ); - } + if (environmentMin || environmentMax) { + if (environmentMin && environmentMax) { + return Number( + Number(environmentMin) < Number(environmentMax) + ? environmentMin + : environmentMax + ); + } - if (environmentMax) { - return Number(environmentMax) < (number ?? 0) - ? Number(environmentMax) - : number ?? 0; - } + if (environmentMax) { + return Number(environmentMax) < (number ?? 0) + ? Number(environmentMax) + : number ?? 0; + } - if (environmentMin) { - return Number(environmentMin); - } - } + if (environmentMin) { + return Number(environmentMin); + } + } - return number ?? 0; + return number ?? 0; } /** @@ -130,68 +131,72 @@ function envOrNumberMin( * @param number Default number. If not set, is `0`. */ function envOrNumberMax( - environmentMin: string | undefined, - environmentMax: string | undefined, - number?: number + environmentMin: string | undefined, + environmentMax: string | undefined, + number?: number ) { - if (environmentMin || environmentMax) { - if (environmentMin && environmentMax) { - return Number( - Number(environmentMin) < Number(environmentMax) - ? environmentMax - : environmentMax - ); - } + if (environmentMin || environmentMax) { + if (environmentMin && environmentMax) { + return Number( + Number(environmentMin) < Number(environmentMax) + ? environmentMax + : environmentMax + ); + } - if (environmentMin) { - return Number(environmentMin) > (number ?? 0) - ? Number(environmentMin) - : number ?? 0; - } + if (environmentMin) { + return Number(environmentMin) > (number ?? 0) + ? Number(environmentMin) + : number ?? 0; + } - if (environmentMax) { - return Number(environmentMax); - } - } + if (environmentMax) { + return Number(environmentMax); + } + } - return number ?? 0; + return number ?? 0; } -function loadProxyList(filename: string) { - return readFileSync(`${filename}.proxies`) - .toString() - .trim() - .split('\n') - .map((x) => x.trim()); +function loadProxyList(filename: string): string[] { + try { + return readFileSync(`${filename}.proxies`) + .toString() + .trim() + .split('\n') + .map(x => x.trim()); + } catch { + return []; + } } const browser = { - isHeadless: envOrBoolean(process.env.HEADLESS), - isIncognito: envOrBoolean(process.env.INCOGNITO, false), - isTrusted: envOrBoolean(process.env.BROWSER_TRUSTED, false), - lowBandwidth: envOrBoolean(process.env.LOW_BANDWIDTH, false), - maxBackoff: envOrNumberMax( - process.env.PAGE_BACKOFF_MIN, - process.env.PAGE_BACKOFF_MAX, - 3600000 - ), - maxSleep: envOrNumberMax( - process.env.PAGE_SLEEP_MIN, - process.env.PAGE_SLEEP_MAX, - 10000 - ), - minBackoff: envOrNumberMin( - process.env.PAGE_BACKOFF_MIN, - process.env.PAGE_BACKOFF_MAX, - 10000 - ), - minSleep: envOrNumberMin( - process.env.PAGE_SLEEP_MIN, - process.env.PAGE_SLEEP_MAX, - 5000 - ), - open: envOrBoolean(process.env.OPEN_BROWSER), - userAgent: '' + isHeadless: envOrBoolean(process.env.HEADLESS), + isIncognito: envOrBoolean(process.env.INCOGNITO, false), + isTrusted: envOrBoolean(process.env.BROWSER_TRUSTED, false), + lowBandwidth: envOrBoolean(process.env.LOW_BANDWIDTH, false), + maxBackoff: envOrNumberMax( + process.env.PAGE_BACKOFF_MIN, + process.env.PAGE_BACKOFF_MAX, + 3600000 + ), + maxSleep: envOrNumberMax( + process.env.PAGE_SLEEP_MIN, + process.env.PAGE_SLEEP_MAX, + 10000 + ), + minBackoff: envOrNumberMin( + process.env.PAGE_BACKOFF_MIN, + process.env.PAGE_BACKOFF_MAX, + 10000 + ), + minSleep: envOrNumberMin( + process.env.PAGE_SLEEP_MIN, + process.env.PAGE_SLEEP_MAX, + 5000 + ), + open: envOrBoolean(process.env.OPEN_BROWSER), + userAgent: '', }; const docker = envOrBoolean(process.env.DOCKER, false); @@ -199,262 +204,254 @@ const docker = envOrBoolean(process.env.DOCKER, false); const logLevel = envOrString(process.env.LOG_LEVEL, 'info'); const notifications = { - desktop: process.env.DESKTOP_NOTIFICATIONS === 'true', - discord: { - notifyGroup: envOrArray(process.env.DISCORD_NOTIFY_GROUP), - notifyGroupSeries: { - '3060ti': envOrArray(process.env.DISCORD_NOTIFY_GROUP_3060TI), - 3070: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3070), - 3080: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3080), - 3090: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3090), - 'captcha-deterrent': [], - darkhero: envOrArray(process.env.DISCORD_NOTIFY_GROUP_DARKHERO), - rx6800: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RX6800), - rx6800xt: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RX6800XT), - rx6900xt: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RX6900XT), - ryzen5600: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN5600), - ryzen5800: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN5800), - ryzen5900: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN5900), - ryzen5950: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN5950), - sf: envOrArray(process.env.DISCORD_NOTIFY_GROUP_CORSAIR_SF), - sonyps5c: envOrArray(process.env.DISCORD_NOTIFY_GROUP_SONYPS5C), - sonyps5de: envOrArray(process.env.DISCORD_NOTIFY_GROUP_SONYPS5DE), - 'test:series': envOrArray(process.env.DISCORD_NOTIFY_GROUP_TEST), - xboxss: envOrArray(process.env.DISCORD_NOTIFY_GROUP_XBOXSS), - xboxsx: envOrArray(process.env.DISCORD_NOTIFY_GROUP_XBOXSX) - }, - webhooks: envOrArray(process.env.DISCORD_WEB_HOOK) - }, - email: { - password: envOrString(process.env.EMAIL_PASSWORD), - smtpAddress: envOrString(process.env.SMTP_ADDRESS), - smtpPort: envOrNumber(process.env.SMTP_PORT, 25), - to: envOrString( - process.env.EMAIL_TO, - envOrString(process.env.EMAIL_USERNAME) - ), - username: envOrString(process.env.EMAIL_USERNAME) - }, - mqtt: { - broker: envOrString(process.env.MQTT_BROKER_ADDRESS), - clientId: envOrString(process.env.MQTT_CLIENT_ID), - password: envOrString(process.env.MQTT_PASSWORD), - port: envOrNumber(process.env.MQTT_BROKER_PORT, 1883), - qos: envOrNumber(process.env.MQTT_QOS, 0), - topic: envOrString(process.env.MQTT_TOPIC, 'streetmerchant/alert'), - username: envOrString(process.env.MQTT_USERNAME) - }, - pagerduty: { - integrationKey: envOrString(process.env.PAGERDUTY_INTEGRATION_KEY), - severity: envOrString(process.env.PAGERDUTY_SEVERITY, 'info') - }, - philips_hue: { - accessToken: envOrString(process.env.PHILIPS_HUE_CLOUD_ACCESS_TOKEN), - apiKey: envOrString(process.env.PHILIPS_HUE_API_KEY), - bridgeIp: envOrString(process.env.PHILIPS_HUE_LAN_BRIDGE_IP), - clientId: envOrString(process.env.PHILIPS_HUE_CLOUD_CLIENT_ID), - clientSecret: envOrString(process.env.PHILIPS_HUE_CLOUD_CLIENT_SECRET), - lightColor: envOrString(process.env.PHILIPS_HUE_LIGHT_COLOR), - lightIds: envOrString(process.env.PHILIPS_HUE_LIGHT_IDS), - lightPattern: envOrString(process.env.PHILIPS_HUE_LIGHT_PATTERN), - refreshToken: envOrString(process.env.PHILIPS_HUE_CLOUD_REFRESH_TOKEN), - remoteApiUsername: envOrString(process.env.PHILIPS_HUE_API_KEY) - }, - phone: { - availableCarriers: new Map([ - ['att', 'txt.att.net'], - ['attgo', 'mms.att.net'], - ['bell', 'txt.bell.ca'], - ['fido', 'fido.ca'], - ['google', 'msg.fi.google.com'], - ['koodo', 'msg.koodomobile.com'], - ['mint', 'mailmymobile.net'], - ['rogers', 'pcs.rogers.com'], - ['sprint', 'messaging.sprintpcs.com'], - ['telus', 'msg.telus.com'], - ['tmobile', 'tmomail.net'], - ['verizon', 'vtext.com'], - ['virgin', 'vmobl.com'], - ['virgin-ca', 'vmobile.ca'], - ['visible', 'vtext.com'] - ]), - carrier: envOrArray(process.env.PHONE_CARRIER), - number: envOrArray(process.env.PHONE_NUMBER) - }, - playSound: envOrString(process.env.PLAY_SOUND), - pushbullet: envOrString(process.env.PUSHBULLET), - pushover: { - expire: envOrNumber(process.env.PUSHOVER_EXPIRE), - priority: envOrNumber(process.env.PUSHOVER_PRIORITY), - retry: envOrNumber(process.env.PUSHOVER_RETRY), - token: envOrString(process.env.PUSHOVER_TOKEN), - username: envOrString(process.env.PUSHOVER_USER) - }, - redis: { - url: envOrString(process.env.REDIS_URL) - }, - slack: { - channel: envOrString(process.env.SLACK_CHANNEL), - token: envOrString(process.env.SLACK_TOKEN) - }, - soundPlayer: envOrString(process.env.SOUND_PLAYER), - telegram: { - accessToken: envOrString(process.env.TELEGRAM_ACCESS_TOKEN), - chatId: envOrArray(process.env.TELEGRAM_CHAT_ID) - }, - twilio: { - accountSid: envOrString(process.env.TWILIO_ACCOUNT_SID), - authToken: envOrString(process.env.TWILIO_AUTH_TOKEN), - from: envOrString(process.env.TWILIO_FROM_NUMBER), - to: envOrString(process.env.TWILIO_TO_NUMBER) - }, - twitch: { - accessToken: envOrString(process.env.TWITCH_ACCESS_TOKEN), - channel: envOrString(process.env.TWITCH_CHANNEL), - clientId: envOrString(process.env.TWITCH_CLIENT_ID), - clientSecret: envOrString(process.env.TWITCH_CLIENT_SECRET), - refreshToken: envOrString(process.env.TWITCH_REFRESH_TOKEN) - }, - twitter: { - accessTokenKey: envOrString(process.env.TWITTER_ACCESS_TOKEN_KEY), - accessTokenSecret: envOrString(process.env.TWITTER_ACCESS_TOKEN_SECRET), - consumerKey: envOrString(process.env.TWITTER_CONSUMER_KEY), - consumerSecret: envOrString(process.env.TWITTER_CONSUMER_SECRET), - tweetTags: envOrString(process.env.TWITTER_TWEET_TAGS) - } + desktop: process.env.DESKTOP_NOTIFICATIONS === 'true', + discord: { + notifyGroup: envOrArray(process.env.DISCORD_NOTIFY_GROUP), + notifyGroupSeries: { + '3060ti': envOrArray(process.env.DISCORD_NOTIFY_GROUP_3060TI), + 3070: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3070), + 3080: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3080), + 3090: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3090), + 'captcha-deterrent': [], + darkhero: envOrArray(process.env.DISCORD_NOTIFY_GROUP_DARKHERO), + rx6800: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RX6800), + rx6800xt: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RX6800XT), + rx6900xt: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RX6900XT), + ryzen5600: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN5600), + ryzen5800: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN5800), + ryzen5900: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN5900), + ryzen5950: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN5950), + sf: envOrArray(process.env.DISCORD_NOTIFY_GROUP_CORSAIR_SF), + sonyps5c: envOrArray(process.env.DISCORD_NOTIFY_GROUP_SONYPS5C), + sonyps5de: envOrArray(process.env.DISCORD_NOTIFY_GROUP_SONYPS5DE), + 'test:series': envOrArray(process.env.DISCORD_NOTIFY_GROUP_TEST), + xboxss: envOrArray(process.env.DISCORD_NOTIFY_GROUP_XBOXSS), + xboxsx: envOrArray(process.env.DISCORD_NOTIFY_GROUP_XBOXSX), + }, + webhooks: envOrArray(process.env.DISCORD_WEB_HOOK), + }, + email: { + password: envOrString(process.env.EMAIL_PASSWORD), + smtpAddress: envOrString(process.env.SMTP_ADDRESS), + smtpPort: envOrNumber(process.env.SMTP_PORT, 25), + to: envOrString( + process.env.EMAIL_TO, + envOrString(process.env.EMAIL_USERNAME) + ), + username: envOrString(process.env.EMAIL_USERNAME), + }, + mqtt: { + broker: envOrString(process.env.MQTT_BROKER_ADDRESS), + clientId: envOrString(process.env.MQTT_CLIENT_ID), + password: envOrString(process.env.MQTT_PASSWORD), + port: envOrNumber(process.env.MQTT_BROKER_PORT, 1883), + qos: envOrNumber(process.env.MQTT_QOS, 0), + topic: envOrString(process.env.MQTT_TOPIC, 'streetmerchant/alert'), + username: envOrString(process.env.MQTT_USERNAME), + }, + pagerduty: { + integrationKey: envOrString(process.env.PAGERDUTY_INTEGRATION_KEY), + severity: envOrString(process.env.PAGERDUTY_SEVERITY, 'info'), + }, + philips_hue: { + accessToken: envOrString(process.env.PHILIPS_HUE_CLOUD_ACCESS_TOKEN), + apiKey: envOrString(process.env.PHILIPS_HUE_API_KEY), + bridgeIp: envOrString(process.env.PHILIPS_HUE_LAN_BRIDGE_IP), + clientId: envOrString(process.env.PHILIPS_HUE_CLOUD_CLIENT_ID), + clientSecret: envOrString(process.env.PHILIPS_HUE_CLOUD_CLIENT_SECRET), + lightColor: envOrString(process.env.PHILIPS_HUE_LIGHT_COLOR), + lightIds: envOrString(process.env.PHILIPS_HUE_LIGHT_IDS), + lightPattern: envOrString(process.env.PHILIPS_HUE_LIGHT_PATTERN), + refreshToken: envOrString(process.env.PHILIPS_HUE_CLOUD_REFRESH_TOKEN), + remoteApiUsername: envOrString(process.env.PHILIPS_HUE_API_KEY), + }, + phone: { + availableCarriers: new Map([ + ['att', 'txt.att.net'], + ['attgo', 'mms.att.net'], + ['bell', 'txt.bell.ca'], + ['fido', 'fido.ca'], + ['google', 'msg.fi.google.com'], + ['koodo', 'msg.koodomobile.com'], + ['mint', 'mailmymobile.net'], + ['rogers', 'pcs.rogers.com'], + ['sprint', 'messaging.sprintpcs.com'], + ['telus', 'msg.telus.com'], + ['tmobile', 'tmomail.net'], + ['verizon', 'vtext.com'], + ['virgin', 'vmobl.com'], + ['virgin-ca', 'vmobile.ca'], + ['visible', 'vtext.com'], + ]), + carrier: envOrArray(process.env.PHONE_CARRIER), + number: envOrArray(process.env.PHONE_NUMBER), + }, + playSound: envOrString(process.env.PLAY_SOUND), + pushbullet: envOrString(process.env.PUSHBULLET), + pushover: { + expire: envOrNumber(process.env.PUSHOVER_EXPIRE), + priority: envOrNumber(process.env.PUSHOVER_PRIORITY), + retry: envOrNumber(process.env.PUSHOVER_RETRY), + token: envOrString(process.env.PUSHOVER_TOKEN), + username: envOrString(process.env.PUSHOVER_USER), + }, + redis: { + url: envOrString(process.env.REDIS_URL), + }, + slack: { + channel: envOrString(process.env.SLACK_CHANNEL), + token: envOrString(process.env.SLACK_TOKEN), + }, + soundPlayer: envOrString(process.env.SOUND_PLAYER), + telegram: { + accessToken: envOrString(process.env.TELEGRAM_ACCESS_TOKEN), + chatId: envOrArray(process.env.TELEGRAM_CHAT_ID), + }, + twilio: { + accountSid: envOrString(process.env.TWILIO_ACCOUNT_SID), + authToken: envOrString(process.env.TWILIO_AUTH_TOKEN), + from: envOrString(process.env.TWILIO_FROM_NUMBER), + to: envOrString(process.env.TWILIO_TO_NUMBER), + }, + twitch: { + accessToken: envOrString(process.env.TWITCH_ACCESS_TOKEN), + channel: envOrString(process.env.TWITCH_CHANNEL), + clientId: envOrString(process.env.TWITCH_CLIENT_ID), + clientSecret: envOrString(process.env.TWITCH_CLIENT_SECRET), + refreshToken: envOrString(process.env.TWITCH_REFRESH_TOKEN), + }, + twitter: { + accessTokenKey: envOrString(process.env.TWITTER_ACCESS_TOKEN_KEY), + accessTokenSecret: envOrString(process.env.TWITTER_ACCESS_TOKEN_SECRET), + consumerKey: envOrString(process.env.TWITTER_CONSUMER_KEY), + consumerSecret: envOrString(process.env.TWITTER_CONSUMER_SECRET), + tweetTags: envOrString(process.env.TWITTER_TWEET_TAGS), + }, }; const nvidia = { - addToCardAttempts: envOrNumber(process.env.NVIDIA_ADD_TO_CART_ATTEMPTS, 10), - sessionTtl: envOrNumber(process.env.NVIDIA_SESSION_TTL, 60000) + addToCardAttempts: envOrNumber(process.env.NVIDIA_ADD_TO_CART_ATTEMPTS, 10), + sessionTtl: envOrNumber(process.env.NVIDIA_SESSION_TTL, 60000), }; const page = { - height: 1080, - inStockWaitTime: envOrNumber(process.env.IN_STOCK_WAIT_TIME), - screenshot: envOrBoolean(process.env.SCREENSHOT), - timeout: envOrNumber(process.env.PAGE_TIMEOUT, 30000), - width: 1920 + height: 1080, + inStockWaitTime: envOrNumber(process.env.IN_STOCK_WAIT_TIME), + screenshot: envOrBoolean(process.env.SCREENSHOT), + timeout: envOrNumber(process.env.PAGE_TIMEOUT, 30000), + width: 1920, }; const proxy = { - address: envOrString(process.env.PROXY_ADDRESS), - port: envOrNumber(process.env.PROXY_PORT, 80), - protocol: envOrString(process.env.PROXY_PROTOCOL, 'http') + address: envOrString(process.env.PROXY_ADDRESS), + port: envOrNumber(process.env.PROXY_PORT, 80), + protocol: envOrString(process.env.PROXY_PROTOCOL, 'http'), }; // Check for deprecated configuration values if (process.env.MAX_PRICE) { - console.warn( - 'ℹ MAX_PRICE is deprecated, please use MAX_PRICE_SERIES_{{series}}' - ); + console.warn( + 'ℹ MAX_PRICE is deprecated, please use MAX_PRICE_SERIES_{{series}}' + ); } const store = { - autoAddToCart: envOrBoolean(process.env.AUTO_ADD_TO_CART, true), - country: envOrString(process.env.COUNTRY, 'usa'), - maxPrice: { - series: { - '3060ti': envOrNumber(process.env.MAX_PRICE_SERIES_3060TI), - 3070: envOrNumber(process.env.MAX_PRICE_SERIES_3070), - 3080: envOrNumber(process.env.MAX_PRICE_SERIES_3080), - 3090: envOrNumber(process.env.MAX_PRICE_SERIES_3090), - 'captcha-deterrent': 0, - darkhero: envOrNumber(process.env.MAX_PRICE_SERIES_DARKHERO), - rx6800: envOrNumber(process.env.MAX_PRICE_SERIES_RX6800), - rx6800xt: envOrNumber(process.env.MAX_PRICE_SERIES_RX6800XT), - rx6900xt: envOrNumber(process.env.MAX_PRICE_SERIES_RX6900XT), - ryzen5600: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5600), - ryzen5800: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5800), - ryzen5900: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5900), - ryzen5950: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5950), - sf: envOrNumber(process.env.MAX_PRICE_SERIES_CORSAIR_SF), - sonyps5c: envOrNumber(process.env.MAX_PRICE_SERIES_SONYPS5C), - sonyps5de: envOrNumber(process.env.MAX_PRICE_SERIES_SONYPS5DE), - 'test:series': envOrNumber(process.env.MAX_PRICE_SERIES_TEST), - xboxss: envOrNumber(process.env.MAX_PRICE_SERIES_XBOXSS), - xboxsx: envOrNumber(process.env.MAX_PRICE_SERIES_XBOXSX) - } - }, - microCenterLocation: envOrArray(process.env.MICROCENTER_LOCATION, ['web']), - showOnlyBrands: envOrArray(process.env.SHOW_ONLY_BRANDS), - showOnlyModels: envOrArray(process.env.SHOW_ONLY_MODELS).map((entry) => { - const [name, series] = entry.match(/[^:]+/g) ?? []; - return { - name: envOrString(name), - series: envOrString(series) - }; - }), - showOnlySeries: envOrArray(process.env.SHOW_ONLY_SERIES, [ - '3060ti', - '3070', - '3080', - '3090', - 'rx6800', - 'rx6800xt', - 'rx6900xt', - 'ryzen5600', - 'ryzen5800', - 'ryzen5900', - 'ryzen5950', - 'sonyps5c', - 'sonyps5de', - 'xboxss', - 'xboxsx' - ]), - stores: envOrArray(process.env.STORES, ['amazon', 'bestbuy']).map( - (entry) => { - const [name, minPageSleep, maxPageSleep] = - entry.match(/[^:]+/g) ?? []; + autoAddToCart: envOrBoolean(process.env.AUTO_ADD_TO_CART, true), + country: envOrString(process.env.COUNTRY, 'usa'), + maxPrice: { + series: { + '3060ti': envOrNumber(process.env.MAX_PRICE_SERIES_3060TI), + 3070: envOrNumber(process.env.MAX_PRICE_SERIES_3070), + 3080: envOrNumber(process.env.MAX_PRICE_SERIES_3080), + 3090: envOrNumber(process.env.MAX_PRICE_SERIES_3090), + 'captcha-deterrent': 0, + darkhero: envOrNumber(process.env.MAX_PRICE_SERIES_DARKHERO), + rx6800: envOrNumber(process.env.MAX_PRICE_SERIES_RX6800), + rx6800xt: envOrNumber(process.env.MAX_PRICE_SERIES_RX6800XT), + rx6900xt: envOrNumber(process.env.MAX_PRICE_SERIES_RX6900XT), + ryzen5600: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5600), + ryzen5800: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5800), + ryzen5900: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5900), + ryzen5950: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5950), + sf: envOrNumber(process.env.MAX_PRICE_SERIES_CORSAIR_SF), + sonyps5c: envOrNumber(process.env.MAX_PRICE_SERIES_SONYPS5C), + sonyps5de: envOrNumber(process.env.MAX_PRICE_SERIES_SONYPS5DE), + 'test:series': envOrNumber(process.env.MAX_PRICE_SERIES_TEST), + xboxss: envOrNumber(process.env.MAX_PRICE_SERIES_XBOXSS), + xboxsx: envOrNumber(process.env.MAX_PRICE_SERIES_XBOXSX), + }, + }, + microCenterLocation: envOrArray(process.env.MICROCENTER_LOCATION, ['web']), + showOnlyBrands: envOrArray(process.env.SHOW_ONLY_BRANDS), + showOnlyModels: envOrArray(process.env.SHOW_ONLY_MODELS).map(entry => { + const [name, series] = entry.match(/[^:]+/g) ?? []; + return { + name: envOrString(name), + series: envOrString(series), + }; + }), + showOnlySeries: envOrArray(process.env.SHOW_ONLY_SERIES, [ + '3060ti', + '3070', + '3080', + '3090', + 'rx6800', + 'rx6800xt', + 'rx6900xt', + 'ryzen5600', + 'ryzen5800', + 'ryzen5900', + 'ryzen5950', + 'sonyps5c', + 'sonyps5de', + 'xboxss', + 'xboxsx', + ]), + stores: envOrArray(process.env.STORES, ['amazon', 'bestbuy']).map(entry => { + const [name, minPageSleep, maxPageSleep] = entry.match(/[^:]+/g) ?? []; - let proxyList; - try { - proxyList = loadProxyList(name); - } catch {} + let proxyList = loadProxyList(name); - if (!proxyList) { - try { - proxyList = loadProxyList('global'); - } catch {} - } + if (proxyList.length === 0) { + proxyList = loadProxyList('global'); + } - return { - maxPageSleep: envOrNumberMax( - minPageSleep, - maxPageSleep, - browser.maxSleep - ), - minPageSleep: envOrNumberMin( - minPageSleep, - maxPageSleep, - browser.minSleep - ), - name: envOrString(name), - proxyList - }; - } - ) + return { + maxPageSleep: envOrNumberMax( + minPageSleep, + maxPageSleep, + browser.maxSleep + ), + minPageSleep: envOrNumberMin( + minPageSleep, + maxPageSleep, + browser.minSleep + ), + name: envOrString(name), + proxyList, + }; + }), }; export const defaultStoreData = { - maxPageSleep: browser.maxSleep, - minPageSleep: browser.minSleep + maxPageSleep: browser.maxSleep, + minPageSleep: browser.minSleep, }; export const config = { - browser, - docker, - logLevel, - notifications, - nvidia, - page, - proxy, - store + browser, + docker, + logLevel, + notifications, + nvidia, + page, + proxy, + store, }; export function setConfig(newConfig: any) { - const writeConfig = config as any; - for (const key of Object.keys(newConfig)) { - writeConfig[key] = newConfig[key]; - } + const writeConfig = config as any; + for (const key of Object.keys(newConfig)) { + writeConfig[key] = newConfig[key]; + } } diff --git a/src/index.ts b/src/index.ts index 89350e818c..9ea71ccbd4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,4 @@ +import * as Process from 'process'; import {config} from './config'; // Needs to be loaded first import {startAPIServer, stopAPIServer} from './web'; // eslint-disable-line sort-imports import {Browser} from 'puppeteer'; @@ -16,90 +17,89 @@ let browser: Browser | undefined; * Starts the bot. */ async function main() { - const args: string[] = []; - - // Skip Chromium Linux Sandbox - // https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#setting-up-chrome-linux-sandbox - if (config.browser.isTrusted) { - args.push('--no-sandbox'); - args.push('--disable-setuid-sandbox'); - } - - // https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#tips - // https://stackoverflow.com/questions/48230901/docker-alpine-with-node-js-and-chromium-headless-puppeter-failed-to-launch-c - if (config.docker) { - args.push('--disable-dev-shm-usage'); - args.push('--no-sandbox'); - args.push('--disable-setuid-sandbox'); - args.push('--headless'); - args.push('--disable-gpu'); - } - - // Add the address of the proxy server if defined - if (config.proxy.address) { - args.push( - `--proxy-server=${config.proxy.protocol}://${config.proxy.address}:${config.proxy.port}` - ); - } - - if (args.length > 0) { - logger.info('ℹ puppeteer config: ', args); - } - - await stop(); - browser = await puppeteer.launch({ - args, - defaultViewport: { - height: config.page.height, - width: config.page.width - }, - headless: config.browser.isHeadless - }); - - config.browser.userAgent = await browser.userAgent(); - - for (const store of storeList.values()) { - logger.debug('store links', {meta: {links: store.links}}); - if (store.setupAction !== undefined) { - store.setupAction(browser); - } - - setTimeout(tryLookupAndLoop, getSleepTime(store), browser, store); - } - - await startAPIServer(); + const args: string[] = []; + + // Skip Chromium Linux Sandbox + // https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#setting-up-chrome-linux-sandbox + if (config.browser.isTrusted) { + args.push('--no-sandbox'); + args.push('--disable-setuid-sandbox'); + } + + // https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#tips + // https://stackoverflow.com/questions/48230901/docker-alpine-with-node-js-and-chromium-headless-puppeter-failed-to-launch-c + if (config.docker) { + args.push('--disable-dev-shm-usage'); + args.push('--no-sandbox'); + args.push('--disable-setuid-sandbox'); + args.push('--headless'); + args.push('--disable-gpu'); + } + + // Add the address of the proxy server if defined + if (config.proxy.address) { + args.push( + `--proxy-server=${config.proxy.protocol}://${config.proxy.address}:${config.proxy.port}` + ); + } + + if (args.length > 0) { + logger.info('ℹ puppeteer config: ', args); + } + + await stop(); + browser = await puppeteer.launch({ + args, + defaultViewport: { + height: config.page.height, + width: config.page.width, + }, + headless: config.browser.isHeadless, + }); + + config.browser.userAgent = await browser.userAgent(); + + for (const store of storeList.values()) { + logger.debug('store links', {meta: {links: store.links}}); + if (store.setupAction !== undefined) { + store.setupAction(browser); + } + + setTimeout(tryLookupAndLoop, getSleepTime(store), browser, store); + } + + await startAPIServer(); } async function stop() { - await stopAPIServer(); - - if (browser) { - // Use temporary swap variable to avoid any race condition - const browserTemporary = browser; - browser = undefined; - await browserTemporary.close(); - } + await stopAPIServer(); + + if (browser) { + // Use temporary swap variable to avoid any race condition + const browserTemporary = browser; + browser = undefined; + await browserTemporary.close(); + } } async function stopAndExit() { - await stop(); - // eslint-disable-next-line unicorn/no-process-exit - process.exit(0); + await stop(); + Process.exit(0); } /** * Will continually run until user interferes. */ async function loopMain() { - try { - await main(); - } catch (error: unknown) { - logger.error( - '✖ something bad happened, resetting streetmerchant in 5 seconds', - error - ); - setTimeout(loopMain, 5000); - } + try { + await main(); + } catch (error: unknown) { + logger.error( + '✖ something bad happened, resetting streetmerchant in 5 seconds', + error + ); + setTimeout(loopMain, 5000); + } } void loopMain(); diff --git a/src/logger.ts b/src/logger.ts index bb0eaded2e..5cb4179870 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -3,254 +3,249 @@ import chalk from 'chalk'; import {config} from './config'; import winston from 'winston'; -const prettyJson = winston.format.printf((info) => { - const timestamp = new Date().toLocaleTimeString(); +const prettyJson = winston.format.printf(info => { + const timestamp = new Date().toLocaleTimeString(); - let out = `${chalk.grey(`[${timestamp}]`)} ${info.level} ${chalk.grey( - '::' - )} ${info.message}`; + let out = `${chalk.grey(`[${timestamp}]`)} ${info.level} ${chalk.grey( + '::' + )} ${info.message}`; - if (Object.keys(info.metadata).length > 0) { - out = `${out} ${chalk.magenta(JSON.stringify(info.metadata, null, 2))}`; - } + if (Object.keys(info.metadata).length > 0) { + out = `${out} ${chalk.magenta(JSON.stringify(info.metadata, null, 2))}`; + } - return out; + return out; }); export const logger = winston.createLogger({ - format: winston.format.combine( - winston.format.colorize(), - winston.format.metadata({ - fillExcept: ['level', 'message', 'timestamp'] - }), - prettyJson - ), - level: config.logLevel, - transports: [new winston.transports.Console({})] + format: winston.format.combine( + winston.format.colorize(), + winston.format.metadata({ + fillExcept: ['level', 'message', 'timestamp'], + }), + prettyJson + ), + level: config.logLevel, + transports: [new winston.transports.Console({})], }); export const Print = { - backoff( - link: Link, - store: Store, - parameters: {delay: number; statusCode: number}, - color?: boolean - ): string { - if (color) { - return ( - '✖ ' + - buildProductString(link, store, true) + - ' :: ' + - chalk.yellow( - `BACKOFF DELAY status=${parameters.statusCode} delay=${parameters.delay}` - ) - ); - } - - return `✖ ${buildProductString(link, store)} :: BACKOFF DELAY status=${ - parameters.statusCode - } delay=${parameters.delay}`; - }, - badStatusCode( - link: Link, - store: Store, - statusCode: number, - color?: boolean - ): string { - if (color) { - return ( - '✖ ' + - buildProductString(link, store, true) + - ' :: ' + - chalk.yellow(`STATUS CODE ERROR ${statusCode}`) - ); - } - - return `✖ ${buildProductString( - link, - store - )} :: STATUS CODE ERROR ${statusCode}`; - }, - bannedSeller(link: Link, store: Store, color?: boolean): string { - if (color) { - return ( - '✖ ' + - buildProductString(link, store, true) + - ' :: ' + - chalk.yellow('BANNED SELLER') - ); - } - - return `✖ ${buildProductString(link, store)} :: BANNED SELLER`; - }, - captcha(link: Link, store: Store, color?: boolean): string { - if (color) { - return ( - '✖ ' + - buildProductString(link, store, true) + - ' :: ' + - chalk.yellow('CAPTCHA') - ); - } - - return `✖ ${buildProductString(link, store)} :: CAPTCHA`; - }, - cloudflare(link: Link, store: Store, color?: boolean): string { - if (color) { - return ( - '✖ ' + - buildProductString(link, store, true) + - ' :: ' + - chalk.yellow('CLOUDFLARE, WAITING') - ); - } - - return `✖ ${buildProductString(link, store)} :: CLOUDFLARE, WAITING`; - }, - inStock(link: Link, store: Store, color?: boolean, sms?: boolean): string { - const productString = `${buildProductString(link, store)} :: IN STOCK`; - - if (color) { - return chalk.bgGreen.white.bold(`🚀🚨 ${productString} 🚨🚀`); - } - - if (sms) { - return productString; - } - - return `🚀🚨 ${productString} 🚨🚀`; - }, - inStockWaiting(link: Link, store: Store, color?: boolean): string { - if (color) { - return ( - 'ℹ ' + - buildProductString(link, store, true) + - ' :: ' + - chalk.yellow('IN STOCK, WAITING') - ); - } - - return `ℹ ${buildProductString(link, store)} :: IN STOCK, WAITING`; - }, - maxPrice( - link: Link, - store: Store, - maxPrice: number, - color?: boolean - ): string { - if (color) { - return ( - '✖ ' + - buildProductString(link, store, true) + - ' :: ' + - chalk.yellow( - `PRICE ${link.price ?? ''} EXCEEDS LIMIT ${maxPrice}` - ) - ); - } - - return `✖ ${buildProductString(link, store)} :: PRICE ${ - link.price ?? '' - } EXCEEDS LIMIT ${maxPrice}`; - }, - message( - message: string, - topic: string, - store: Store, - color?: boolean - ): string { - if (color) { - return ( - '✖ ' + - buildSetupString(topic, store, true) + - ' :: ' + - chalk.yellow(message) - ); - } - - return `✖ ${buildSetupString(topic, store)} :: ${message}`; - }, - noResponse(link: Link, store: Store, color?: boolean): string { - if (color) { - return ( - '✖ ' + - buildProductString(link, store, true) + - ' :: ' + - chalk.yellow('NO RESPONSE') - ); - } - - return `✖ ${buildProductString(link, store)} :: NO RESPONSE`; - }, - outOfStock(link: Link, store: Store, color?: boolean): string { - if (color) { - return ( - '✖ ' + - buildProductString(link, store, true) + - ' :: ' + - chalk.red('OUT OF STOCK') - ); - } - - return `✖ ${buildProductString(link, store)} :: OUT OF STOCK`; - }, - productInStock(link: Link): string { - let productString = `Product Page: ${link.url}`; - if (link.cartUrl) - productString += `\nAdd To Cart Link: ${link.cartUrl}`; - - return productString; - }, - rateLimit(link: Link, store: Store, color?: boolean): string { - if (color) { - return ( - '✖ ' + - buildProductString(link, store, true) + - ' :: ' + - chalk.yellow('RATE LIMIT EXCEEDED') - ); - } - - return `✖ ${buildProductString(link, store)} :: RATE LIMIT EXCEEDED`; - }, - recursionLimit(link: Link, store: Store, color?: boolean): string { - if (color) { - return ( - '✖ ' + - buildProductString(link, store, true) + - ' :: ' + - chalk.yellow('CLOUDFLARE RETRY LIMIT REACHED, ABORT') - ); - } - - return `✖ ${buildProductString( - link, - store - )} :: CLOUDFLARE RETRY LIMIT REACHED, ABORT`; - } + backoff( + link: Link, + store: Store, + parameters: {delay: number; statusCode: number}, + color?: boolean + ): string { + if (color) { + return ( + '✖ ' + + buildProductString(link, store, true) + + ' :: ' + + chalk.yellow( + `BACKOFF DELAY status=${parameters.statusCode} delay=${parameters.delay}` + ) + ); + } + + return `✖ ${buildProductString(link, store)} :: BACKOFF DELAY status=${ + parameters.statusCode + } delay=${parameters.delay}`; + }, + badStatusCode( + link: Link, + store: Store, + statusCode: number, + color?: boolean + ): string { + if (color) { + return ( + '✖ ' + + buildProductString(link, store, true) + + ' :: ' + + chalk.yellow(`STATUS CODE ERROR ${statusCode}`) + ); + } + + return `✖ ${buildProductString( + link, + store + )} :: STATUS CODE ERROR ${statusCode}`; + }, + bannedSeller(link: Link, store: Store, color?: boolean): string { + if (color) { + return ( + '✖ ' + + buildProductString(link, store, true) + + ' :: ' + + chalk.yellow('BANNED SELLER') + ); + } + + return `✖ ${buildProductString(link, store)} :: BANNED SELLER`; + }, + captcha(link: Link, store: Store, color?: boolean): string { + if (color) { + return ( + '✖ ' + + buildProductString(link, store, true) + + ' :: ' + + chalk.yellow('CAPTCHA') + ); + } + + return `✖ ${buildProductString(link, store)} :: CAPTCHA`; + }, + cloudflare(link: Link, store: Store, color?: boolean): string { + if (color) { + return ( + '✖ ' + + buildProductString(link, store, true) + + ' :: ' + + chalk.yellow('CLOUDFLARE, WAITING') + ); + } + + return `✖ ${buildProductString(link, store)} :: CLOUDFLARE, WAITING`; + }, + inStock(link: Link, store: Store, color?: boolean, sms?: boolean): string { + const productString = `${buildProductString(link, store)} :: IN STOCK`; + + if (color) { + return chalk.bgGreen.white.bold(`🚀🚨 ${productString} 🚨🚀`); + } + + if (sms) { + return productString; + } + + return `🚀🚨 ${productString} 🚨🚀`; + }, + inStockWaiting(link: Link, store: Store, color?: boolean): string { + if (color) { + return ( + 'ℹ ' + + buildProductString(link, store, true) + + ' :: ' + + chalk.yellow('IN STOCK, WAITING') + ); + } + + return `ℹ ${buildProductString(link, store)} :: IN STOCK, WAITING`; + }, + maxPrice( + link: Link, + store: Store, + maxPrice: number, + color?: boolean + ): string { + if (color) { + return ( + '✖ ' + + buildProductString(link, store, true) + + ' :: ' + + chalk.yellow(`PRICE ${link.price ?? ''} EXCEEDS LIMIT ${maxPrice}`) + ); + } + + return `✖ ${buildProductString(link, store)} :: PRICE ${ + link.price ?? '' + } EXCEEDS LIMIT ${maxPrice}`; + }, + message( + message: string, + topic: string, + store: Store, + color?: boolean + ): string { + if (color) { + return ( + '✖ ' + + buildSetupString(topic, store, true) + + ' :: ' + + chalk.yellow(message) + ); + } + + return `✖ ${buildSetupString(topic, store)} :: ${message}`; + }, + noResponse(link: Link, store: Store, color?: boolean): string { + if (color) { + return ( + '✖ ' + + buildProductString(link, store, true) + + ' :: ' + + chalk.yellow('NO RESPONSE') + ); + } + + return `✖ ${buildProductString(link, store)} :: NO RESPONSE`; + }, + outOfStock(link: Link, store: Store, color?: boolean): string { + if (color) { + return ( + '✖ ' + + buildProductString(link, store, true) + + ' :: ' + + chalk.red('OUT OF STOCK') + ); + } + + return `✖ ${buildProductString(link, store)} :: OUT OF STOCK`; + }, + productInStock(link: Link): string { + let productString = `Product Page: ${link.url}`; + if (link.cartUrl) productString += `\nAdd To Cart Link: ${link.cartUrl}`; + + return productString; + }, + rateLimit(link: Link, store: Store, color?: boolean): string { + if (color) { + return ( + '✖ ' + + buildProductString(link, store, true) + + ' :: ' + + chalk.yellow('RATE LIMIT EXCEEDED') + ); + } + + return `✖ ${buildProductString(link, store)} :: RATE LIMIT EXCEEDED`; + }, + recursionLimit(link: Link, store: Store, color?: boolean): string { + if (color) { + return ( + '✖ ' + + buildProductString(link, store, true) + + ' :: ' + + chalk.yellow('CLOUDFLARE RETRY LIMIT REACHED, ABORT') + ); + } + + return `✖ ${buildProductString( + link, + store + )} :: CLOUDFLARE RETRY LIMIT REACHED, ABORT`; + }, }; function buildSetupString( - topic: string, - store: Store, - color?: boolean + topic: string, + store: Store, + color?: boolean ): string { - if (color) { - return ( - chalk.cyan(`[${store.name}]`) + chalk.grey(` [setup (${topic})]`) - ); - } + if (color) { + return chalk.cyan(`[${store.name}]`) + chalk.grey(` [setup (${topic})]`); + } - return `[${store.name}] [setup (${topic})]`; + return `[${store.name}] [setup (${topic})]`; } function buildProductString(link: Link, store: Store, color?: boolean): string { - if (color) { - return ( - chalk.cyan(`[${store.name}]`) + - chalk.grey(` [${link.brand} (${link.series})] ${link.model}`) - ); - } - - return `[${store.name}] [${link.brand} (${link.series})] ${link.model}`; + if (color) { + return ( + chalk.cyan(`[${store.name}]`) + + chalk.grey(` [${link.brand} (${link.series})] ${link.model}`) + ); + } + + return `[${store.name}] [${link.brand} (${link.series})] ${link.model}`; } diff --git a/src/notification/desktop.ts b/src/notification/desktop.ts index e026740cef..e7867c6468 100644 --- a/src/notification/desktop.ts +++ b/src/notification/desktop.ts @@ -7,20 +7,20 @@ import notifier from 'node-notifier'; const {desktop} = config.notifications; export function sendDesktopNotification(link: Link, store: Store) { - if (desktop) { - logger.debug('↗ sending desktop notification'); - (async () => { - notifier.notify({ - icon: join( - __dirname, - '../../docs/assets/images/streetmerchant-logo.png' - ), - message: link.cartUrl ? link.cartUrl : link.url, - open: link.cartUrl ? link.cartUrl : link.url, - title: Print.inStock(link, store) - }); + if (desktop) { + logger.debug('↗ sending desktop notification'); + (async () => { + notifier.notify({ + icon: join( + __dirname, + '../../../docs/assets/images/streetmerchant-logo.png' + ), + message: link.cartUrl ? link.cartUrl : link.url, + open: link.cartUrl ? link.cartUrl : link.url, + title: Print.inStock(link, store), + }); - logger.info('✔ desktop notification sent'); - })(); - } + logger.info('✔ desktop notification sent'); + })(); + } } diff --git a/src/notification/discord.ts b/src/notification/discord.ts index 4bca496c0e..7970f15fbe 100644 --- a/src/notification/discord.ts +++ b/src/notification/discord.ts @@ -6,84 +6,76 @@ import {logger} from '../logger'; const {notifyGroup, webhooks, notifyGroupSeries} = config.notifications.discord; function getIdAndToken(webhook: string) { - const match = /.*\/webhooks\/(\d+)\/(.+)/.exec(webhook); + const match = /.*\/webhooks\/(\d+)\/(.+)/.exec(webhook); - if (!match) { - throw new Error('could not get discord webhook'); - } + if (!match) { + throw new Error('could not get discord webhook'); + } - return { - id: match[1], - token: match[2] - }; + return { + id: match[1], + token: match[2], + }; } export function sendDiscordMessage(link: Link, store: Store) { - if (webhooks.length > 0) { - logger.debug('↗ sending discord message'); + if (webhooks.length > 0) { + logger.debug('↗ sending discord message'); - (async () => { - try { - const embed = new Discord.MessageEmbed() - .setTitle('_**Stock alert!**_') - .setDescription( - '> provided by [streetmerchant](https://github.com/jef/streetmerchant) with :heart:' - ) - .setThumbnail( - 'https://raw.githubusercontent.com/jef/streetmerchant/main/docs/assets/images/streetmerchant-logo.png' - ) - .setColor('#52b788') - .setTimestamp(); + (async () => { + try { + const embed = new Discord.MessageEmbed() + .setTitle('_**Stock alert!**_') + .setDescription( + '> provided by [streetmerchant](https://github.com/jef/streetmerchant) with :heart:' + ) + .setThumbnail( + 'https://raw.githubusercontent.com/jef/streetmerchant/main/docs/assets/images/streetmerchant-logo.png' + ) + .setColor('#52b788') + .setTimestamp(); - embed.addField('Store', store.name, true); - if (link.price) - embed.addField( - 'Price', - `${store.currency}${link.price}`, - true - ); - embed.addField('Product Page', link.url); - if (link.cartUrl) embed.addField('Add to Cart', link.cartUrl); - embed.addField('Brand', link.brand, true); - embed.addField('Model', link.model, true); - embed.addField('Series', link.series, true); + embed.addField('Store', store.name, true); + if (link.price) + embed.addField('Price', `${store.currency}${link.price}`, true); + embed.addField('Product Page', link.url); + if (link.cartUrl) embed.addField('Add to Cart', link.cartUrl); + embed.addField('Brand', link.brand, true); + embed.addField('Model', link.model, true); + embed.addField('Series', link.series, true); - embed.setTimestamp(); + embed.setTimestamp(); - let notifyText: string[] = []; + let notifyText: string[] = []; - if (notifyGroup) { - notifyText = notifyText.concat(notifyGroup); - } + if (notifyGroup) { + notifyText = notifyText.concat(notifyGroup); + } - if (Object.keys(notifyGroupSeries).indexOf(link.series) !== 0) { - notifyText = notifyText.concat( - notifyGroupSeries[link.series] - ); - } + if (Object.keys(notifyGroupSeries).indexOf(link.series) !== 0) { + notifyText = notifyText.concat(notifyGroupSeries[link.series]); + } - const promises = []; - for (const webhook of webhooks) { - const {id, token} = getIdAndToken(webhook); - const client = new Discord.WebhookClient(id, token); + const promises = []; + for (const webhook of webhooks) { + const {id, token} = getIdAndToken(webhook); + const client = new Discord.WebhookClient(id, token); - promises.push({ - client, - message: client.send(notifyText.join(' '), { - embeds: [embed], - username: 'streetmerchant' - }) - }); - } + promises.push({ + client, + message: client.send(notifyText.join(' '), { + embeds: [embed], + username: 'streetmerchant', + }), + }); + } - (await Promise.all(promises)).forEach(({client}) => - client.destroy() - ); + (await Promise.all(promises)).forEach(({client}) => client.destroy()); - logger.info('✔ discord message sent'); - } catch (error: unknown) { - logger.error("✖ couldn't send discord message", error); - } - })(); - } + logger.info('✔ discord message sent'); + } catch (error: unknown) { + logger.error("✖ couldn't send discord message", error); + } + })(); + } } diff --git a/src/notification/email.ts b/src/notification/email.ts index e31e650ece..56a8904b31 100644 --- a/src/notification/email.ts +++ b/src/notification/email.ts @@ -9,47 +9,47 @@ const {email} = config.notifications; const transportOptions: any = {}; if (email.username && (email.password || email.smtpAddress)) { - transportOptions.auth = {}; - transportOptions.auth.user = email.username; - transportOptions.auth.pass = email.password; + transportOptions.auth = {}; + transportOptions.auth.user = email.username; + transportOptions.auth.pass = email.password; } if (email.smtpAddress) { - transportOptions.host = email.smtpAddress; - transportOptions.port = email.smtpPort; + transportOptions.host = email.smtpAddress; + transportOptions.port = email.smtpPort; } else { - transportOptions.service = 'gmail'; + transportOptions.service = 'gmail'; } export const transporter = nodemailer.createTransport({ - ...transportOptions + ...transportOptions, }); export function sendEmail(link: Link, store: Store) { - if (email.username && (email.password || email.smtpAddress)) { - logger.debug('↗ sending email'); - - const mailOptions: Mail.Options = { - attachments: link.screenshot - ? [ - { - filename: link.screenshot, - path: `./${link.screenshot}` - } - ] - : undefined, - from: email.username, - subject: Print.inStock(link, store), - text: Print.productInStock(link), - to: email.to - }; - - transporter.sendMail(mailOptions, (error) => { - if (error) { - logger.error("✖ couldn't send email", error); - } else { - logger.info('✔ email sent'); - } - }); - } + if (email.username && (email.password || email.smtpAddress)) { + logger.debug('↗ sending email'); + + const mailOptions: Mail.Options = { + attachments: link.screenshot + ? [ + { + filename: link.screenshot, + path: `./${link.screenshot}`, + }, + ] + : undefined, + from: email.username, + subject: Print.inStock(link, store), + text: Print.productInStock(link), + to: email.to, + }; + + transporter.sendMail(mailOptions, error => { + if (error) { + logger.error("✖ couldn't send email", error); + } else { + logger.info('✔ email sent'); + } + }); + } } diff --git a/src/notification/mqtt.ts b/src/notification/mqtt.ts index 3a4d10618b..144236b218 100644 --- a/src/notification/mqtt.ts +++ b/src/notification/mqtt.ts @@ -7,60 +7,60 @@ const {mqtt} = config.notifications; let client: MqttClient.Client; if (mqtt.broker) { - if (checkInsecureUsage(mqtt.password, mqtt.broker)) { - logger.warn( - '✖ Insecure transport of password - Only use credentials with MQTT brokers on private networks.' - ); - } else { - const clientOptions: IClientOptions = { - clean: mqtt.clientId === '', - clientId: mqtt.clientId === '' ? undefined : mqtt.clientId, - password: mqtt.password === '' ? undefined : mqtt.password, - username: mqtt.username === '' ? undefined : mqtt.username - }; - client = MqttClient.connect( - `mqtt://${mqtt.broker}:${mqtt.port}`, - clientOptions - ); - } + if (checkInsecureUsage(mqtt.password, mqtt.broker)) { + logger.warn( + '✖ Insecure transport of password - Only use credentials with MQTT brokers on private networks.' + ); + } else { + const clientOptions: IClientOptions = { + clean: mqtt.clientId === '', + clientId: mqtt.clientId === '' ? undefined : mqtt.clientId, + password: mqtt.password === '' ? undefined : mqtt.password, + username: mqtt.username === '' ? undefined : mqtt.username, + }; + client = MqttClient.connect( + `mqtt://${mqtt.broker}:${mqtt.port}`, + clientOptions + ); + } } export function sendMqttMessage(link: Link, store: Store) { - if (client) { - logger.debug('↗ sending mqtt message'); - - (async () => { - const givenUrl = link.cartUrl ? link.cartUrl : link.url; - const message = `{"msg":"${Print.inStock( - link, - store - )}", "url":"${givenUrl}"}`; - const topic = generateTopic(link, store, mqtt.topic); - const pubOptions: IClientPublishOptions = { - qos: mqtt.qos as 0 | 1 | 2, - retain: false - }; - - try { - client.publish(topic, message, pubOptions); - logger.info('✔ mqtt message sent'); - } catch (error: unknown) { - logger.error("✖ couldn't send mqtt message", error); - } - })(); - } + if (client) { + logger.debug('↗ sending mqtt message'); + + (async () => { + const givenUrl = link.cartUrl ? link.cartUrl : link.url; + const message = `{"msg":"${Print.inStock( + link, + store + )}", "url":"${givenUrl}"}`; + const topic = generateTopic(link, store, mqtt.topic); + const pubOptions: IClientPublishOptions = { + qos: mqtt.qos as 0 | 1 | 2, + retain: false, + }; + + try { + client.publish(topic, message, pubOptions); + logger.info('✔ mqtt message sent'); + } catch (error: unknown) { + logger.error("✖ couldn't send mqtt message", error); + } + })(); + } } function generateTopic(link: Link, store: Store, topic: string): string { - topic.trim(); - topic = topic.replace(/^\//, ''); - topic = topic - .replace(/%series%/g, link.series) - .replace(/%brand%/g, link.brand) - .replace(/%model%/g, link.model) - .replace(/%store%/g, store.name); - - return topic; + topic.trim(); + topic = topic.replace(/^\//, ''); + topic = topic + .replace(/%series%/g, link.series) + .replace(/%brand%/g, link.brand) + .replace(/%model%/g, link.model) + .replace(/%store%/g, store.name); + + return topic; } /** @@ -72,43 +72,43 @@ function generateTopic(link: Link, store: Store, topic: string): string { * */ function checkInsecureUsage(pass: string, address: string): boolean { - if (pass !== '') { - if ( - isClassANet(address) || - isClassBNet(address) || - isClassCNet(address) || - isLinkLocal(address) - ) { - logger.debug(`MQTT using private network broker: ${address}`); - } else { - logger.debug(`MQTT using public network broker: ${address}`); - return true; - } - } - - return false; + if (pass !== '') { + if ( + isClassANet(address) || + isClassBNet(address) || + isClassCNet(address) || + isLinkLocal(address) + ) { + logger.debug(`MQTT using private network broker: ${address}`); + } else { + logger.debug(`MQTT using public network broker: ${address}`); + return true; + } + } + + return false; } function isClassANet(address: string): boolean { - const classRegex = /^(10\.(\d|[1-9]\d|[12][0-5]{2})\.(\d|[1-9]\d|[12][0-5]{2})\.(\d|[1-9]\d|[12][0-5]{2}))$/; + const classRegex = /^(10\.(\d|[1-9]\d|[12][0-5]{2})\.(\d|[1-9]\d|[12][0-5]{2})\.(\d|[1-9]\d|[12][0-5]{2}))$/; - return Boolean(classRegex.exec(address)); + return Boolean(classRegex.exec(address)); } function isClassBNet(address: string): boolean { - const classRegex = /^(172\.(1[6-9]|2\d|3[01])\.(\d|[1-9]\d|[12][0-5]{2})\.(\d|[1-9]\d|[12][0-5]{2}))$/; + const classRegex = /^(172\.(1[6-9]|2\d|3[01])\.(\d|[1-9]\d|[12][0-5]{2})\.(\d|[1-9]\d|[12][0-5]{2}))$/; - return Boolean(classRegex.exec(address)); + return Boolean(classRegex.exec(address)); } function isClassCNet(address: string): boolean { - const classRegex = /^(192\.168\.(\d|[1-9]\d|[12][0-5]{2})\.(\d|[1-9]\d|[12][0-5]{2}))$/; + const classRegex = /^(192\.168\.(\d|[1-9]\d|[12][0-5]{2})\.(\d|[1-9]\d|[12][0-5]{2}))$/; - return Boolean(classRegex.exec(address)); + return Boolean(classRegex.exec(address)); } function isLinkLocal(address: string): boolean { - const linkLocal = /.+\.local$/; + const linkLocal = /.+\.local$/; - return Boolean(linkLocal.exec(address)); + return Boolean(linkLocal.exec(address)); } diff --git a/src/notification/notification.ts b/src/notification/notification.ts index 56623b52de..2013fcb825 100644 --- a/src/notification/notification.ts +++ b/src/notification/notification.ts @@ -17,22 +17,22 @@ import {sendTwitchMessage} from './twitch'; import {updateRedis} from './redis'; export function sendNotification(link: Link, store: Store) { - // Priority - playSound(); - sendDiscordMessage(link, store); - sendDesktopNotification(link, store); - sendEmail(link, store); - sendSms(link, store); - // Non-priority - adjustPhilipsHueLights(); - sendMqttMessage(link, store); - sendPagerDutyNotification(link, store); - sendPushbulletNotification(link, store); - sendPushoverNotification(link, store); - sendSlackMessage(link, store); - sendTelegramMessage(link, store); - sendTweet(link, store); - sendTwilioMessage(link, store); - sendTwitchMessage(link, store); - updateRedis(link, store); + // Priority + playSound(); + sendDiscordMessage(link, store); + sendDesktopNotification(link, store); + sendEmail(link, store); + sendSms(link, store); + // Non-priority + adjustPhilipsHueLights(); + sendMqttMessage(link, store); + sendPagerDutyNotification(link, store); + sendPushbulletNotification(link, store); + sendPushoverNotification(link, store); + sendSlackMessage(link, store); + sendTelegramMessage(link, store); + sendTweet(link, store); + sendTwilioMessage(link, store); + sendTwitchMessage(link, store); + updateRedis(link, store); } diff --git a/src/notification/pagerduty.ts b/src/notification/pagerduty.ts index b759f47ece..71ea3cedbf 100644 --- a/src/notification/pagerduty.ts +++ b/src/notification/pagerduty.ts @@ -6,26 +6,26 @@ import {config} from '../config'; const pd = new PDClient(''); export function sendPagerDutyNotification(link: Link, store: Store) { - if (config.notifications.pagerduty.integrationKey) { - logger.debug('↗ sending pagerduty message'); - const links = [{href: link.url, text: 'Visit Store'}]; - if (link.cartUrl) { - links.push({ - href: link.cartUrl, - text: 'Add to Cart' - }); - } + if (config.notifications.pagerduty.integrationKey) { + logger.debug('↗ sending pagerduty message'); + const links = [{href: link.url, text: 'Visit Store'}]; + if (link.cartUrl) { + links.push({ + href: link.cartUrl, + text: 'Add to Cart', + }); + } - pd.events.sendEvent({ - dedup_key: link.url, - event_action: 'trigger', - payload: { - links, - severity: config.notifications.pagerduty.severity, - source: store.name, - summary: Print.inStock(link, store) - }, - routing_key: config.notifications.pagerduty.integrationKey - }); - } + pd.events.sendEvent({ + dedup_key: link.url, + event_action: 'trigger', + payload: { + links, + severity: config.notifications.pagerduty.severity, + source: store.name, + summary: Print.inStock(link, store), + }, + routing_key: config.notifications.pagerduty.integrationKey, + }); + } } diff --git a/src/notification/philips-hue.ts b/src/notification/philips-hue.ts index ec42e39591..7ca62b82b8 100644 --- a/src/notification/philips-hue.ts +++ b/src/notification/philips-hue.ts @@ -5,135 +5,123 @@ import {logger} from '../logger'; const {LightState} = hueAPI.lightStates; const { - apiKey, - bridgeIp, - lightIds, - lightColor, - lightPattern, - clientId, - clientSecret, - accessToken, - refreshToken, - remoteApiUsername + apiKey, + bridgeIp, + lightIds, + lightColor, + lightPattern, + clientId, + clientSecret, + accessToken, + refreshToken, + remoteApiUsername, } = config.notifications.philips_hue; // Default Light State const lightState = new LightState() - .on(true) - .brightness(100) - .rgb(46.27, 72.55, 0); + .on(true) + .brightness(100) + .rgb(46.27, 72.55, 0); const adjustLightsWithAPI = (hueBridge: Api) => { - logger.debug('Connected to Philips Hue bridge.'); - // Set the custom light state (COLOR and METHOD here) - if (lightColor) { - const rgbArray = lightColor.split(','); - // If there's not three values, must not be RGB - if (rgbArray.length === 3) { - lightState.rgb(rgbArray[0], rgbArray[1], rgbArray[2]); - } else { - logger.debug('✖ Error assigning RGB Values'); - } - } + logger.debug('Connected to Philips Hue bridge.'); + // Set the custom light state (COLOR and METHOD here) + if (lightColor) { + const rgbArray = lightColor.split(','); + // If there's not three values, must not be RGB + if (rgbArray.length === 3) { + lightState.rgb(rgbArray[0], rgbArray[1], rgbArray[2]); + } else { + logger.debug('✖ Error assigning RGB Values'); + } + } - // If blink is specified, then blink the lights - if (lightPattern === 'blink') { - lightState.alertLong(); - } + // If blink is specified, then blink the lights + if (lightPattern === 'blink') { + lightState.alertLong(); + } - // If we've been given light IDs, then only adjust those IDs - if (lightIds) { - const arrayOfIDs = lightIds.split(','); - arrayOfIDs.forEach((light) => { - logger.debug('adjusting specified lights'); - (hueBridge.lights.setLightState( - light, - lightState - ) as Promise).catch((error: Error) => { - logger.error('Failed to adjust specified lights.'); - logger.error(error); - throw error; - }); - }); - } else { - // Adjust all light IDs - hueBridge.lights - .getAll() - .then((allLights: any[]) => { - allLights.forEach((light: any) => { - logger.debug('adjusting all hue lights'); - (hueBridge.lights.setLightState( - light, - lightState - ) as Promise).catch((error: Error) => { - logger.error('Failed to adjust all lights.'); - logger.error(error); - throw error; - }); - }); - }) - .catch((error: Error) => { - logger.error('Failed to get all lights.'); - logger.error(error); - throw error; - }); - } + // If we've been given light IDs, then only adjust those IDs + if (lightIds) { + const arrayOfIDs = lightIds.split(','); + arrayOfIDs.forEach(light => { + logger.debug('adjusting specified lights'); + (hueBridge.lights.setLightState(light, lightState) as Promise).catch( + (error: Error) => { + logger.error('Failed to adjust specified lights.'); + logger.error(error); + throw error; + } + ); + }); + } else { + // Adjust all light IDs + hueBridge.lights + .getAll() + .then((allLights: any[]) => { + allLights.forEach((light: any) => { + logger.debug('adjusting all hue lights'); + (hueBridge.lights.setLightState( + light, + lightState + ) as Promise).catch((error: Error) => { + logger.error('Failed to adjust all lights.'); + logger.error(error); + throw error; + }); + }); + }) + .catch((error: Error) => { + logger.error('Failed to get all lights.'); + logger.error(error); + throw error; + }); + } }; export function adjustPhilipsHueLights() { - // Check if the required variables have been set - if (apiKey && bridgeIp) { - logger.info('↗ adjusting Philips Hue lights over LAN'); - (async () => { - logger.debug( - 'Attempting to connect to Philips Hue bridge at ' + bridgeIp - ); - hueAPI.api - .createLocal(bridgeIp) - .connect(apiKey) - .then( - (hueBridge) => { - adjustLightsWithAPI(hueBridge); - logger.info('✔ adjusted Philips Hue lights over LAN'); - }, - (error: Error) => { - logger.error("✖ couldn't adjust hue lights.", error); - } - ); - })(); - } else if (apiKey && clientId && clientSecret) { - logger.info('↗ adjusting Philips Hue lights over cloud'); - (async () => { - logger.debug( - 'Attempting to connect to Philips Hue bridge over cloud' - ); - const remoteBootstrap = hueAPI.api.createRemote( - clientId, - clientSecret - ); - if (accessToken && refreshToken) { - remoteBootstrap - .connectWithTokens( - accessToken, - refreshToken, - remoteApiUsername - ) - .then( - (hueBridge) => { - adjustLightsWithAPI(hueBridge); - logger.info( - '✔ adjusted Philips Hue lights over cloud' - ); - }, - (error: Error) => { - logger.error( - 'Failed to get a remote Philips Hue connection using supplied tokens.' - ); - logger.error(error); - throw error; - } - ); - } - })(); - } + // Check if the required variables have been set + if (apiKey && bridgeIp) { + logger.info('↗ adjusting Philips Hue lights over LAN'); + (async () => { + logger.debug( + 'Attempting to connect to Philips Hue bridge at ' + bridgeIp + ); + hueAPI.api + .createLocal(bridgeIp) + .connect(apiKey) + .then( + hueBridge => { + adjustLightsWithAPI(hueBridge); + logger.info('✔ adjusted Philips Hue lights over LAN'); + }, + (error: Error) => { + logger.error("✖ couldn't adjust hue lights.", error); + } + ); + })(); + } else if (apiKey && clientId && clientSecret) { + logger.info('↗ adjusting Philips Hue lights over cloud'); + (async () => { + logger.debug('Attempting to connect to Philips Hue bridge over cloud'); + const remoteBootstrap = hueAPI.api.createRemote(clientId, clientSecret); + if (accessToken && refreshToken) { + remoteBootstrap + .connectWithTokens(accessToken, refreshToken, remoteApiUsername) + .then( + hueBridge => { + adjustLightsWithAPI(hueBridge); + logger.info('✔ adjusted Philips Hue lights over cloud'); + }, + (error: Error) => { + logger.error( + 'Failed to get a remote Philips Hue connection using supplied tokens.' + ); + logger.error(error); + throw error; + } + ); + } + })(); + } } diff --git a/src/notification/pushbullet.ts b/src/notification/pushbullet.ts index b4713f6e18..5b68a14f77 100644 --- a/src/notification/pushbullet.ts +++ b/src/notification/pushbullet.ts @@ -6,22 +6,22 @@ import {config} from '../config'; const {pushbullet} = config.notifications; export function sendPushbulletNotification(link: Link, store: Store) { - if (pushbullet) { - logger.debug('↗ sending pushbullet message'); + if (pushbullet) { + logger.debug('↗ sending pushbullet message'); - const pusher = new PushBullet(pushbullet); + const pusher = new PushBullet(pushbullet); - pusher.note( - {}, - Print.inStock(link, store), - link.cartUrl ? link.cartUrl : link.url, - (error: Error) => { - if (error) { - logger.error("✖ couldn't send pushbullet message", error); - } else { - logger.info('✔ pushbullet message sent'); - } - } - ); - } + pusher.note( + {}, + Print.inStock(link, store), + link.cartUrl ? link.cartUrl : link.url, + (error: Error) => { + if (error) { + logger.error("✖ couldn't send pushbullet message", error); + } else { + logger.info('✔ pushbullet message sent'); + } + } + ); + } } diff --git a/src/notification/pushover.ts b/src/notification/pushover.ts index ac8b16e1b5..467bcbfd92 100644 --- a/src/notification/pushover.ts +++ b/src/notification/pushover.ts @@ -6,37 +6,37 @@ import {config} from '../config'; const {pushover} = config.notifications; export function sendPushoverNotification(link: Link, store: Store) { - if (pushover.token && pushover.username) { - logger.debug('↗ sending pushover message'); + if (pushover.token && pushover.username) { + logger.debug('↗ sending pushover message'); - const push = new Push({ - token: pushover.token, - user: pushover.username - }); + const push = new Push({ + token: pushover.token, + user: pushover.username, + }); - const message: PushoverMessage = - pushover.priority < 2 - ? { - message: link.cartUrl ? link.cartUrl : link.url, - priority: pushover.priority, - title: Print.inStock(link, store), - ...(link.screenshot && {file: `./${link.screenshot}`}) - } - : { - expire: pushover.expire, - message: link.cartUrl ? link.cartUrl : link.url, - priority: pushover.priority, - retry: pushover.retry, - title: Print.inStock(link, store), - ...(link.screenshot && {file: `./${link.screenshot}`}) - }; + const message: PushoverMessage = + pushover.priority < 2 + ? { + message: link.cartUrl ? link.cartUrl : link.url, + priority: pushover.priority, + title: Print.inStock(link, store), + ...(link.screenshot && {file: `./${link.screenshot}`}), + } + : { + expire: pushover.expire, + message: link.cartUrl ? link.cartUrl : link.url, + priority: pushover.priority, + retry: pushover.retry, + title: Print.inStock(link, store), + ...(link.screenshot && {file: `./${link.screenshot}`}), + }; - push.send(message, (error: Error) => { - if (error) { - logger.error("✖ couldn't send pushover message", error); - } else { - logger.info('✔ pushover message sent'); - } - }); - } + push.send(message, (error: Error) => { + if (error) { + logger.error("✖ couldn't send pushover message", error); + } else { + logger.info('✔ pushover message sent'); + } + }); + } } diff --git a/src/notification/redis.ts b/src/notification/redis.ts index b630a2960d..b338abfac3 100644 --- a/src/notification/redis.ts +++ b/src/notification/redis.ts @@ -7,39 +7,39 @@ const {url} = config.notifications.redis; let client: RedisClient; function initRedis(): RedisClient | null { - if (url) { - client = redis.createClient({url}); - } + if (url) { + client = redis.createClient({url}); + } - return null; + return null; } export function updateRedis(link: Link, store: Store) { - try { - if (client) { - const key = `${store.name}:${link.brand}:${link.model}` - .split(' ') - .join('-'); - - const value = { - ...link, - labels: store.labels, - links: store.links, - name: store.name, - updatedAt: new Date().toUTCString() - }; - - const redisUpdated = client.set(key, JSON.stringify(value)); - - if (redisUpdated) { - logger.info('✔ redis updated'); - } else { - logger.error(`✖ couldn't update redis for key (${key})`); - } - } - } catch (error: unknown) { - logger.error("✖ couldn't update redis", error); - } + try { + if (client) { + const key = `${store.name}:${link.brand}:${link.model}` + .split(' ') + .join('-'); + + const value = { + ...link, + labels: store.labels, + links: store.links, + name: store.name, + updatedAt: new Date().toUTCString(), + }; + + const redisUpdated = client.set(key, JSON.stringify(value)); + + if (redisUpdated) { + logger.info('✔ redis updated'); + } else { + logger.error(`✖ couldn't update redis for key (${key})`); + } + } + } catch (error: unknown) { + logger.error("✖ couldn't update redis", error); + } } initRedis(); diff --git a/src/notification/slack.ts b/src/notification/slack.ts index 6c35f014a5..df600763f7 100644 --- a/src/notification/slack.ts +++ b/src/notification/slack.ts @@ -7,27 +7,27 @@ const {channel, token} = config.notifications.slack; const web = new WebClient(token); export function sendSlackMessage(link: Link, store: Store) { - if (channel && token) { - logger.debug('↗ sending slack message'); + if (channel && token) { + logger.debug('↗ sending slack message'); - (async () => { - const givenUrl = link.cartUrl ? link.cartUrl : link.url; + (async () => { + const givenUrl = link.cartUrl ? link.cartUrl : link.url; - try { - const result = await web.chat.postMessage({ - channel: channel.replace('#', ''), - text: `${Print.inStock(link, store)}\n${givenUrl}` - }); + try { + const result = await web.chat.postMessage({ + channel: channel.replace('#', ''), + text: `${Print.inStock(link, store)}\n${givenUrl}`, + }); - if (!result.ok) { - logger.error("✖ couldn't send slack message", result); - return; - } + if (!result.ok) { + logger.error("✖ couldn't send slack message", result); + return; + } - logger.info('✔ slack message sent'); - } catch (error: unknown) { - logger.error("✖ couldn't send slack message", error); - } - })(); - } + logger.info('✔ slack message sent'); + } catch (error: unknown) { + logger.error("✖ couldn't send slack message", error); + } + })(); + } } diff --git a/src/notification/sms.ts b/src/notification/sms.ts index cd0adb083a..eaa44f845f 100644 --- a/src/notification/sms.ts +++ b/src/notification/sms.ts @@ -7,72 +7,74 @@ import {transporter} from './email'; const {email, phone} = config.notifications; if (phone.number.length > 0 && (!email.username || !email.password)) { - logger.warn( - '✖ in order to receive sms alerts, email notifications must also be configured' - ); + logger.warn( + '✖ in order to receive sms alerts, email notifications must also be configured' + ); } if (phone.carrier.length !== phone.number.length) { - logger.warn( - '✖ the number of carriers must match the number of phone numbers', - {carrier: phone.carrier, number: phone.number} - ); + logger.warn( + '✖ the number of carriers must match the number of phone numbers', + {carrier: phone.carrier, number: phone.number} + ); } export function sendSms(link: Link, store: Store) { - for ( - let i = 0; - i < Math.max(phone.number.length, phone.carrier.length); - i++ - ) { - const currentNumber = phone.number[i]; - const currentCarrier = phone.carrier[i]; + for ( + let i = 0; + i < Math.max(phone.number.length, phone.carrier.length); + i++ + ) { + const currentNumber = phone.number[i]; + const currentCarrier = phone.carrier[i]; - if (!currentNumber) { - logger.error(`✖ ${currentCarrier} is not associated with a number`); - continue; - } else if (!currentCarrier) { - logger.error(`✖ ${currentNumber} is not associated with a carrier`); - continue; - } + if (!currentNumber) { + logger.error(`✖ ${currentCarrier} is not associated with a number`); + continue; + } else if (!currentCarrier) { + logger.error(`✖ ${currentNumber} is not associated with a carrier`); + continue; + } - if (!phone.availableCarriers.has(currentCarrier)) { - logger.error(`✖ unknown carrier ${currentCarrier}`); - continue; - } + if (!phone.availableCarriers.has(currentCarrier)) { + logger.error(`✖ unknown carrier ${currentCarrier}`); + continue; + } - logger.debug('↗ sending sms'); + logger.debug('↗ sending sms'); - const mailOptions: Mail.Options = { - attachments: link.screenshot - ? [ - { - filename: link.screenshot, - path: `./${link.screenshot}` - } - ] - : undefined, - from: email.username, - subject: Print.inStock(link, store, false, true), - text: link.cartUrl ? link.cartUrl : link.url, - to: generateAddress(currentNumber, currentCarrier) - }; + const mailOptions: Mail.Options = { + attachments: link.screenshot + ? [ + { + filename: link.screenshot, + path: `./${link.screenshot}`, + }, + ] + : undefined, + from: email.username, + subject: Print.inStock(link, store, false, true), + text: link.cartUrl ? link.cartUrl : link.url, + to: generateAddress(currentNumber, currentCarrier), + }; - transporter.sendMail(mailOptions, (error) => { - if (error) { - logger.error( - `✖ couldn't send sms to ${currentNumber} for carrier ${currentCarrier}`, - error - ); - } else { - logger.info('✔ sms sent'); - } - }); - } + transporter.sendMail(mailOptions, error => { + if (error) { + logger.error( + `✖ couldn't send sms to ${currentNumber} for carrier ${currentCarrier}`, + error + ); + } else { + logger.info('✔ sms sent'); + } + }); + } } -function generateAddress(number: string, carrier: string) { - if (carrier && phone.availableCarriers.has(carrier)) { - return [number, phone.availableCarriers.get(carrier)].join('@'); - } +function generateAddress(number: string, carrier: string): string { + if (carrier && phone.availableCarriers.has(carrier)) { + return [number, phone.availableCarriers.get(carrier)].join('@'); + } + + return ''; } diff --git a/src/notification/sound.ts b/src/notification/sound.ts index 4bbe9bb2c1..da1c9f2d57 100644 --- a/src/notification/sound.ts +++ b/src/notification/sound.ts @@ -6,41 +6,35 @@ import {logger} from '../logger'; let player: PlaySound; if (config.notifications.playSound) { - player = config.notifications.soundPlayer - ? playerLib({players: [config.notifications.soundPlayer]}) - : playerLib(); + player = config.notifications.soundPlayer + ? playerLib({players: [config.notifications.soundPlayer]}) + : playerLib(); - if (player.player === null) { - logger.warn("✖ couldn't find sound player"); - } else { - const playerName = player.player; - logger.info(`✔ sound player found: ${playerName}`); - } + if (player.player === null) { + logger.warn("✖ couldn't find sound player"); + } else { + const playerName = player.player; + logger.info(`✔ sound player found: ${playerName}`); + } } export function playSound() { - if (config.notifications.playSound && player.player !== null) { - logger.debug('↗ playing sound'); + if (config.notifications.playSound && player.player !== null) { + logger.debug('↗ playing sound'); - fs.access( - config.notifications.playSound, - fs.constants.F_OK, - (error) => { - if (error) { - logger.error( - `✖ error opening sound file: ${error.message}` - ); - return; - } + fs.access(config.notifications.playSound, fs.constants.F_OK, error => { + if (error) { + logger.error(`✖ error opening sound file: ${error.message}`); + return; + } - player.play(config.notifications.playSound, (error: Error) => { - if (error) { - logger.error("✖ couldn't play sound", error); - } + player.play(config.notifications.playSound, (error: Error) => { + if (error) { + logger.error("✖ couldn't play sound", error); + } - logger.info('✔ played sound'); - }); - } - ); - } + logger.info('✔ played sound'); + }); + }); + } } diff --git a/src/notification/telegram.ts b/src/notification/telegram.ts index 27a0ccb327..9d8b5a25a0 100644 --- a/src/notification/telegram.ts +++ b/src/notification/telegram.ts @@ -6,32 +6,32 @@ import {config} from '../config'; const {telegram} = config.notifications; const client = new TelegramClient({ - accessToken: telegram.accessToken + accessToken: telegram.accessToken, }); export function sendTelegramMessage(link: Link, store: Store) { - if (telegram.accessToken && telegram.chatId) { - logger.debug('↗ sending telegram message'); + if (telegram.accessToken && telegram.chatId) { + logger.debug('↗ sending telegram message'); - (async () => { - const message = Print.productInStock(link); - const results = []; + (async () => { + const message = Print.productInStock(link); + const results = []; - for (const chatId of telegram.chatId) { - try { - results.push( - client.sendMessage( - chatId, - `${Print.inStock(link, store)}\n${message}` - ) - ); - logger.info('✔ telegram message sent'); - } catch (error: unknown) { - logger.error("✖ couldn't send telegram message", error); - } - } + for (const chatId of telegram.chatId) { + try { + results.push( + client.sendMessage( + chatId, + `${Print.inStock(link, store)}\n${message}` + ) + ); + logger.info('✔ telegram message sent'); + } catch (error: unknown) { + logger.error("✖ couldn't send telegram message", error); + } + } - await Promise.all(results); - })(); - } + await Promise.all(results); + })(); + } } diff --git a/src/notification/twilio.ts b/src/notification/twilio.ts index 30e0fc86b1..95f6d50a9f 100644 --- a/src/notification/twilio.ts +++ b/src/notification/twilio.ts @@ -7,34 +7,34 @@ const {twilio} = config.notifications; let client: Twilio; if (twilio.accountSid && twilio.authToken) { - client = new Twilio(twilio.accountSid, twilio.authToken); + client = new Twilio(twilio.accountSid, twilio.authToken); } export function sendTwilioMessage(link: Link, store: Store) { - if (client) { - logger.debug('↗ sending twilio message'); + if (client) { + logger.debug('↗ sending twilio message'); - (async () => { - const givenUrl = link.cartUrl ? link.cartUrl : link.url; - const message = `${Print.inStock(link, store)}\n${givenUrl}`; - const numbers = twilio.to.split(','); - const results = []; - for (const number of numbers) { - try { - results.push( - client.messages.create({ - body: message, - from: twilio.from, - to: number - }) - ); - logger.info('✔ twilio message sent'); - } catch (error: unknown) { - logger.error("✖ couldn't send twilio message", error); - } - } + (async () => { + const givenUrl = link.cartUrl ? link.cartUrl : link.url; + const message = `${Print.inStock(link, store)}\n${givenUrl}`; + const numbers = twilio.to.split(','); + const results = []; + for (const number of numbers) { + try { + results.push( + client.messages.create({ + body: message, + from: twilio.from, + to: number, + }) + ); + logger.info('✔ twilio message sent'); + } catch (error: unknown) { + logger.error("✖ couldn't send twilio message", error); + } + } - await Promise.all(results); - })(); - } + await Promise.all(results); + })(); + } } diff --git a/src/notification/twitch.ts b/src/notification/twitch.ts index b5100578e2..27faa963af 100644 --- a/src/notification/twitch.ts +++ b/src/notification/twitch.ts @@ -11,95 +11,91 @@ const messages: string[] = []; let alreadySaying = false; let tokenData = { - accessToken: twitch.accessToken, - expiryTimestamp: 0, - refreshToken: twitch.refreshToken + accessToken: twitch.accessToken, + expiryTimestamp: 0, + refreshToken: twitch.refreshToken, }; if (existsSync('./twitch.json')) { - tokenData = { - ...JSON.parse(readFileSync('./twitch.json', 'utf-8')), - ...tokenData - }; + tokenData = { + ...JSON.parse(readFileSync('./twitch.json', 'utf-8')), + ...tokenData, + }; } const chatClient: ChatClient = new ChatClient( - new RefreshableAuthProvider( - new StaticAuthProvider(twitch.clientId, tokenData.accessToken), - { - clientSecret: twitch.clientSecret, - expiry: - tokenData.expiryTimestamp === null - ? null - : new Date(tokenData.expiryTimestamp), - onRefresh: async ({accessToken, refreshToken, expiryDate}) => { - return promises.writeFile( - './twitch.json', - JSON.stringify( - { - accessToken, - expiryTimestamp: - expiryDate === null - ? null - : expiryDate.getTime(), - refreshToken - }, - null, - 4 - ), - 'utf-8' - ); - }, - refreshToken: tokenData.refreshToken - } - ), - { - channels: [twitch.channel] - } + new RefreshableAuthProvider( + new StaticAuthProvider(twitch.clientId, tokenData.accessToken), + { + clientSecret: twitch.clientSecret, + expiry: + tokenData.expiryTimestamp === null + ? null + : new Date(tokenData.expiryTimestamp), + onRefresh: async ({accessToken, refreshToken, expiryDate}) => { + return promises.writeFile( + './twitch.json', + JSON.stringify( + { + accessToken, + expiryTimestamp: + expiryDate === null ? null : expiryDate.getTime(), + refreshToken, + }, + null, + 4 + ), + 'utf-8' + ); + }, + refreshToken: tokenData.refreshToken, + } + ), + { + channels: [twitch.channel], + } ); chatClient.onJoin((channel: string, user: string) => { - if (channel === `#${twitch.channel}` && user === chatClient.currentNick) { - while (messages.length) { - const message: string | undefined = messages.shift(); + if (channel === `#${twitch.channel}` && user === chatClient.currentNick) { + while (messages.length) { + const message: string | undefined = messages.shift(); - if (message !== undefined) { - try { - void chatClient.say(channel, message); - logger.info('✔ twitch message sent'); - } catch (error: unknown) { - logger.error("✖ couldn't send twitch message", error); - } - } - } - } + if (message !== undefined) { + try { + void chatClient.say(channel, message); + logger.info('✔ twitch message sent'); + } catch (error: unknown) { + logger.error("✖ couldn't send twitch message", error); + } + } + } + } - void chatClient.quit(); + void chatClient.quit(); }); chatClient.onDisconnect(() => { - alreadySaying = false; + alreadySaying = false; }); export function sendTwitchMessage(link: Link, store: Store) { - if ( - tokenData.accessToken && - twitch.channel && - twitch.clientId && - twitch.clientSecret && - tokenData.refreshToken - ) { - logger.debug('↗ sending twitch message'); + if ( + tokenData.accessToken && + twitch.channel && + twitch.clientId && + twitch.clientSecret && + tokenData.refreshToken + ) { + logger.debug('↗ sending twitch message'); - messages.push( - `${Print.inStock(link, store)}\n${ - link.cartUrl ? link.cartUrl : link.url - }` - ); + messages.push( + `${Print.inStock(link, store)}\n${link.cartUrl ? link.cartUrl : link.url}` + ); - if (!alreadySaying) { - alreadySaying = true; - void chatClient.connect(); - } - } + if (!alreadySaying) { + alreadySaying = true; + void chatClient.connect(); + } + } } diff --git a/src/notification/twitter.ts b/src/notification/twitter.ts index 05f20d24a6..22b6d90b1b 100644 --- a/src/notification/twitter.ts +++ b/src/notification/twitter.ts @@ -6,35 +6,35 @@ import {config} from '../config'; const {twitter} = config.notifications; const client = new Twitter({ - access_token_key: twitter.accessTokenKey, - access_token_secret: twitter.accessTokenSecret, - consumer_key: twitter.consumerKey, - consumer_secret: twitter.consumerSecret + access_token_key: twitter.accessTokenKey, + access_token_secret: twitter.accessTokenSecret, + consumer_key: twitter.consumerKey, + consumer_secret: twitter.consumerSecret, }); export function sendTweet(link: Link, store: Store) { - if ( - twitter.accessTokenKey && - twitter.accessTokenSecret && - twitter.consumerKey && - twitter.consumerSecret - ) { - logger.debug('↗ sending twitter message'); + if ( + twitter.accessTokenKey && + twitter.accessTokenSecret && + twitter.consumerKey && + twitter.consumerSecret + ) { + logger.debug('↗ sending twitter message'); - let status = `${Print.inStock(link, store)}\n${ - link.cartUrl ? link.cartUrl : link.url - }`; + let status = `${Print.inStock(link, store)}\n${ + link.cartUrl ? link.cartUrl : link.url + }`; - if (twitter.tweetTags) { - status += `\n\n${twitter.tweetTags}`; - } + if (twitter.tweetTags) { + status += `\n\n${twitter.tweetTags}`; + } - client.post('statuses/update', {status}, (error) => { - if (error) { - logger.error("✖ couldn't send twitter notification", error); - } else { - logger.info('✔ twitter notification sent'); - } - }); - } + client.post('statuses/update', {status}, error => { + if (error) { + logger.error("✖ couldn't send twitter notification", error); + } else { + logger.info('✔ twitter notification sent'); + } + }); + } } diff --git a/src/store/fetch-links.ts b/src/store/fetch-links.ts index 04e7e64a6f..039c3f8536 100644 --- a/src/store/fetch-links.ts +++ b/src/store/fetch-links.ts @@ -6,77 +6,64 @@ import {filterSeries} from './filter'; import {usingResponse} from '../util'; function addNewLinks(store: Store, links: Link[], series: Series) { - if (links.length === 0) { - logger.debug( - Print.message('NO STORE LINKS FOUND', series, store, true) - ); - - return; - } - - const existingUrls = new Set(store.links.map((link) => link.url)); - const newLinks = links.filter((link) => !existingUrls.has(link.url)); - - if (newLinks.length === 0) { - return; - } - - logger.debug( - Print.message( - `FOUND ${newLinks.length} STORE LINKS`, - series, - store, - true - ) - ); - logger.debug(JSON.stringify(newLinks, null, 2)); - - store.links = store.links.concat(newLinks); + if (links.length === 0) { + logger.debug(Print.message('NO STORE LINKS FOUND', series, store, true)); + + return; + } + + const existingUrls = new Set(store.links.map(link => link.url)); + const newLinks = links.filter(link => !existingUrls.has(link.url)); + + if (newLinks.length === 0) { + return; + } + + logger.debug( + Print.message(`FOUND ${newLinks.length} STORE LINKS`, series, store, true) + ); + logger.debug(JSON.stringify(newLinks, null, 2)); + + store.links = store.links.concat(newLinks); } export async function fetchLinks(store: Store, browser: Browser) { - if (!store.linksBuilder) { - return; - } - - const promises: Array> = []; - - for (let {series, url} of store.linksBuilder.urls) { - if (!filterSeries(series)) { - continue; - } - - logger.debug( - Print.message('DETECTING STORE LINKS', series, store, true) - ); - - if (!Array.isArray(url)) { - url = [url]; - } - - url.map((x) => - promises.push( - usingResponse(browser, x, async (response) => { - const text = await response?.text(); - - if (!text) { - logger.error( - Print.message('NO RESPONSE', series, store, true) - ); - return; - } - - const docElement = cheerio.load(text).root(); - const links = store.linksBuilder!.builder( - docElement, - series - ); - - addNewLinks(store, links, series); - }) - ) - ); - } - - await Promise.all(promises); + if (!store.linksBuilder) { + return; + } + + const promises: Array> = []; + + // eslint-disable-next-line prefer-const + for (let {series, url} of store.linksBuilder.urls) { + if (!filterSeries(series)) { + continue; + } + + logger.debug(Print.message('DETECTING STORE LINKS', series, store, true)); + + if (!Array.isArray(url)) { + url = [url]; + } + + url.map(x => + promises.push( + usingResponse(browser, x, async response => { + const text = await response?.text(); + + if (!text) { + logger.error(Print.message('NO RESPONSE', series, store, true)); + return; + } + + const docElement = cheerio.load(text).root(); + const links = store.linksBuilder!.builder(docElement, series); + + addNewLinks(store, links, series); + }) + ) + ); + } + + await Promise.all(promises); } diff --git a/src/store/filter.ts b/src/store/filter.ts index 83002ca20c..df86b8bc4b 100644 --- a/src/store/filter.ts +++ b/src/store/filter.ts @@ -7,11 +7,11 @@ import {config} from '../config'; * @param brand The brand of the GPU */ function filterBrand(brand: Link['brand']): boolean { - if (config.store.showOnlyBrands.length === 0) { - return true; - } + if (config.store.showOnlyBrands.length === 0) { + return true; + } - return config.store.showOnlyBrands.includes(brand); + return config.store.showOnlyBrands.includes(brand); } /** @@ -21,31 +21,28 @@ function filterBrand(brand: Link['brand']): boolean { * @param series The series of the GPU */ function filterModel(model: Link['model'], series: Link['series']): boolean { - if (config.store.showOnlyModels.length === 0) { - return true; - } + if (config.store.showOnlyModels.length === 0) { + return true; + } - const sanitizedModel = model.replace(/\s/g, ''); - const sanitizedSeries = series.replace(/\s/g, ''); - for (const configModelEntry of config.store.showOnlyModels) { - const sanitizedConfigModel = configModelEntry.name.replace(/\s/g, ''); - const sanitizedConfigSeries = configModelEntry.series.replace( - /\s/g, - '' - ); - if (sanitizedConfigSeries) { - if ( - sanitizedSeries === sanitizedConfigSeries && - sanitizedModel === sanitizedConfigModel - ) { - return true; - } - } else if (sanitizedModel === sanitizedConfigModel) { - return true; - } - } + const sanitizedModel = model.replace(/\s/g, ''); + const sanitizedSeries = series.replace(/\s/g, ''); + for (const configModelEntry of config.store.showOnlyModels) { + const sanitizedConfigModel = configModelEntry.name.replace(/\s/g, ''); + const sanitizedConfigSeries = configModelEntry.series.replace(/\s/g, ''); + if (sanitizedConfigSeries) { + if ( + sanitizedSeries === sanitizedConfigSeries && + sanitizedModel === sanitizedConfigModel + ) { + return true; + } + } else if (sanitizedModel === sanitizedConfigModel) { + return true; + } + } - return false; + return false; } /** @@ -54,11 +51,11 @@ function filterModel(model: Link['model'], series: Link['series']): boolean { * @param series The series of the GPU */ export function filterSeries(series: Link['series']): boolean { - if (config.store.showOnlySeries.length === 0) { - return true; - } + if (config.store.showOnlySeries.length === 0) { + return true; + } - return config.store.showOnlySeries.includes(series); + return config.store.showOnlySeries.includes(series); } /** @@ -67,9 +64,9 @@ export function filterSeries(series: Link['series']): boolean { * @param link The store link of the GPU */ export function filterStoreLink(link: Link): boolean { - return ( - filterBrand(link.brand) && - filterModel(link.model, link.series) && - filterSeries(link.series) - ); + return ( + filterBrand(link.brand) && + filterModel(link.model, link.series) && + filterSeries(link.series) + ); } diff --git a/src/store/includes-labels.ts b/src/store/includes-labels.ts index 9d3b8543aa..4a9c81a9c1 100644 --- a/src/store/includes-labels.ts +++ b/src/store/includes-labels.ts @@ -3,101 +3,101 @@ import {Page} from 'puppeteer'; import {logger} from '../logger'; export type Selector = { - requireVisible: boolean; - selector: string; - type: 'innerHTML' | 'outerHTML' | 'textContent'; + requireVisible: boolean; + selector: string; + type: 'innerHTML' | 'outerHTML' | 'textContent'; }; function isElementArray(query: LabelQuery): query is Element[] { - return ( - Array.isArray(query) && query.length > 0 && typeof query[0] === 'object' - ); + return ( + Array.isArray(query) && query.length > 0 && typeof query[0] === 'object' + ); } function getQueryAsElementArray( - query: LabelQuery, - defaultContainer: string + query: LabelQuery, + defaultContainer: string ): Array> { - if (isElementArray(query)) { - return query.map((x) => ({ - container: x.container ?? defaultContainer, - text: x.text - })); - } - - if (Array.isArray(query)) { - return [ - { - container: defaultContainer, - text: query - } - ]; - } - - return [ - { - container: query.container ?? defaultContainer, - text: query.text - } - ]; + if (isElementArray(query)) { + return query.map(x => ({ + container: x.container ?? defaultContainer, + text: x.text, + })); + } + + if (Array.isArray(query)) { + return [ + { + container: defaultContainer, + text: query, + }, + ]; + } + + return [ + { + container: query.container ?? defaultContainer, + text: query.text, + }, + ]; } export async function pageIncludesLabels( - page: Page, - query: LabelQuery, - options: Selector + page: Page, + query: LabelQuery, + options: Selector ) { - const elementQueries = getQueryAsElementArray(query, options.selector); + const elementQueries = getQueryAsElementArray(query, options.selector); - const resolved = await Promise.all( - elementQueries.map(async (query) => { - const selector = {...options, selector: query.container}; - const contents = (await extractPageContents(page, selector)) ?? ''; + const resolved = await Promise.all( + elementQueries.map(async query => { + const selector = {...options, selector: query.container}; + const contents = (await extractPageContents(page, selector)) ?? ''; - if (!contents) { - return false; - } + if (!contents) { + return false; + } - logger.debug(contents); + logger.debug(contents); - return includesLabels(contents, query.text); - }) - ); + return includesLabels(contents, query.text); + }) + ); - return resolved.includes(true); + return resolved.includes(true); } export async function extractPageContents( - page: Page, - selector: Selector + page: Page, + selector: Selector ): Promise { - return page.evaluate((options: Selector) => { - const element: globalThis.HTMLElement | null = document.querySelector( - options.selector - ); - - if (!element) { - return null; - } - - if ( - options.requireVisible && - !(element.offsetWidth > 0 && element.offsetHeight > 0) - ) { - return null; - } - - switch (options.type) { - case 'innerHTML': - return element.innerHTML; - case 'outerHTML': - return element.outerHTML; - case 'textContent': - return element.textContent; - default: - return 'Error: selector.type is unknown'; - } - }, selector); + return page.evaluate((options: Selector) => { + const element: globalThis.HTMLElement | null = document.querySelector( + options.selector + ); + + if (!element) { + return null; + } + + if ( + options.requireVisible && + !(element.offsetWidth > 0 && element.offsetHeight > 0) + ) { + return null; + } + + switch (options.type) { + case 'innerHTML': + return element.innerHTML; + case 'outerHTML': + return element.outerHTML; + case 'textContent': + return element.textContent; + default: + return 'Error: selector.type is unknown'; + } + }, selector); } /** @@ -107,32 +107,32 @@ export async function extractPageContents( * @param searchLabels Search labels for a match. */ export function includesLabels( - domText: string, - searchLabels: string[] + domText: string, + searchLabels: string[] ): boolean { - const domTextLowerCase = domText.toLowerCase(); - return searchLabels.some((label) => - domTextLowerCase.includes(label.toLowerCase()) - ); + const domTextLowerCase = domText.toLowerCase(); + return searchLabels.some(label => + domTextLowerCase.includes(label.toLowerCase()) + ); } export async function getPrice( - page: Page, - query: Pricing, - options: Selector + page: Page, + query: Pricing, + options: Selector ): Promise { - const selector = {...options, selector: query.container}; - const priceString = await extractPageContents(page, selector); + const selector = {...options, selector: query.container}; + const priceString = await extractPageContents(page, selector); - if (priceString) { - const priceSeparator = query.euroFormat ? /\./g : /,/g; - const price = Number.parseFloat( - priceString.replace(priceSeparator, '').match(/\d+/g)!.join('.') - ); + if (priceString) { + const priceSeparator = query.euroFormat ? /\./g : /,/g; + const price = Number.parseFloat( + priceString.replace(priceSeparator, '').match(/\d+/g)!.join('.') + ); - logger.debug('received price', price); - return price; - } + logger.debug('received price', price); + return price; + } - return null; + return null; } diff --git a/src/store/lookup.ts b/src/store/lookup.ts index 1edc71d75e..569d9e0f7e 100644 --- a/src/store/lookup.ts +++ b/src/store/lookup.ts @@ -1,21 +1,21 @@ import { - Browser, - Page, - PageEventObj, - Request, - RespondOptions, - Response + Browser, + Page, + PageEventObj, + Request, + RespondOptions, + Response, } from 'puppeteer'; import {Link, Store, getStores} from './model'; import {Print, logger} from '../logger'; import {Selector, getPrice, pageIncludesLabels} from './includes-labels'; import { - closePage, - delay, - getRandomUserAgent, - getSleepTime, - isStatusCodeInRange, - noop + closePage, + delay, + getRandomUserAgent, + getSleepTime, + isStatusCodeInRange, + noop, } from '../util'; import {disableBlockerInPage, enableBlockerInPage} from '../adblocker'; import {config} from '../config'; @@ -31,106 +31,114 @@ const inStock: Record = {}; const linkBuilderLastRunTimes: Record = {}; function nextProxy(store: Store) { - if (!store.proxyList) { - return; - } + if (!store.proxyList) { + return; + } - if (store.currentProxyIndex === undefined) { - store.currentProxyIndex = 0; - } + if (store.currentProxyIndex === undefined) { + store.currentProxyIndex = 0; + } - store.currentProxyIndex++; - if (store.currentProxyIndex >= store.proxyList.length) { - store.currentProxyIndex = 0; - } + store.currentProxyIndex++; + if (store.currentProxyIndex >= store.proxyList.length) { + store.currentProxyIndex = 0; + } - logger.info( - `ℹ [${store.name}] Next proxy index: ${store.currentProxyIndex} / Count: ${store.proxyList.length}` - ); + logger.info( + `ℹ [${store.name}] Next proxy index: ${store.currentProxyIndex} / Count: ${store.proxyList.length}` + ); - return store.proxyList[store.currentProxyIndex]; + return store.proxyList[store.currentProxyIndex]; } async function handleLowBandwidth(request: Request) { - if (!config.browser.lowBandwidth) { - return false; - } - - const typ = request.resourceType(); - if (typ === 'font' || typ === 'image') { - try { - await request.abort(); - } catch {} - - return true; - } - - return false; + if (!config.browser.lowBandwidth) { + return false; + } + + const typ = request.resourceType(); + if (typ === 'font' || typ === 'image') { + try { + await request.abort(); + } catch { + logger.debug('Failed to abort request.'); + } + + return true; + } + + return false; } async function handleProxy(request: Request, proxy?: string) { - if (!proxy) { - return false; - } - - try { - await useProxy(request, proxy); - } catch (error: unknown) { - logger.error('handleProxy', error); - try { - await request.abort(); - } catch {} - } - - return true; + if (!proxy) { + return false; + } + + try { + await useProxy(request, proxy); + } catch (error: unknown) { + logger.error('handleProxy', error); + try { + await request.abort(); + } catch { + logger.debug('Failed to abort request.'); + } + } + + return true; } async function handleAdBlock(request: Request, adBlockRequestHandler: any) { - if (!adBlockRequestHandler) { - return false; - } - - return new Promise((resolve) => { - const continueFunc = async () => { - resolve(false); - }; - - const abortFunc = async () => { - try { - await request.abort(); - } catch {} - - resolve(true); - }; - - const respondFunc = async (response: RespondOptions) => { - try { - await request.respond(response); - } catch {} - - resolve(true); - }; - - const requestProxy = new Proxy(request, { - get(target, prop, receiver) { - if (prop === 'continue') { - return continueFunc; - } - - if (prop === 'abort') { - return abortFunc; - } - - if (prop === 'respond') { - return respondFunc; - } - - return Reflect.get(target, prop, receiver); - } - }); - - adBlockRequestHandler(requestProxy); - }); + if (!adBlockRequestHandler) { + return false; + } + + return new Promise(resolve => { + const continueFunc = async () => { + resolve(false); + }; + + const abortFunc = async () => { + try { + await request.abort(); + } catch { + logger.debug('Failed to abort request.'); + } + + resolve(true); + }; + + const respondFunc = async (response: RespondOptions) => { + try { + await request.respond(response); + } catch { + logger.debug('Failed to abort request.'); + } + + resolve(true); + }; + + const requestProxy = new Proxy(request, { + get(target, prop, receiver) { + if (prop === 'continue') { + return continueFunc; + } + + if (prop === 'abort') { + return abortFunc; + } + + if (prop === 'respond') { + return respondFunc; + } + + return Reflect.get(target, prop, receiver); + }, + }); + + adBlockRequestHandler(requestProxy); + }); } /** @@ -142,430 +150,397 @@ async function handleAdBlock(request: Request, adBlockRequestHandler: any) { * @param store Vendor of graphics cards. */ async function lookup(browser: Browser, store: Store) { - if (!getStores().has(store.name)) { - return; - } - - if (store.linksBuilder) { - const lastRunTime = linkBuilderLastRunTimes[store.name] ?? -1; - const ttl = store.linksBuilder.ttl ?? Number.MAX_SAFE_INTEGER; - if (lastRunTime === -1 || Date.now() - lastRunTime > ttl) { - logger.info(`[${store.name}] Running linksBuilder...`); - try { - await fetchLinks(store, browser); - linkBuilderLastRunTimes[store.name] = Date.now(); - } catch (error: unknown) { - logger.error(error); - } - } - } - - /* eslint-disable no-await-in-loop */ - for (const link of store.links) { - if (!filterStoreLink(link)) { - continue; - } - - if (config.page.inStockWaitTime && inStock[link.url]) { - logger.info(Print.inStockWaiting(link, store, true)); - continue; - } - - const proxy = nextProxy(store); - - const useAdBlock = - !config.browser.lowBandwidth && !store.disableAdBlocker; - const customContext = config.browser.isIncognito; - - const context = customContext - ? await browser.createIncognitoBrowserContext() - : browser.defaultBrowserContext(); - const page = await context.newPage(); - await page.setRequestInterception(true); - - page.setDefaultNavigationTimeout(config.page.timeout); - await page.setUserAgent(await getRandomUserAgent()); - - let adBlockRequestHandler: any; - let pageProxy; - if (useAdBlock) { - const onProxyFunc = (event: keyof PageEventObj, handler: any) => { - if (event !== 'request') { - page.on(event, handler); - return; - } - - adBlockRequestHandler = handler; - }; - - pageProxy = new Proxy(page, { - get(target, prop, receiver) { - if (prop === 'on') { - return onProxyFunc; - } - - // Give dummy setRequestInterception to avoid AdBlock from messing with it - if (prop === 'setRequestInterception') { - return noop; - } - - return Reflect.get(target, prop, receiver); - } - }); - await enableBlockerInPage(pageProxy); - } - - await page.setRequestInterception(true); - page.on('request', async (request) => { - if (await handleLowBandwidth(request)) { - return; - } - - if (await handleAdBlock(request, adBlockRequestHandler)) { - return; - } - - if (await handleProxy(request, proxy)) { - return; - } - - try { - await request.continue(); - } catch {} - }); - - if (store.captchaDeterrent) { - await runCaptchaDeterrent(browser, store, page); - } - - let statusCode = 0; - - try { - statusCode = await lookupCard(browser, store, page, link); - } catch (error: unknown) { - logger.error( - `✖ [${store.name}] ${link.brand} ${link.series} ${ - link.model - } - ${(error as Error).message}` - ); - const client = await page.target().createCDPSession(); - await client.send('Network.clearBrowserCookies'); - } - - if (pageProxy) { - await disableBlockerInPage(pageProxy); - } - - // Must apply backoff before closing the page, e.g. if CloudFlare is - // used to detect bot traffic, it introduces a 5 second page delay - // before redirecting to the next page - await processBackoffDelay(store, link, statusCode); - await closePage(page); - if (customContext) { - await context.close(); - } - } - /* eslint-enable no-await-in-loop */ + if (!getStores().has(store.name)) { + return; + } + + if (store.linksBuilder) { + const lastRunTime = linkBuilderLastRunTimes[store.name] ?? -1; + const ttl = store.linksBuilder.ttl ?? Number.MAX_SAFE_INTEGER; + if (lastRunTime === -1 || Date.now() - lastRunTime > ttl) { + logger.info(`[${store.name}] Running linksBuilder...`); + try { + await fetchLinks(store, browser); + linkBuilderLastRunTimes[store.name] = Date.now(); + } catch (error: unknown) { + logger.error(error); + } + } + } + + /* eslint-disable no-await-in-loop */ + for (const link of store.links) { + if (!filterStoreLink(link)) { + continue; + } + + if (config.page.inStockWaitTime && inStock[link.url]) { + logger.info(Print.inStockWaiting(link, store, true)); + continue; + } + + const proxy = nextProxy(store); + + const useAdBlock = !config.browser.lowBandwidth && !store.disableAdBlocker; + const customContext = config.browser.isIncognito; + + const context = customContext + ? await browser.createIncognitoBrowserContext() + : browser.defaultBrowserContext(); + const page = await context.newPage(); + await page.setRequestInterception(true); + + page.setDefaultNavigationTimeout(config.page.timeout); + await page.setUserAgent(await getRandomUserAgent()); + + let adBlockRequestHandler: any; + let pageProxy; + if (useAdBlock) { + const onProxyFunc = (event: keyof PageEventObj, handler: any) => { + if (event !== 'request') { + page.on(event, handler); + return; + } + + adBlockRequestHandler = handler; + }; + + pageProxy = new Proxy(page, { + get(target, prop, receiver) { + if (prop === 'on') { + return onProxyFunc; + } + + // Give dummy setRequestInterception to avoid AdBlock from messing with it + if (prop === 'setRequestInterception') { + return noop; + } + + return Reflect.get(target, prop, receiver); + }, + }); + await enableBlockerInPage(pageProxy); + } + + await page.setRequestInterception(true); + page.on('request', async request => { + if (await handleLowBandwidth(request)) { + return; + } + + if (await handleAdBlock(request, adBlockRequestHandler)) { + return; + } + + if (await handleProxy(request, proxy)) { + return; + } + + try { + await request.continue(); + } catch { + logger.debug('Failed to continue request.'); + } + }); + + if (store.captchaDeterrent) { + await runCaptchaDeterrent(browser, store, page); + } + + let statusCode = 0; + + try { + statusCode = await lookupCard(browser, store, page, link); + } catch (error: unknown) { + logger.error( + `✖ [${store.name}] ${link.brand} ${link.series} ${link.model} - ${ + (error as Error).message + }` + ); + const client = await page.target().createCDPSession(); + await client.send('Network.clearBrowserCookies'); + } + + if (pageProxy) { + await disableBlockerInPage(pageProxy); + } + + // Must apply backoff before closing the page, e.g. if CloudFlare is + // used to detect bot traffic, it introduces a 5 second page delay + // before redirecting to the next page + await processBackoffDelay(store, link, statusCode); + await closePage(page); + if (customContext) { + await context.close(); + } + } + /* eslint-enable no-await-in-loop */ } async function lookupCard( - browser: Browser, - store: Store, - page: Page, - link: Link + browser: Browser, + store: Store, + page: Page, + link: Link ): Promise { - const givenWaitFor = store.waitUntil ? store.waitUntil : 'networkidle0'; - const response: Response | null = await page.goto(link.url, { - waitUntil: givenWaitFor - }); - - const successStatusCodes = store.successStatusCodes ?? [[0, 399]]; - const statusCode = await handleResponse( - browser, - store, - page, - link, - response - ); - - if (!isStatusCodeInRange(statusCode, successStatusCodes)) { - return statusCode; - } - - if (await lookupCardInStock(store, page, link)) { - const givenUrl = - link.cartUrl && config.store.autoAddToCart - ? link.cartUrl - : link.url; - logger.info(`${Print.inStock(link, store, true)}\n${givenUrl}`); - - if (config.browser.open) { - await (link.openCartAction === undefined - ? open(givenUrl) - : link.openCartAction(browser)); - } - - sendNotification(link, store); - - if (config.page.inStockWaitTime) { - inStock[link.url] = true; - - setTimeout(() => { - inStock[link.url] = false; - }, 1000 * config.page.inStockWaitTime); - } - - if (config.page.screenshot) { - logger.debug('ℹ saving screenshot'); - - link.screenshot = `success-${Date.now()}.png`; - await page.screenshot({path: link.screenshot}); - } - } - - return statusCode; + const givenWaitFor = store.waitUntil ? store.waitUntil : 'networkidle0'; + const response: Response | null = await page.goto(link.url, { + waitUntil: givenWaitFor, + }); + + const successStatusCodes = store.successStatusCodes ?? [[0, 399]]; + const statusCode = await handleResponse(browser, store, page, link, response); + + if (!isStatusCodeInRange(statusCode, successStatusCodes)) { + return statusCode; + } + + if (await lookupCardInStock(store, page, link)) { + const givenUrl = + link.cartUrl && config.store.autoAddToCart ? link.cartUrl : link.url; + logger.info(`${Print.inStock(link, store, true)}\n${givenUrl}`); + + if (config.browser.open) { + await (link.openCartAction === undefined + ? open(givenUrl) + : link.openCartAction(browser)); + } + + sendNotification(link, store); + + if (config.page.inStockWaitTime) { + inStock[link.url] = true; + + setTimeout(() => { + inStock[link.url] = false; + }, 1000 * config.page.inStockWaitTime); + } + + if (config.page.screenshot) { + logger.debug('ℹ saving screenshot'); + + link.screenshot = `success-${Date.now()}.png`; + await page.screenshot({path: link.screenshot}); + } + } + + return statusCode; } // eslint-disable-next-line max-params async function handleResponse( - browser: Browser, - store: Store, - page: Page, - link: Link, - response?: Response | null, - recursionDepth = 0 + browser: Browser, + store: Store, + page: Page, + link: Link, + response?: Response | null, + recursionDepth = 0 ) { - if (!response) { - logger.debug(Print.noResponse(link, store, true)); - } - - const successStatusCodes = store.successStatusCodes ?? [[0, 399]]; - let statusCode = response?.status() ?? 0; - if (!isStatusCodeInRange(statusCode, successStatusCodes)) { - if (statusCode === 429) { - logger.warn(Print.rateLimit(link, store, true)); - } else if (statusCode === 503) { - if (await checkIsCloudflare(store, page, link)) { - if (recursionDepth > 4) { - logger.warn(Print.recursionLimit(link, store, true)); - } else { - const response: Response | null = await page.waitForNavigation( - { - waitUntil: 'networkidle0' - } - ); - recursionDepth++; - statusCode = await handleResponse( - browser, - store, - page, - link, - response, - recursionDepth - ); - } - } else { - logger.warn(Print.badStatusCode(link, store, statusCode, true)); - } - } else { - logger.warn(Print.badStatusCode(link, store, statusCode, true)); - } - } - - return statusCode; + if (!response) { + logger.debug(Print.noResponse(link, store, true)); + } + + const successStatusCodes = store.successStatusCodes ?? [[0, 399]]; + let statusCode = response?.status() ?? 0; + if (!isStatusCodeInRange(statusCode, successStatusCodes)) { + if (statusCode === 429) { + logger.warn(Print.rateLimit(link, store, true)); + } else if (statusCode === 503) { + if (await checkIsCloudflare(store, page, link)) { + if (recursionDepth > 4) { + logger.warn(Print.recursionLimit(link, store, true)); + } else { + const response: Response | null = await page.waitForNavigation({ + waitUntil: 'networkidle0', + }); + recursionDepth++; + statusCode = await handleResponse( + browser, + store, + page, + link, + response, + recursionDepth + ); + } + } else { + logger.warn(Print.badStatusCode(link, store, statusCode, true)); + } + } else { + logger.warn(Print.badStatusCode(link, store, statusCode, true)); + } + } + + return statusCode; } async function checkIsCloudflare(store: Store, page: Page, link: Link) { - const baseOptions: Selector = { - requireVisible: true, - selector: 'body', - type: 'textContent' - }; - - const cloudflareLabel = { - container: 'div[class="attribution"] a[rel="noopener noreferrer"]', - text: ['Cloudflare'] - }; - - if (await pageIncludesLabels(page, cloudflareLabel, baseOptions)) { - logger.warn(Print.cloudflare(link, store, true)); - return true; - } - - return false; + const baseOptions: Selector = { + requireVisible: true, + selector: 'body', + type: 'textContent', + }; + + const cloudflareLabel = { + container: 'div[class="attribution"] a[rel="noopener noreferrer"]', + text: ['Cloudflare'], + }; + + if (await pageIncludesLabels(page, cloudflareLabel, baseOptions)) { + logger.warn(Print.cloudflare(link, store, true)); + return true; + } + + return false; } async function lookupCardInStock(store: Store, page: Page, link: Link) { - const baseOptions: Selector = { - requireVisible: false, - selector: store.labels.container ?? 'body', - type: 'textContent' - }; - - if (store.labels.captcha) { - if (await pageIncludesLabels(page, store.labels.captcha, baseOptions)) { - logger.warn(Print.captcha(link, store, true)); - await delay(getSleepTime(store)); - return false; - } - } - - if (store.labels.bannedSeller) { - if ( - await pageIncludesLabels( - page, - store.labels.bannedSeller, - baseOptions - ) - ) { - logger.warn(Print.bannedSeller(link, store, true)); - return false; - } - } - - if (store.labels.outOfStock) { - if ( - await pageIncludesLabels(page, store.labels.outOfStock, baseOptions) - ) { - logger.info(Print.outOfStock(link, store, true)); - return false; - } - } - - if (store.labels.maxPrice) { - const maxPrice = config.store.maxPrice.series[link.series]; - - link.price = await getPrice(page, store.labels.maxPrice, baseOptions); - - if (link.price && link.price > maxPrice && maxPrice > 0) { - logger.info(Print.maxPrice(link, store, maxPrice, true)); - return false; - } - } - - // Fixme: currently causing issues - // Do API inventory validation in realtime (no cache) if available - // if ( - // store.realTimeInventoryLookup !== undefined && - // link.itemNumber !== undefined - // ) { - // return store.realTimeInventoryLookup(link.itemNumber); - // } - - if (store.labels.inStock) { - const options = { - ...baseOptions, - requireVisible: true, - type: 'outerHTML' as const - }; - - if (!(await pageIncludesLabels(page, store.labels.inStock, options))) { - logger.info(Print.outOfStock(link, store, true)); - return false; - } - } - - if (link.labels?.inStock) { - const options = { - ...baseOptions, - requireVisible: true, - type: 'outerHTML' as const - }; - - if (!(await pageIncludesLabels(page, link.labels.inStock, options))) { - logger.info(Print.outOfStock(link, store, true)); - return false; - } - } - - return true; + const baseOptions: Selector = { + requireVisible: false, + selector: store.labels.container ?? 'body', + type: 'textContent', + }; + + if (store.labels.captcha) { + if (await pageIncludesLabels(page, store.labels.captcha, baseOptions)) { + logger.warn(Print.captcha(link, store, true)); + await delay(getSleepTime(store)); + return false; + } + } + + if (store.labels.bannedSeller) { + if ( + await pageIncludesLabels(page, store.labels.bannedSeller, baseOptions) + ) { + logger.warn(Print.bannedSeller(link, store, true)); + return false; + } + } + + if (store.labels.outOfStock) { + if (await pageIncludesLabels(page, store.labels.outOfStock, baseOptions)) { + logger.info(Print.outOfStock(link, store, true)); + return false; + } + } + + if (store.labels.maxPrice) { + const maxPrice = config.store.maxPrice.series[link.series]; + + link.price = await getPrice(page, store.labels.maxPrice, baseOptions); + + if (link.price && link.price > maxPrice && maxPrice > 0) { + logger.info(Print.maxPrice(link, store, maxPrice, true)); + return false; + } + } + + // Fixme: currently causing issues + // Do API inventory validation in realtime (no cache) if available + // if ( + // store.realTimeInventoryLookup !== undefined && + // link.itemNumber !== undefined + // ) { + // return store.realTimeInventoryLookup(link.itemNumber); + // } + + if (store.labels.inStock) { + const options = { + ...baseOptions, + requireVisible: true, + type: 'outerHTML' as const, + }; + + if (!(await pageIncludesLabels(page, store.labels.inStock, options))) { + logger.info(Print.outOfStock(link, store, true)); + return false; + } + } + + if (link.labels?.inStock) { + const options = { + ...baseOptions, + requireVisible: true, + type: 'outerHTML' as const, + }; + + if (!(await pageIncludesLabels(page, link.labels.inStock, options))) { + logger.info(Print.outOfStock(link, store, true)); + return false; + } + } + + return true; } async function runCaptchaDeterrent(browser: Browser, store: Store, page: Page) { - const successStatusCodes = store.successStatusCodes ?? [[0, 399]]; - let statusCode = 0; - let deterrentLinks: string[] = []; - - logger.debug(`[${store.name}] Navigating to random anti-captcha page...`); - - if (store.captchaDeterrent?.hardLinks?.length) { - deterrentLinks = deterrentLinks.concat( - store.captchaDeterrent.hardLinks - ); - } - - if (store.captchaDeterrent?.searchUrl) { - if (store.captchaDeterrent.searchTerms) { - store.captchaDeterrent.searchTerms.forEach((element) => - deterrentLinks.push( - store.captchaDeterrent?.searchUrl - ? store.captchaDeterrent.searchUrl.replace( - '%%s', - element - ) - : '' - ) - ); - } - } - - if (deterrentLinks.length > 0) { - const link: Link = { - brand: 'captcha-deterrent', - model: 'captcha-deterrent', - series: 'captcha-deterrent', - url: - deterrentLinks[ - Math.floor(Math.random() * deterrentLinks.length) - ] - }; - logger.debug(`Selected captcha-deterrent link: ${link.url}`); - - try { - const givenWaitFor = store.waitUntil - ? store.waitUntil - : 'networkidle0'; - const response: Response | null = await page.goto(link.url, { - waitUntil: givenWaitFor - }); - statusCode = await handleResponse( - browser, - store, - page, - link, - response - ); - setTimeout(() => { - // Do nothing - }, 3000); - } catch (error: unknown) { - logger.error(error); - } - - if (!isStatusCodeInRange(statusCode, successStatusCodes)) { - logger.warn( - `✖ [${store.name}] - Failed to navigate to anti-captcha target: ${link.url}` - ); - } - } + const successStatusCodes = store.successStatusCodes ?? [[0, 399]]; + let statusCode = 0; + let deterrentLinks: string[] = []; + + logger.debug(`[${store.name}] Navigating to random anti-captcha page...`); + + if (store.captchaDeterrent?.hardLinks?.length) { + deterrentLinks = deterrentLinks.concat(store.captchaDeterrent.hardLinks); + } + + if (store.captchaDeterrent?.searchUrl) { + if (store.captchaDeterrent.searchTerms) { + store.captchaDeterrent.searchTerms.forEach(element => + deterrentLinks.push( + store.captchaDeterrent?.searchUrl + ? store.captchaDeterrent.searchUrl.replace('%%s', element) + : '' + ) + ); + } + } + + if (deterrentLinks.length > 0) { + const link: Link = { + brand: 'captcha-deterrent', + model: 'captcha-deterrent', + series: 'captcha-deterrent', + url: deterrentLinks[Math.floor(Math.random() * deterrentLinks.length)], + }; + logger.debug(`Selected captcha-deterrent link: ${link.url}`); + + try { + const givenWaitFor = store.waitUntil ? store.waitUntil : 'networkidle0'; + const response: Response | null = await page.goto(link.url, { + waitUntil: givenWaitFor, + }); + statusCode = await handleResponse(browser, store, page, link, response); + setTimeout(() => { + // Do nothing + }, 3000); + } catch (error: unknown) { + logger.error(error); + } + + if (!isStatusCodeInRange(statusCode, successStatusCodes)) { + logger.warn( + `✖ [${store.name}] - Failed to navigate to anti-captcha target: ${link.url}` + ); + } + } } export async function tryLookupAndLoop(browser: Browser, store: Store) { - if (!browser.isConnected()) { - logger.debug( - `[${store.name}] Ending this loop as browser is disposed...` - ); - return; - } - - logger.debug(`[${store.name}] Starting lookup...`); - try { - await lookup(browser, store); - } catch (error: unknown) { - logger.error(error); - } - - const sleepTime = getSleepTime(store); - logger.debug(`[${store.name}] Lookup done, next one in ${sleepTime} ms`); - setTimeout(tryLookupAndLoop, sleepTime, browser, store); + if (!browser.isConnected()) { + logger.debug(`[${store.name}] Ending this loop as browser is disposed...`); + return; + } + + logger.debug(`[${store.name}] Starting lookup...`); + try { + await lookup(browser, store); + } catch (error: unknown) { + logger.error(error); + } + + const sleepTime = getSleepTime(store); + logger.debug(`[${store.name}] Lookup done, next one in ${sleepTime} ms`); + setTimeout(tryLookupAndLoop, sleepTime, browser, store); } diff --git a/src/store/model/acompc.ts b/src/store/model/acompc.ts index 3b9e563e46..4f3c9b691a 100644 --- a/src/store/model/acompc.ts +++ b/src/store/model/acompc.ts @@ -1,234 +1,234 @@ import {Store} from './store'; export const AComPC: Store = { - currency: '€', - labels: { - inStock: { - container: '.filial_stock', - text: ['lagernd', 'im Zulauf'] - }, - maxPrice: { - container: '.price', - euroFormat: true - }, - outOfStock: [ - { - container: '.filial_stock', - text: ['nicht lieferbar'] - } - ] - }, - links: [ - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-ROG-STRIX-RTX3080-10G-GAMING-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-2-x-HDMI-3-x-DisplayPort.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-ROG-STRIX-RTX3080-O10G-GAMING-OC-Edition-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-2-x-HDMI-3-x-DisplayPort.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-TUF-Gaming-GeForce-RTX-3080-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-TUF-Gaming-GeForce-RTX-3080-OC-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-AORUS-GeForce-RTX-3080-MASTER-10G-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-3-x-DisplayPort-3-x-HDMI.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-AORUS-GeForce-RTX-3080-XTREME-10G-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-3-x-DisplayPort-3-x-HDMI.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3080-Eagle-OC-10G-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3080-Eagle-10G-Grafikkarte-10.240-MB.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3080-GAMING-OC-10G-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3080-Vision-OC-10G-Grafikkarten-GF-RTX-3080-10GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DP-weiss.html' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Inno3D-GeForce-RTX-3080-Twin-X2-OC-Grafikkarten-GF-RTX-3080-10-GB-GDDR6-PCIe-4.0-x16-HDMI-3x-DisplayPort.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/MSI-GeForce-RTX-3080-Gaming-X-Trio-10G-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-HDMI-3x-DisplayPort.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/MSI-GeForce-RTX-3080-Ventus-3X-10G-OC-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-HDMI-3x-DisplayPort.html' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ZOTAC-GAMING-GeForce-RTX-3080-AMP-Holo-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-HDMI-3-x-DisplayPort.html' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ZOTAC-GAMING-GeForce-RTX-3080-Trinity-OC-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-HDMI-3-x-DisplayPort.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ZOTAC-GAMING-GeForce-RTX-3080-Trinity-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-HDMI-3x-DisplayPort.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: - 'https://www.acom-pc.de/Peripherie-Zubehoer/noch-nicht-kategorisierte-Artikel/ASUS-ROG-Strix-GeForce-RTX-3090-ROG-STRIX-RTX3090-24G-GAMING-24GB-GDDR6X-2x-HDMI-3x-DP-90YV0F90-M0NM00-.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-ROG-STRIX-RTX3090-O24G-GAMING-OC-Edition-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-2-x-HDMI-3-x-DisplayPort.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-TUF-Gaming-GeForce-RTX-3090-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-TUF-Gaming-GeForce-RTX-3090-OC-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-Aorus-GeForce-RTX-3090-Master-24G-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-HDMI-3x-DisplayPort.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3090-Eagle-OC-24G-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3090-Gaming-OC-24G-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/MSI-RTX-3090-GAMING-X-TRIO-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-HDMI-3x-DisplayPort.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/MSI-GeForce-RTX-3090-Ventus-3X-24G-OC-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-HDMI-3x-DisplayPort.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ZOTAC-GAMING-GeForce-RTX-3090-Trinity-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-HDMI-3x-DisplayPort.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.acom-pc.de/Hardware-Software/CPU-Prozessor-/-CPU-Kuehler-Zubehoer/AMD-CPU/AMD-CPU-Socket-AM4/AMD-RYZEN-5-5600X-4.60GHZ-6-CORE-SKT-AM4-35MB-65W-PIB.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.acom-pc.de/Hardware-Software/CPU-Prozessor-/-CPU-Kuehler-Zubehoer/AMD-CPU/AMD-CPU-Socket-AM4/AMD-RYZEN-7-5800X-4.70GHZ-8-CORE-SKT-AM4-36MB-105W-WOF.html' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.acom-pc.de/Hardware-Software/CPU-Prozessor-/-CPU-Kuehler-Zubehoer/AMD-CPU/AMD-CPU-Socket-AM4/AMD-Ryzen-9-5900X-AMD-Ryzen-9-Socket-AM4-PC-7nm-AMD-3-7-GHz-AM4.html' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.acom-pc.de/Hardware-Software/CPU-Prozessor-/-CPU-Kuehler-Zubehoer/AMD-CPU/AMD-CPU-Socket-AM4/AMD-RYZEN-9-5950X-4.90GHZ-16-CORE-SKT-AM4-72MB-105W-WOF.html' - } - ], - name: 'acompc' + currency: '€', + labels: { + inStock: { + container: '.filial_stock', + text: ['lagernd', 'im Zulauf'], + }, + maxPrice: { + container: '.price', + euroFormat: true, + }, + outOfStock: [ + { + container: '.filial_stock', + text: ['nicht lieferbar'], + }, + ], + }, + links: [ + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-ROG-STRIX-RTX3080-10G-GAMING-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-2-x-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-ROG-STRIX-RTX3080-O10G-GAMING-OC-Edition-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-2-x-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-TUF-Gaming-GeForce-RTX-3080-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-TUF-Gaming-GeForce-RTX-3080-OC-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-AORUS-GeForce-RTX-3080-MASTER-10G-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-3-x-DisplayPort-3-x-HDMI.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-AORUS-GeForce-RTX-3080-XTREME-10G-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-3-x-DisplayPort-3-x-HDMI.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3080-Eagle-OC-10G-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3080-Eagle-10G-Grafikkarte-10.240-MB.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3080-GAMING-OC-10G-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3080-Vision-OC-10G-Grafikkarten-GF-RTX-3080-10GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DP-weiss.html', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Inno3D-GeForce-RTX-3080-Twin-X2-OC-Grafikkarten-GF-RTX-3080-10-GB-GDDR6-PCIe-4.0-x16-HDMI-3x-DisplayPort.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/MSI-GeForce-RTX-3080-Gaming-X-Trio-10G-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-HDMI-3x-DisplayPort.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/MSI-GeForce-RTX-3080-Ventus-3X-10G-OC-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-x16-HDMI-3x-DisplayPort.html', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ZOTAC-GAMING-GeForce-RTX-3080-AMP-Holo-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ZOTAC-GAMING-GeForce-RTX-3080-Trinity-OC-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ZOTAC-GAMING-GeForce-RTX-3080-Trinity-Grafikkarten-GF-RTX-3080-10-GB-GDDR6X-PCIe-4.0-HDMI-3x-DisplayPort.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: + 'https://www.acom-pc.de/Peripherie-Zubehoer/noch-nicht-kategorisierte-Artikel/ASUS-ROG-Strix-GeForce-RTX-3090-ROG-STRIX-RTX3090-24G-GAMING-24GB-GDDR6X-2x-HDMI-3x-DP-90YV0F90-M0NM00-.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-ROG-STRIX-RTX3090-O24G-GAMING-OC-Edition-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-2-x-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-TUF-Gaming-GeForce-RTX-3090-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ASUS-TUF-Gaming-GeForce-RTX-3090-OC-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-Aorus-GeForce-RTX-3090-Master-24G-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-HDMI-3x-DisplayPort.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3090-Eagle-OC-24G-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/Gigabyte-GeForce-RTX-3090-Gaming-OC-24G-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-2x-HDMI-3x-DisplayPort.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/MSI-RTX-3090-GAMING-X-TRIO-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-HDMI-3x-DisplayPort.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/MSI-GeForce-RTX-3090-Ventus-3X-24G-OC-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-x16-HDMI-3x-DisplayPort.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-NVIDIA-PCI-Express/ZOTAC-GAMING-GeForce-RTX-3090-Trinity-Grafikkarten-GF-RTX-3090-24-GB-GDDR6X-PCIe-4.0-HDMI-3x-DisplayPort.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.acom-pc.de/Hardware-Software/CPU-Prozessor-/-CPU-Kuehler-Zubehoer/AMD-CPU/AMD-CPU-Socket-AM4/AMD-RYZEN-5-5600X-4.60GHZ-6-CORE-SKT-AM4-35MB-65W-PIB.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.acom-pc.de/Hardware-Software/CPU-Prozessor-/-CPU-Kuehler-Zubehoer/AMD-CPU/AMD-CPU-Socket-AM4/AMD-RYZEN-7-5800X-4.70GHZ-8-CORE-SKT-AM4-36MB-105W-WOF.html', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.acom-pc.de/Hardware-Software/CPU-Prozessor-/-CPU-Kuehler-Zubehoer/AMD-CPU/AMD-CPU-Socket-AM4/AMD-Ryzen-9-5900X-AMD-Ryzen-9-Socket-AM4-PC-7nm-AMD-3-7-GHz-AM4.html', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.acom-pc.de/Hardware-Software/CPU-Prozessor-/-CPU-Kuehler-Zubehoer/AMD-CPU/AMD-CPU-Socket-AM4/AMD-RYZEN-9-5950X-4.90GHZ-16-CORE-SKT-AM4-72MB-105W-WOF.html', + }, + ], + name: 'acompc', }; diff --git a/src/store/model/adorama.ts b/src/store/model/adorama.ts index ca68b40be1..4888e929ea 100644 --- a/src/store/model/adorama.ts +++ b/src/store/model/adorama.ts @@ -1,130 +1,130 @@ import {Store} from './store'; export const Adorama: Store = { - currency: '$', - labels: { - captcha: { - container: 'body', - text: ['please verify you are a human'] - }, - inStock: { - container: '.buy-section.purchase', - text: ['add to cart'] - }, - maxPrice: { - container: '.your-price', - euroFormat: false - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.adorama.com/ev08gp43067k.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: 'https://www.adorama.com/pnv301tfxmpb.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.adorama.com/msig380gxt1.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.adorama.com/ev10g53897kr.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.adorama.com/ev10g53885kr.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: 'https://www.adorama.com/ev10g53895kr.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: 'https://www.adorama.com/ev10g53883kr.html' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: 'https://www.adorama.com/ev10g53881kr.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.adorama.com/msig38v3x10c.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: 'https://www.adorama.com/png30801tfxb.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.adorama.com/asrx3080o10g.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.adorama.com/astr3080o10g.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.adorama.com/astrx308010g.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: 'https://www.adorama.com/msig390gxt24.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: 'https://www.adorama.com/msig39v3x24c.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: 'https://www.adorama.com/asrtx309024g.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: 'https://www.adorama.com/ast3090o24g.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: 'https://www.adorama.com/asrx3090o24g.html' - } - ], - name: 'adorama' + currency: '$', + labels: { + captcha: { + container: 'body', + text: ['please verify you are a human'], + }, + inStock: { + container: '.buy-section.purchase', + text: ['add to cart'], + }, + maxPrice: { + container: '.your-price', + euroFormat: false, + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.adorama.com/ev08gp43067k.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: 'https://www.adorama.com/pnv301tfxmpb.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.adorama.com/msig380gxt1.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.adorama.com/ev10g53897kr.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.adorama.com/ev10g53885kr.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: 'https://www.adorama.com/ev10g53895kr.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://www.adorama.com/ev10g53883kr.html', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://www.adorama.com/ev10g53881kr.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.adorama.com/msig38v3x10c.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: 'https://www.adorama.com/png30801tfxb.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.adorama.com/asrx3080o10g.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.adorama.com/astr3080o10g.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.adorama.com/astrx308010g.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.adorama.com/msig390gxt24.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.adorama.com/msig39v3x24c.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.adorama.com/asrtx309024g.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.adorama.com/ast3090o24g.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.adorama.com/asrx3090o24g.html', + }, + ], + name: 'adorama', }; diff --git a/src/store/model/akinformatica.ts b/src/store/model/akinformatica.ts index 188766d9d8..483e7c31c5 100644 --- a/src/store/model/akinformatica.ts +++ b/src/store/model/akinformatica.ts @@ -1,329 +1,329 @@ import {Store} from './store'; export const Akinformatica: Store = { - currency: '€', - labels: { - inStock: [ - { - container: '#dispOnLine .available', - text: ['Disponibile Online'] - }, - { - container: '#addCartLinkButton', - text: ['Aggiungi al carrello'] - } - ], - maxPrice: { - container: '#PrezzoListinoIvatoLabel', - euroFormat: true - }, - outOfStock: [ - { - container: '#dispOnLine .available .disabled', - text: ['Disponibile Online'] - }, - { - container: '#preOrderPanel > label', - text: ['PRE-ORDINI APERTI'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://shop.akinformatica.it/catalogo/adata-xpg/mouse-gaming-adata-xpg-primer---wired--rgb_4710273777139.aspx' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-palit-geforce-rtx3070-gamingpro-oc-8gb-gddr6x_4710562242089.aspx' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-zotac-gaming-geforce-rtx-3070-twin-edge-8g_4895173622472.aspx' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-msi-geforce-rtx-3070-ventus-2x-oc-8g_4719072763091.aspx' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-asus-geforce-rtx-3070-dual-o8g-8g_4718017927864.aspx' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-gigabyte-geforce-rtx-3070-eagle-8gb_4719331307738.aspx' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-msi-geforce-rtx-3070-ventus-3x-oc-8g_4719072763084.aspx' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-msi-geforce-rtx-3070-gaming-x-trio-8g_4719072763053.aspx' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-zotac-gaming-geforce-rtx-3070-twin-edge-oc-8g_4895173622489.aspx' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-gigabyte-geforce-rtx-3070-eagle-oc-8gb_4719331307677.aspx' - }, - { - brand: 'asus', - model: 'tuf', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-asus-geforce-rtx-3070-tuf-o8g-8g_4718017948678.aspx' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-gigabyte-geforce-rtx-3070-gaming-oc-8gb_4719331307691.aspx' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-asus-geforce-rtx-3070-rog-strix-gaming-oc-8g_4718017938150.aspx' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-msi-geforce-rtx-3090-gaming-x-trio-24g_4719072762506.aspx' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-zotac-geforce-rtx-3090-trinity-24g_4895173622427.aspx' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3090', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-msi-geforce-rtx-3090-suprim-x-24g_4719072762490.aspx' - }, - { - brand: 'pny', - model: 'xlr8 epic x', - series: '3090', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-pny-geforce-rtx-3090-epic-x-xlr8-gaming-24g_0751492639536.aspx' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3090', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-msi-geforce-rtx-3090-ventus-3x-24g-oc--consegne-da-marzo_4719072762476.aspx' - }, - { - brand: 'palit', - model: 'gamerock', - series: '3090', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-palit-geforce-rtx3090-gamerock-24gb-gddr6x_4710562242041.aspx' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3090', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-palit-geforce-rtx3090-gamingpro-24gb-gddr6x_4710562241969.aspx' - }, - { - brand: 'palit', - model: 'gamerock oc', - series: '3090', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-palit-geforce-rtx3090-gamerock-oc-24gb-gddr6x_4710562242065.aspx' - }, - { - brand: 'palit', - model: 'gaming pro oc', - series: '3090', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-palit-geforce-rtx3090-gamingpro-oc-24gb-gddr6x_4710562242027.aspx' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://shop.akinformatica.it/catalogo/amd-am4/cpu-amd-ryzen-5-5600x---6-core--max-boost-4-60-ghz--socket-am4_0730143312042.aspx' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://shop.akinformatica.it/catalogo/amd-am4/cpu-amd-ryzen-7-5800x---8-core--max-boost-4-70-ghz--socket-am4_0730143312714.aspx' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://shop.akinformatica.it/catalogo/amd-am4/cpu-amd-ryzen-9-5950x---16-core--max-boost-4-90-ghz--socket-am4_0730143312745.aspx' - }, - { - brand: 'sapphire', - model: 'nitro+ se', - series: 'rx6800', - url: - 'https://shop.akinformatica.it/catalogo/amd-rx-6800-6800-xt/vga-sapphire-radeon-rx-6800-xt-nitro--oc-se-16g_4895106289901.aspx' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6800', - url: - 'https://shop.akinformatica.it/catalogo/amd-rx-6800-6800-xt/vga-sapphire-radeon-rx-6800-xt-nitro--16g_4895106289925.aspx' - }, - { - brand: 'sapphire', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://shop.akinformatica.it/catalogo/amd-rx-6900-xt/vga-sapphire-radeon-rx-6900-xt-16g_4895106290136.aspx' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-msi-geforce-rtx-3080-ventus-3x-10g-oc--consegne-da-marzo_4719072762520.aspx' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-zotac-geforce-rtx-3080-trinity-10g_4895173622403.aspx' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-asus-geforce-rtx-3080-rog-strix-gaming-oc-10g_4718017928786.aspx' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-msi-geforce-rtx-3080-gaming-x-trio-10g_4719072762544.aspx' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-asus-geforce-rtx-3080-rog-strix-gaming-10g_4718017909150.aspx' - }, - { - brand: 'pny', - model: 'xlr8 epic x', - series: '3080', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-pny-geforce-rtx-3080-epic-x-xlr8-gaming-10g_0751492639567.aspx' - }, - { - brand: 'pny', - model: 'xlr8 epic x', - series: '3080', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-pny-geforce-rtx-3080-epic-x-xlr8-gaming-10g_0751492639550.aspx' - }, - { - brand: 'palit', - model: 'gaming pro oc', - series: '3080', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-palit-geforce-rtx3080-gamingpro-oc-10gb-gddr6x_4710562242003.aspx' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3060ti', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-msi-geforce-rtx-3060ti-ventus-2x-oc-8g-_4719072763121.aspx' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3060ti', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-msi-geforce-rtx-3060ti-gaming-x-trio-8g-_4719072763145.aspx' - }, - { - brand: 'palit', - model: 'dual oc', - series: '3060ti', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-palit-geforce-rtx-3060ti-dual-oc-8g-gddr6-256bit-3xdp--hdmi-_4710562242287.aspx' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3060ti', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-msi-geforce-rtx-3060ti-ventus-3x-oc-8g_4719072763152.aspx' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3060ti', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-zotac-gaming-geforce-rtx-3060ti-twin-edge-8g_4895173622502.aspx' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3060ti', - url: - 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-zotac-gaming-geforce-rtx-3060ti-twin-edge-oc-8g_4895173622519.aspx' - } - ], - name: 'akinformatica', - successStatusCodes: [[0, 399], 404] + currency: '€', + labels: { + inStock: [ + { + container: '#dispOnLine .available', + text: ['Disponibile Online'], + }, + { + container: '#addCartLinkButton', + text: ['Aggiungi al carrello'], + }, + ], + maxPrice: { + container: '#PrezzoListinoIvatoLabel', + euroFormat: true, + }, + outOfStock: [ + { + container: '#dispOnLine .available .disabled', + text: ['Disponibile Online'], + }, + { + container: '#preOrderPanel > label', + text: ['PRE-ORDINI APERTI'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://shop.akinformatica.it/catalogo/adata-xpg/mouse-gaming-adata-xpg-primer---wired--rgb_4710273777139.aspx', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-palit-geforce-rtx3070-gamingpro-oc-8gb-gddr6x_4710562242089.aspx', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-zotac-gaming-geforce-rtx-3070-twin-edge-8g_4895173622472.aspx', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-msi-geforce-rtx-3070-ventus-2x-oc-8g_4719072763091.aspx', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-asus-geforce-rtx-3070-dual-o8g-8g_4718017927864.aspx', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-gigabyte-geforce-rtx-3070-eagle-8gb_4719331307738.aspx', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-msi-geforce-rtx-3070-ventus-3x-oc-8g_4719072763084.aspx', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-msi-geforce-rtx-3070-gaming-x-trio-8g_4719072763053.aspx', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-zotac-gaming-geforce-rtx-3070-twin-edge-oc-8g_4895173622489.aspx', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-gigabyte-geforce-rtx-3070-eagle-oc-8gb_4719331307677.aspx', + }, + { + brand: 'asus', + model: 'tuf', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-asus-geforce-rtx-3070-tuf-o8g-8g_4718017948678.aspx', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-gigabyte-geforce-rtx-3070-gaming-oc-8gb_4719331307691.aspx', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3070/vga-asus-geforce-rtx-3070-rog-strix-gaming-oc-8g_4718017938150.aspx', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-msi-geforce-rtx-3090-gaming-x-trio-24g_4719072762506.aspx', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-zotac-geforce-rtx-3090-trinity-24g_4895173622427.aspx', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3090', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-msi-geforce-rtx-3090-suprim-x-24g_4719072762490.aspx', + }, + { + brand: 'pny', + model: 'xlr8 epic x', + series: '3090', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-pny-geforce-rtx-3090-epic-x-xlr8-gaming-24g_0751492639536.aspx', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3090', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-msi-geforce-rtx-3090-ventus-3x-24g-oc--consegne-da-marzo_4719072762476.aspx', + }, + { + brand: 'palit', + model: 'gamerock', + series: '3090', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-palit-geforce-rtx3090-gamerock-24gb-gddr6x_4710562242041.aspx', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3090', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-palit-geforce-rtx3090-gamingpro-24gb-gddr6x_4710562241969.aspx', + }, + { + brand: 'palit', + model: 'gamerock oc', + series: '3090', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-palit-geforce-rtx3090-gamerock-oc-24gb-gddr6x_4710562242065.aspx', + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3090', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3090/vga-palit-geforce-rtx3090-gamingpro-oc-24gb-gddr6x_4710562242027.aspx', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://shop.akinformatica.it/catalogo/amd-am4/cpu-amd-ryzen-5-5600x---6-core--max-boost-4-60-ghz--socket-am4_0730143312042.aspx', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://shop.akinformatica.it/catalogo/amd-am4/cpu-amd-ryzen-7-5800x---8-core--max-boost-4-70-ghz--socket-am4_0730143312714.aspx', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://shop.akinformatica.it/catalogo/amd-am4/cpu-amd-ryzen-9-5950x---16-core--max-boost-4-90-ghz--socket-am4_0730143312745.aspx', + }, + { + brand: 'sapphire', + model: 'nitro+ se', + series: 'rx6800', + url: + 'https://shop.akinformatica.it/catalogo/amd-rx-6800-6800-xt/vga-sapphire-radeon-rx-6800-xt-nitro--oc-se-16g_4895106289901.aspx', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6800', + url: + 'https://shop.akinformatica.it/catalogo/amd-rx-6800-6800-xt/vga-sapphire-radeon-rx-6800-xt-nitro--16g_4895106289925.aspx', + }, + { + brand: 'sapphire', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://shop.akinformatica.it/catalogo/amd-rx-6900-xt/vga-sapphire-radeon-rx-6900-xt-16g_4895106290136.aspx', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-msi-geforce-rtx-3080-ventus-3x-10g-oc--consegne-da-marzo_4719072762520.aspx', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-zotac-geforce-rtx-3080-trinity-10g_4895173622403.aspx', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-asus-geforce-rtx-3080-rog-strix-gaming-oc-10g_4718017928786.aspx', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-msi-geforce-rtx-3080-gaming-x-trio-10g_4719072762544.aspx', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-asus-geforce-rtx-3080-rog-strix-gaming-10g_4718017909150.aspx', + }, + { + brand: 'pny', + model: 'xlr8 epic x', + series: '3080', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-pny-geforce-rtx-3080-epic-x-xlr8-gaming-10g_0751492639567.aspx', + }, + { + brand: 'pny', + model: 'xlr8 epic x', + series: '3080', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-pny-geforce-rtx-3080-epic-x-xlr8-gaming-10g_0751492639550.aspx', + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3080', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3080/vga-palit-geforce-rtx3080-gamingpro-oc-10gb-gddr6x_4710562242003.aspx', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-msi-geforce-rtx-3060ti-ventus-2x-oc-8g-_4719072763121.aspx', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060ti', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-msi-geforce-rtx-3060ti-gaming-x-trio-8g-_4719072763145.aspx', + }, + { + brand: 'palit', + model: 'dual oc', + series: '3060ti', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-palit-geforce-rtx-3060ti-dual-oc-8g-gddr6-256bit-3xdp--hdmi-_4710562242287.aspx', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3060ti', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-msi-geforce-rtx-3060ti-ventus-3x-oc-8g_4719072763152.aspx', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3060ti', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-zotac-gaming-geforce-rtx-3060ti-twin-edge-8g_4895173622502.aspx', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3060ti', + url: + 'https://shop.akinformatica.it/catalogo/nvidia-rtx-3060ti/vga-zotac-gaming-geforce-rtx-3060ti-twin-edge-oc-8g_4895173622519.aspx', + }, + ], + name: 'akinformatica', + successStatusCodes: [[0, 399], 404], }; diff --git a/src/store/model/allneeds.ts b/src/store/model/allneeds.ts index e2ad805f92..3252ba6ac2 100644 --- a/src/store/model/allneeds.ts +++ b/src/store/model/allneeds.ts @@ -1,64 +1,64 @@ import {Store} from './store'; export const Allneeds: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: '.amstockstatus', - text: ['In Stock'] - }, - maxPrice: { - container: 'span.price', - euroFormat: false - }, - outOfStock: { - container: '.amstockstatus', - text: ['sold out'] - } - }, - links: [ - { - brand: 'asus', - model: 'strix oc white', - series: '3080', - url: - 'https://allneeds.com.au/asus-geforce-rtx-3080-rog-strix-gaming-oc-10gb-video-card-white-edition-limited-edition' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6900xt', - url: - 'https://allneeds.com.au/sapphire-nitro-radeon-rx-6900-xt-16gb-video-card-11308-01-20g' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://allneeds.com.au/amd-ryzen-9-5950x-processor-100-100000059wof' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://allneeds.com.au/amd-ryzen-9-5900x-processor-100-100000061wof' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://allneeds.com.au/amd-ryzen-7-5800x-processor' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://allneeds.com.au/amd-ryzen-5-5600x-with-wraith-stealth-100-100000065box' - } - ], - name: 'allneeds' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: '.amstockstatus', + text: ['In Stock'], + }, + maxPrice: { + container: 'span.price', + euroFormat: false, + }, + outOfStock: { + container: '.amstockstatus', + text: ['sold out'], + }, + }, + links: [ + { + brand: 'asus', + model: 'strix oc white', + series: '3080', + url: + 'https://allneeds.com.au/asus-geforce-rtx-3080-rog-strix-gaming-oc-10gb-video-card-white-edition-limited-edition', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6900xt', + url: + 'https://allneeds.com.au/sapphire-nitro-radeon-rx-6900-xt-16gb-video-card-11308-01-20g', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://allneeds.com.au/amd-ryzen-9-5950x-processor-100-100000059wof', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://allneeds.com.au/amd-ryzen-9-5900x-processor-100-100000061wof', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://allneeds.com.au/amd-ryzen-7-5800x-processor', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://allneeds.com.au/amd-ryzen-5-5600x-with-wraith-stealth-100-100000065box', + }, + ], + name: 'allneeds', }; diff --git a/src/store/model/alternate-nl.ts b/src/store/model/alternate-nl.ts index 753b008c65..dc264e99c7 100644 --- a/src/store/model/alternate-nl.ts +++ b/src/store/model/alternate-nl.ts @@ -1,172 +1,172 @@ import {Store} from './store'; export const AlternateNL: Store = { - currency: '€', - labels: { - inStock: { - container: '.stockStatus', - text: ['Direct leverbaar'] - }, - maxPrice: { - container: 'div.price > span', - euroFormat: true - }, - outOfStock: { - container: '.stockStatus', - text: ['Levertermijn onbekend', 'pre-order'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.alternate.nl/product/1516616' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.alternate.nl/product/1672756' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.alternate.nl/product/1672345' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.alternate.nl/product/1672251' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.alternate.nl/product/1672753' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.alternate.nl/product/1672343' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.alternate.nl/product/1672634' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.alternate.nl/product/1672867' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: 'https://www.alternate.nl/product/1673512' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: 'https://www.alternate.nl/product/1672612' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.alternate.nl/product/1674164' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: 'https://www.alternate.nl/product/1672868' - }, - { - brand: 'palit', - model: 'gaming pro oc', - series: '3080', - url: 'https://www.alternate.nl/product/1673431' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: 'https://www.alternate.nl/product/1677989' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: 'https://www.alternate.nl/product/1681134' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: 'https://www.alternate.nl/product/1673520' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3080', - url: 'https://www.alternate.nl/product/1673442' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: 'https://www.alternate.nl/product/1673136' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.alternate.nl/product/1673524' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://www.alternate.nl/product/1680168' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: 'https://www.alternate.nl/product/1673517' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: 'https://www.alternate.nl/product/1677985' - }, - { - brand: 'zotac', - model: 'amp extreme holo', - series: '3080', - url: 'https://www.alternate.nl/product/1677982' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: 'https://www.alternate.nl/product/1673137' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: 'https://www.alternate.nl/product/1673134' - } - ], - name: 'alternate-nl' + currency: '€', + labels: { + inStock: { + container: '.stockStatus', + text: ['Direct leverbaar'], + }, + maxPrice: { + container: 'div.price > span', + euroFormat: true, + }, + outOfStock: { + container: '.stockStatus', + text: ['Levertermijn onbekend', 'pre-order'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.alternate.nl/product/1516616', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.alternate.nl/product/1672756', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.alternate.nl/product/1672345', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.alternate.nl/product/1672251', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.alternate.nl/product/1672753', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.alternate.nl/product/1672343', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.alternate.nl/product/1672634', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.alternate.nl/product/1672867', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://www.alternate.nl/product/1673512', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: 'https://www.alternate.nl/product/1672612', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.alternate.nl/product/1674164', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.alternate.nl/product/1672868', + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3080', + url: 'https://www.alternate.nl/product/1673431', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: 'https://www.alternate.nl/product/1677989', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.alternate.nl/product/1681134', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://www.alternate.nl/product/1673520', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3080', + url: 'https://www.alternate.nl/product/1673442', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.alternate.nl/product/1673136', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.alternate.nl/product/1673524', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.alternate.nl/product/1680168', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: 'https://www.alternate.nl/product/1673517', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: 'https://www.alternate.nl/product/1677985', + }, + { + brand: 'zotac', + model: 'amp extreme holo', + series: '3080', + url: 'https://www.alternate.nl/product/1677982', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.alternate.nl/product/1673137', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.alternate.nl/product/1673134', + }, + ], + name: 'alternate-nl', }; diff --git a/src/store/model/alternate.ts b/src/store/model/alternate.ts index e18e861cae..578eca3240 100644 --- a/src/store/model/alternate.ts +++ b/src/store/model/alternate.ts @@ -1,435 +1,435 @@ import {Store} from './store'; export const Alternate: Store = { - currency: '€', - labels: { - inStock: { - container: '.stockStatus', - text: [ - 'auf lager', - 'ware neu eingetroffen', - 'in kürze versandfertig', - 'ware im zulauf' - ] - }, - maxPrice: { - container: 'div.price > span', - euroFormat: true - }, - outOfStock: [ - { - container: '.stockStatus', - text: ['liefertermin unbekannt'] - }, - { - container: '.stockStatus', - text: ['Artikel kann nicht gekauft werden'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.alternate.de/product/1662088' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: 'https://www.alternate.de/product/1672868' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.alternate.de/product/1672867' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.alternate.de/product/1672251' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.alternate.de/product/1672634' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: 'https://www.alternate.de/product/1673517' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.alternate.de/product/1673524' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: 'https://www.alternate.de/product/1673512' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: 'https://www.alternate.de/product/1673520' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.alternate.de/product/1674164' - }, - { - brand: 'gainward', - model: 'phantom gs', - series: '3080', - url: 'https://www.alternate.de/product/1688597' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3080', - url: 'https://www.alternate.de/product/1673442' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://www.alternate.de/product/1680168' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: 'https://www.alternate.de/product/1680168' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.alternate.de/product/1672756' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.alternate.de/product/1672753' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: 'https://www.alternate.de/product/1681134' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: 'https://www.alternate.de/product/1673136' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: 'https://www.alternate.de/product/1673134' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: 'https://www.alternate.de/product/1673137' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.alternate.de/product/1672343' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.alternate.de/product/1672345' - }, - { - brand: 'palit', - model: 'gamerock oc', - series: '3080', - url: 'https://www.alternate.de/product/1688594' - }, - { - brand: 'palit', - model: 'gaming pro oc', - series: '3080', - url: 'https://www.alternate.de/product/1673431' - }, - { - brand: 'zotac', - model: 'amp extreme holo', - series: '3080', - url: 'https://www.alternate.de/product/1677982' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: 'https://www.alternate.de/product/1677985' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: 'https://www.alternate.de/product/1677989' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: 'https://www.alternate.de/product/1672612' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: 'https://www.alternate.de/product/1672870' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: 'https://www.alternate.de/product/1672872' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: 'https://www.alternate.de/product/1672259' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: 'https://www.alternate.de/product/1672629' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3090', - url: 'https://www.alternate.de/product/1673530' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3090', - url: 'https://www.alternate.de/product/1673531' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3090', - url: 'https://www.alternate.de/product/1673521' - }, - { - brand: 'evga', - model: 'xc3', - series: '3090', - url: 'https://www.alternate.de/product/1673525' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: 'https://www.alternate.de/product/1673529' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3090', - url: 'https://www.alternate.de/product/1673440' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: 'https://www.alternate.de/product/1680670' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: 'https://www.alternate.de/product/1687793' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: 'https://www.alternate.de/product/1672744' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: 'https://www.alternate.de/product/1672749' - }, - { - brand: 'gigabyte', - model: 'turbo', - series: '3090', - url: 'https://www.alternate.de/product/1687703' - }, - { - brand: 'inno3d', - model: 'gaming x3', - series: '3090', - url: 'https://www.alternate.de/product/1673131' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3090', - url: 'https://www.alternate.de/product/1673135' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3090', - url: 'https://www.alternate.de/product/1673129' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: 'https://www.alternate.de/product/1672341' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: 'https://www.alternate.de/product/1672346' - }, - { - brand: 'palit', - model: 'gaming pro oc', - series: '3090', - url: 'https://www.alternate.de/product/1673434' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: 'https://www.alternate.de/product/1672611' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.alternate.de/product/1685588' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.alternate.de/product/1685585' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.alternate.de/product/1685590' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.alternate.de/product/1685584' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.alternate.de/product/1651220' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.alternate.de/product/1651221' - }, - { - brand: 'xfx', - model: 'merc', - series: 'rx6800xt', - url: 'https://www.alternate.de/product/1698792' - }, - { - brand: 'sapphire', - model: 'nitro oc se', - series: 'rx6800xt', - url: 'https://www.alternate.de/product/1696478' - }, - { - brand: 'sapphire', - model: 'nitro oc', - series: 'rx6800xt', - url: 'https://www.alternate.de/product/1696482' - }, - { - brand: 'asus', - model: 'strix lc', - series: 'rx6800xt', - url: 'https://www.alternate.de/product/1695392' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800xt', - url: 'https://www.alternate.de/product/1697044' - }, - { - brand: 'asus', - model: 'tuf oc', - series: 'rx6900xt', - url: 'https://www.alternate.de/product/1702773' - }, - { - brand: 'msi', - model: 'amd reference', - series: 'rx6900xt', - url: 'https://www.alternate.de/product/1700508' - }, - { - brand: 'xfx', - model: 'merc', - series: 'rx6900xt', - url: 'https://www.alternate.de/product/1704614' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.alternate.de/product/1675115' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.alternate.de/product/1675117' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.alternate.de/product/1676874' - } - ], - name: 'alternate' + currency: '€', + labels: { + inStock: { + container: '.stockStatus', + text: [ + 'auf lager', + 'ware neu eingetroffen', + 'in kürze versandfertig', + 'ware im zulauf', + ], + }, + maxPrice: { + container: 'div.price > span', + euroFormat: true, + }, + outOfStock: [ + { + container: '.stockStatus', + text: ['liefertermin unbekannt'], + }, + { + container: '.stockStatus', + text: ['Artikel kann nicht gekauft werden'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.alternate.de/product/1662088', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.alternate.de/product/1672868', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.alternate.de/product/1672867', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.alternate.de/product/1672251', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.alternate.de/product/1672634', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: 'https://www.alternate.de/product/1673517', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.alternate.de/product/1673524', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://www.alternate.de/product/1673512', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://www.alternate.de/product/1673520', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.alternate.de/product/1674164', + }, + { + brand: 'gainward', + model: 'phantom gs', + series: '3080', + url: 'https://www.alternate.de/product/1688597', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3080', + url: 'https://www.alternate.de/product/1673442', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.alternate.de/product/1680168', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: 'https://www.alternate.de/product/1680168', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.alternate.de/product/1672756', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.alternate.de/product/1672753', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.alternate.de/product/1681134', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.alternate.de/product/1673136', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.alternate.de/product/1673134', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.alternate.de/product/1673137', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.alternate.de/product/1672343', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.alternate.de/product/1672345', + }, + { + brand: 'palit', + model: 'gamerock oc', + series: '3080', + url: 'https://www.alternate.de/product/1688594', + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3080', + url: 'https://www.alternate.de/product/1673431', + }, + { + brand: 'zotac', + model: 'amp extreme holo', + series: '3080', + url: 'https://www.alternate.de/product/1677982', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: 'https://www.alternate.de/product/1677985', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: 'https://www.alternate.de/product/1677989', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: 'https://www.alternate.de/product/1672612', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: 'https://www.alternate.de/product/1672870', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.alternate.de/product/1672872', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.alternate.de/product/1672259', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.alternate.de/product/1672629', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: 'https://www.alternate.de/product/1673530', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: 'https://www.alternate.de/product/1673531', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3090', + url: 'https://www.alternate.de/product/1673521', + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: 'https://www.alternate.de/product/1673525', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: 'https://www.alternate.de/product/1673529', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3090', + url: 'https://www.alternate.de/product/1673440', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: 'https://www.alternate.de/product/1680670', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.alternate.de/product/1687793', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: 'https://www.alternate.de/product/1672744', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: 'https://www.alternate.de/product/1672749', + }, + { + brand: 'gigabyte', + model: 'turbo', + series: '3090', + url: 'https://www.alternate.de/product/1687703', + }, + { + brand: 'inno3d', + model: 'gaming x3', + series: '3090', + url: 'https://www.alternate.de/product/1673131', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3090', + url: 'https://www.alternate.de/product/1673135', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: 'https://www.alternate.de/product/1673129', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.alternate.de/product/1672341', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.alternate.de/product/1672346', + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3090', + url: 'https://www.alternate.de/product/1673434', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: 'https://www.alternate.de/product/1672611', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.alternate.de/product/1685588', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.alternate.de/product/1685585', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.alternate.de/product/1685590', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.alternate.de/product/1685584', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.alternate.de/product/1651220', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.alternate.de/product/1651221', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6800xt', + url: 'https://www.alternate.de/product/1698792', + }, + { + brand: 'sapphire', + model: 'nitro oc se', + series: 'rx6800xt', + url: 'https://www.alternate.de/product/1696478', + }, + { + brand: 'sapphire', + model: 'nitro oc', + series: 'rx6800xt', + url: 'https://www.alternate.de/product/1696482', + }, + { + brand: 'asus', + model: 'strix lc', + series: 'rx6800xt', + url: 'https://www.alternate.de/product/1695392', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800xt', + url: 'https://www.alternate.de/product/1697044', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6900xt', + url: 'https://www.alternate.de/product/1702773', + }, + { + brand: 'msi', + model: 'amd reference', + series: 'rx6900xt', + url: 'https://www.alternate.de/product/1700508', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6900xt', + url: 'https://www.alternate.de/product/1704614', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.alternate.de/product/1675115', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.alternate.de/product/1675117', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.alternate.de/product/1676874', + }, + ], + name: 'alternate', }; diff --git a/src/store/model/amazon-ca.ts b/src/store/model/amazon-ca.ts index 6687a58fd8..2724c6b43d 100644 --- a/src/store/model/amazon-ca.ts +++ b/src/store/model/amazon-ca.ts @@ -1,293 +1,293 @@ import {Store} from './store'; export const AmazonCa: Store = { - currency: '$', - labels: { - captcha: { - container: 'body', - text: ['enter the characters you see below'] - }, - inStock: { - container: '#desktop_buybox', - text: ['add to cart'] - }, - maxPrice: { - container: '#priceblock_ourprice' - } - }, - links: [ - { - brand: 'test:brand', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B07PBLD2MX&Quantity.1=1', - model: 'test:model', - series: 'test:series', - url: 'https://www.amazon.ca/dp/B07PBLD2MX' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', - model: 'gaming x trio', - series: '3070', - url: 'https://www.amazon.ca/dp/B08KWN2LZG' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08KWLMZV4&Quantity.1=1', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.amazon.ca/dp/B08KWLMZV4' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1', - model: 'xc3', - series: '3070', - url: 'https://www.amazon.ca/dp/B08LW46GH2' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08L8L71SM&Quantity.1=1', - model: 'xc3 ultra', - series: '3070', - url: 'https://www.amazon.ca/dp/B08L8L71SM' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08L8L9TCZ&Quantity.1=1', - model: 'ftw3 ultra', - series: '3070', - url: 'https://www.amazon.ca/dp/B08L8L9TCZ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR7SV3M&Quantity.1=1', - model: 'gaming x trio', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HR7SV3M' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR5SXPS&Quantity.1=1', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HR5SXPS' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR3DPGW&Quantity.1=1', - model: 'ftw3', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HR3DPGW' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR3Y5GQ&Quantity.1=1', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HR3Y5GQ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR55YB5&Quantity.1=1', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HR55YB5' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR4RJ3Q&Quantity.1=1', - model: 'xc3', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HR4RJ3Q' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR6FMF3&Quantity.1=1', - model: 'xc3 black', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HR6FMF3' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJTH61J&Quantity.1=1', - model: 'gaming oc', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HJTH61J' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJS2JLJ&Quantity.1=1', - model: 'eagle oc', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HJS2JLJ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HHDP9DW&Quantity.1=1', - model: 'tuf', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HHDP9DW' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HH5WF97&Quantity.1=1', - model: 'tuf oc', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HH5WF97' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJNKT3P&Quantity.1=1', - model: 'trinity', - series: '3080', - url: 'https://www.amazon.ca/dp/B08HJNKT3P' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1', - model: 'trinity', - series: '3090', - url: 'https://www.amazon.ca/dp/B08HJQ182D' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR9D2JS&Quantity.1=1', - model: 'ventus 3x oc', - series: '3090', - url: 'https://www.amazon.ca/dp/B08HR9D2JS' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1', - model: 'gaming oc', - series: '3090', - url: 'https://www.amazon.ca/dp/B08HJRF2CN' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1', - model: 'eagle oc', - series: '3090', - url: 'https://www.amazon.ca/dp/B08HJPDJTY' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJGNJ81&Quantity.1=1', - model: 'tuf', - series: '3090', - url: 'https://www.amazon.ca/dp/B08HJGNJ81' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJLLF7G&Quantity.1=1', - model: 'tuf oc', - series: '3090', - url: 'https://www.amazon.ca/dp/B08HJLLF7G' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amazon.ca/dp/B08166SLDF' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amazon.ca/dp/B0815XFSGK' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amazon.ca/dp/B08164VTWH' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amazon.ca/dp/B0815Y8J9N' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08GSC5D9G&Quantity.1=1', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.amazon.ca/dp/B08GSC5D9G' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08GS1N24H&Quantity.1=1', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.amazon.ca/dp/B08GS1N24H' - }, - { - brand: 'microsoft', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08H75RTZ8&Quantity.1=1', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.amazon.ca/dp/B08H75RTZ8' - }, - { - brand: 'microsoft', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08G9J44ZN&Quantity.1=1', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.amazon.ca/dp/B08G9J44ZN' - }, - { - brand: 'xfx', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08NX14LV1&Quantity.1=1', - model: 'merc', - series: 'rx6800xt', - url: 'https://www.amazon.ca/dp/B08NX14LV1' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08PQ585CX&Quantity.1=1', - model: 'pulse', - series: 'rx6800xt', - url: 'https://www.amazon.ca/dp/B08PQ585CX' - } - ], - name: 'amazon-ca' + currency: '$', + labels: { + captcha: { + container: 'body', + text: ['enter the characters you see below'], + }, + inStock: { + container: '#desktop_buybox', + text: ['add to cart'], + }, + maxPrice: { + container: '#priceblock_ourprice', + }, + }, + links: [ + { + brand: 'test:brand', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B07PBLD2MX&Quantity.1=1', + model: 'test:model', + series: 'test:series', + url: 'https://www.amazon.ca/dp/B07PBLD2MX', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', + model: 'gaming x trio', + series: '3070', + url: 'https://www.amazon.ca/dp/B08KWN2LZG', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08KWLMZV4&Quantity.1=1', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.amazon.ca/dp/B08KWLMZV4', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1', + model: 'xc3', + series: '3070', + url: 'https://www.amazon.ca/dp/B08LW46GH2', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08L8L71SM&Quantity.1=1', + model: 'xc3 ultra', + series: '3070', + url: 'https://www.amazon.ca/dp/B08L8L71SM', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08L8L9TCZ&Quantity.1=1', + model: 'ftw3 ultra', + series: '3070', + url: 'https://www.amazon.ca/dp/B08L8L9TCZ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR7SV3M&Quantity.1=1', + model: 'gaming x trio', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HR7SV3M', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR5SXPS&Quantity.1=1', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HR5SXPS', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR3DPGW&Quantity.1=1', + model: 'ftw3', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HR3DPGW', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR3Y5GQ&Quantity.1=1', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HR3Y5GQ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR55YB5&Quantity.1=1', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HR55YB5', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR4RJ3Q&Quantity.1=1', + model: 'xc3', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HR4RJ3Q', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR6FMF3&Quantity.1=1', + model: 'xc3 black', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HR6FMF3', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJTH61J&Quantity.1=1', + model: 'gaming oc', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HJTH61J', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJS2JLJ&Quantity.1=1', + model: 'eagle oc', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HJS2JLJ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HHDP9DW&Quantity.1=1', + model: 'tuf', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HHDP9DW', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HH5WF97&Quantity.1=1', + model: 'tuf oc', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HH5WF97', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJNKT3P&Quantity.1=1', + model: 'trinity', + series: '3080', + url: 'https://www.amazon.ca/dp/B08HJNKT3P', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1', + model: 'trinity', + series: '3090', + url: 'https://www.amazon.ca/dp/B08HJQ182D', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HR9D2JS&Quantity.1=1', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.amazon.ca/dp/B08HR9D2JS', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1', + model: 'gaming oc', + series: '3090', + url: 'https://www.amazon.ca/dp/B08HJRF2CN', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1', + model: 'eagle oc', + series: '3090', + url: 'https://www.amazon.ca/dp/B08HJPDJTY', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJGNJ81&Quantity.1=1', + model: 'tuf', + series: '3090', + url: 'https://www.amazon.ca/dp/B08HJGNJ81', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08HJLLF7G&Quantity.1=1', + model: 'tuf oc', + series: '3090', + url: 'https://www.amazon.ca/dp/B08HJLLF7G', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amazon.ca/dp/B08166SLDF', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amazon.ca/dp/B0815XFSGK', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amazon.ca/dp/B08164VTWH', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amazon.ca/dp/B0815Y8J9N', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08GSC5D9G&Quantity.1=1', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.amazon.ca/dp/B08GSC5D9G', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08GS1N24H&Quantity.1=1', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.amazon.ca/dp/B08GS1N24H', + }, + { + brand: 'microsoft', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08H75RTZ8&Quantity.1=1', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.amazon.ca/dp/B08H75RTZ8', + }, + { + brand: 'microsoft', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08G9J44ZN&Quantity.1=1', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.amazon.ca/dp/B08G9J44ZN', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08NX14LV1&Quantity.1=1', + model: 'merc', + series: 'rx6800xt', + url: 'https://www.amazon.ca/dp/B08NX14LV1', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.ca/gp/aws/cart/add.html?ASIN.1=B08PQ585CX&Quantity.1=1', + model: 'pulse', + series: 'rx6800xt', + url: 'https://www.amazon.ca/dp/B08PQ585CX', + }, + ], + name: 'amazon-ca', }; diff --git a/src/store/model/amazon-de-warehouse.ts b/src/store/model/amazon-de-warehouse.ts index adec4b819d..93713bbed9 100644 --- a/src/store/model/amazon-de-warehouse.ts +++ b/src/store/model/amazon-de-warehouse.ts @@ -1,64 +1,64 @@ import {Store} from './store'; export const AmazonDeWarehouse: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '€', - labels: { - captcha: { - container: 'body', - text: [ - 'geben sie die unten angezeigten zeichen ein', - 'geben sie die zeichen unten ein' - ] - }, - inStock: { - container: '#a-autoid-0-announce', - text: ['In den Einkaufswagen'] - }, - maxPrice: { - container: '.olpOfferPrice', - euroFormat: true - }, - outOfStock: [ - { - container: '.a-size-medium', - text: [ - 'Derzeit gibt es keine Verkäufer, die diesen Artikel an Ihren Standort liefern können' - ] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.amazon.de/gp/offer-listing/B07PW9VBK5' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.amazon.de/gp/offer-listing/B08H93ZRK9' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.amazon.de/gp/offer-listing/B08H98GVK8' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.amazon.de/gp/offer-listing/B087VM5XC6' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.amazon.de/gp/offer-listing/B08H93ZRLL' - } - ], - name: 'amazon-de-warehouse' + backoffStatusCodes: [403, 429, 503], + currency: '€', + labels: { + captcha: { + container: 'body', + text: [ + 'geben sie die unten angezeigten zeichen ein', + 'geben sie die zeichen unten ein', + ], + }, + inStock: { + container: '#a-autoid-0-announce', + text: ['In den Einkaufswagen'], + }, + maxPrice: { + container: '.olpOfferPrice', + euroFormat: true, + }, + outOfStock: [ + { + container: '.a-size-medium', + text: [ + 'Derzeit gibt es keine Verkäufer, die diesen Artikel an Ihren Standort liefern können', + ], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.amazon.de/gp/offer-listing/B07PW9VBK5', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.amazon.de/gp/offer-listing/B08H93ZRK9', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.amazon.de/gp/offer-listing/B08H98GVK8', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.amazon.de/gp/offer-listing/B087VM5XC6', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.amazon.de/gp/offer-listing/B08H93ZRLL', + }, + ], + name: 'amazon-de-warehouse', }; diff --git a/src/store/model/amazon-de.ts b/src/store/model/amazon-de.ts index 651562afc3..1ff324b9eb 100644 --- a/src/store/model/amazon-de.ts +++ b/src/store/model/amazon-de.ts @@ -1,558 +1,558 @@ import {Store} from './store'; export const AmazonDe: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '€', - labels: { - captcha: { - container: 'body', - text: [ - 'geben sie die unten angezeigten zeichen ein', - 'geben sie die zeichen unten ein' - ] - }, - inStock: { - container: '#add-to-cart-button', - text: ['in den einkaufswagen'] - }, - maxPrice: { - container: '#priceblock_ourprice', - euroFormat: true - }, - outOfStock: [ - { - container: '#availability', - text: ['Derzeit nicht verfügbar'] - } - ] - }, - links: [ - { - brand: 'test:brand', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B07PW9VBK5&Quantity.1=1', - model: 'test:model', - series: 'test:series', - url: 'https://www.amazon.de/dp/B07PW9VBK5' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN7VVLJ&Quantity.1=1', - model: 'strix', - series: '3080', - url: 'https://www.amazon.de/dp/B08HN7VVLJ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN6KYS3&Quantity.1=1', - model: 'strix oc', - series: '3080', - url: 'https://www.amazon.de/dp/B08HN6KYS3' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN37VQK&Quantity.1=1', - model: 'tuf', - series: '3080', - url: 'https://www.amazon.de/dp/B08HN37VQK' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN4DSTC&Quantity.1=1', - model: 'tuf oc', - series: '3080', - url: 'https://www.amazon.de/dp/B08HN4DSTC' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGBYWQ6&Quantity.1=1', - model: 'ftw3', - series: '3080', - url: 'https://www.amazon.de/dp/B08HGBYWQ6' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGYXP4C&Quantity.1=1', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.amazon.de/dp/B08HGYXP4C' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGLN78Q&Quantity.1=1', - model: 'xc3', - series: '3080', - url: 'https://www.amazon.de/dp/B08HGLN78Q' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HH1BMQQ&Quantity.1=1', - model: 'xc3 black', - series: '3080', - url: 'https://www.amazon.de/dp/B08HH1BMQQ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJ9XFNM&Quantity.1=1', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.amazon.de/dp/B08HJ9XFNM' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHLDS72&Quantity.1=1', - model: 'aorus master', - series: '3080', - url: 'https://www.amazon.de/dp/B08KHLDS72' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HHZVZ3N&Quantity.1=1', - model: 'eagle oc', - series: '3080', - url: 'https://www.amazon.de/dp/B08HHZVZ3N' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HLZXHZY&Quantity.1=1', - model: 'gaming oc', - series: '3080', - url: 'https://www.amazon.de/dp/B08HLZXHZY' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KH7RL89&Quantity.1=1', - model: 'vision oc', - series: '3080', - url: 'https://www.amazon.de/dp/B08KH7RL89' - }, - { - brand: 'inno3d', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JD6QPXD&Quantity.1=1', - model: 'twin x2 oc', - series: '3080', - url: 'https://www.amazon.de/dp/B08JD6QPXD' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HM4V2DH&Quantity.1=1', - model: 'gaming x trio', - series: '3080', - url: 'https://www.amazon.de/dp/B08HM4V2DH' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HM4M621&Quantity.1=1', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.amazon.de/dp/B08HM4M621' - }, - { - brand: 'palit', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JCVWTQY&Quantity.1=1', - model: 'gaming pro', - series: '3080', - url: 'https://www.amazon.de/dp/B08JCVWTQY' - }, - { - brand: 'palit', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JCKYYL8&Quantity.1=1', - model: 'gaming pro oc', - series: '3080', - url: 'https://www.amazon.de/dp/B08JCKYYL8' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HR1NPPQ&Quantity.1=1', - model: 'trinity', - series: '3080', - url: 'https://www.amazon.de/dp/B08HR1NPPQ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN642LY&Quantity.1=1', - model: 'strix', - series: '3090', - url: 'https://www.amazon.de/dp/B08HN642LY' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN51T8Q&Quantity.1=1', - model: 'strix oc', - series: '3090', - url: 'https://www.amazon.de/dp/B08HN51T8Q' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN4FLFJ&Quantity.1=1', - model: 'tuf', - series: '3090', - url: 'https://www.amazon.de/dp/B08HN4FLFJ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN5B8FJ&Quantity.1=1', - model: 'tuf oc', - series: '3090', - url: 'https://www.amazon.de/dp/B08HN5B8FJ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGFNPJQ&Quantity.1=1', - model: 'ftw3', - series: '3090', - url: 'https://www.amazon.de/dp/B08HGFNPJQ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08J5NMDP7&Quantity.1=1', - model: 'ftw3', - series: '3090', - url: 'https://www.amazon.de/dp/B08J5NMDP7' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGS1SXH&Quantity.1=1', - model: 'ftw3 ultra', - series: '3090', - url: 'https://www.amazon.de/dp/B08HGS1SXH' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGZ4XSZ&Quantity.1=1', - model: 'xc3', - series: '3090', - url: 'https://www.amazon.de/dp/B08HGZ4XSZ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGKQ527&Quantity.1=1', - model: 'xc3 black', - series: '3090', - url: 'https://www.amazon.de/dp/B08HGKQ527' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGTNDL4&Quantity.1=1', - model: 'xc3 ultra', - series: '3090', - url: 'https://www.amazon.de/dp/B08HGTNDL4' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KH7R4FQ&Quantity.1=1', - model: 'aorus master', - series: '3090', - url: 'https://www.amazon.de/dp/B08KH7R4FQ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1', - model: 'eagle oc', - series: '3090', - url: 'https://www.amazon.de/dp/B08HJPDJTY' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHKDTSJ&Quantity.1=1', - model: 'turbo', - series: '3090', - url: 'https://www.amazon.de/dp/B08KHKDTSJ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1', - model: 'gaming oc', - series: '3090', - url: 'https://www.amazon.de/dp/B08HJRF2CN' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HRBW6VB&Quantity.1=1', - model: 'gaming x trio', - series: '3090', - url: 'https://www.amazon.de/dp/B08HRBW6VB' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HM661YM&Quantity.1=1', - model: 'ventus 3x oc', - series: '3090', - url: 'https://www.amazon.de/dp/B08HM661YM' - }, - { - brand: 'palit', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JQQ1VD1&Quantity.1=1', - model: 'gaming pro', - series: '3090', - url: 'https://www.amazon.de/dp/B08JQQ1VD1' - }, - { - brand: 'nvidia', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HR6ZBYJ&Quantity.1=1', - model: 'founders edition', - series: '3090', - url: 'https://www.amazon.de/dp/B08HR6ZBYJ' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1', - model: 'trinity', - series: '3090', - url: 'https://www.amazon.de/dp/B08HJQ182D' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HSJ1622&Quantity.1=1', - model: 'dual', - series: '3070', - url: 'https://www.amazon.de/dp/B08HSJ1622' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHFZN9P&Quantity.1=1', - model: 'dual oc', - series: '3070', - url: 'https://www.amazon.de/dp/B08KHFZN9P' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HT7PR9Y&Quantity.1=1', - model: 'strix', - series: '3070', - url: 'https://www.amazon.de/dp/B08HT7PR9Y' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1', - model: 'strix oc', - series: '3070', - url: 'https://www.amazon.de/dp/B08L8JNTXQ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1', - model: 'ventus 2x oc', - series: '3070', - url: 'https://www.amazon.de/dp/B08KWPDXJZ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L6PCZTR&Quantity.1=1', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.amazon.de/dp/B08L6PCZTR' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', - model: 'gaming x trio', - series: '3070', - url: 'https://www.amazon.de/dp/B08KWN2LZG' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1', - model: 'vision oc', - series: '3070', - url: 'https://www.amazon.de/dp/B08M13DXSZ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHL21CV&Quantity.1=1', - model: 'gaming oc', - series: '3070', - url: 'https://www.amazon.de/dp/B08KHL21CV' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHL2J5X&Quantity.1=1', - model: 'eagle oc', - series: '3070', - url: 'https://www.amazon.de/dp/B08KHL2J5X' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L3QCZKZ&Quantity.1=1', - model: 'xc3 black', - series: '3070', - url: 'https://www.amazon.de/dp/B08L3QCZKZ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L3QZP7W&Quantity.1=1', - model: 'xc3', - series: '3070', - url: 'https://www.amazon.de/dp/B08L3QZP7W' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L3Q41SM&Quantity.1=1', - model: 'xc3 ultra', - series: '3070', - url: 'https://www.amazon.de/dp/B08L3Q41SM' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HRBR7K9&Quantity.1=1', - model: 'twin edge', - series: '3070', - url: 'https://www.amazon.de/dp/B08HRBR7K9' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08LBVNKT1&Quantity.1=1', - model: 'twin edge oc', - series: '3070', - url: 'https://www.amazon.de/dp/B08LBVNKT1' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1', - model: 'dual fan', - series: '3070', - url: 'https://www.amazon.de/dp/B08HBF5L3K' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1', - model: 'xlr8 revel', - series: '3070', - url: 'https://www.amazon.de/dp/B08HBJB7YD' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amazon.de/dp/B08166SLDF' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amazon.de/dp/B0815XFSGK' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amazon.de/dp/B08164VTWH' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amazon.de/dp/B0815Y8J9N' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08H93ZRK9&Quantity.1=1', - labels: { - inStock: { - container: '#productTitle', - text: ['sony playstation 5'] - } - }, - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.amazon.de/dp/B08H93ZRK9' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08H98GVK8&Quantity.1=1', - labels: { - inStock: { - container: '#productTitle', - text: ['sony playstation 5'] - } - }, - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.amazon.de/dp/B08H98GVK8' - }, - { - brand: 'microsoft', - // Fixme: disabled because of #1095, enable when working again - // cartUrl: - // 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08H93ZRLL&Quantity.1=1', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.amazon.de/dp/B08H93ZRLL' - }, - { - brand: 'microsoft', - // Fixme: disabled because of #1095, enable when working again - // cartUrl: - // 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B087VM5XC6&Quantity.1=1', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.amazon.de/dp/B087VM5XC6' - } - ], - name: 'amazon-de' + backoffStatusCodes: [403, 429, 503], + currency: '€', + labels: { + captcha: { + container: 'body', + text: [ + 'geben sie die unten angezeigten zeichen ein', + 'geben sie die zeichen unten ein', + ], + }, + inStock: { + container: '#add-to-cart-button', + text: ['in den einkaufswagen'], + }, + maxPrice: { + container: '#priceblock_ourprice', + euroFormat: true, + }, + outOfStock: [ + { + container: '#availability', + text: ['Derzeit nicht verfügbar'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B07PW9VBK5&Quantity.1=1', + model: 'test:model', + series: 'test:series', + url: 'https://www.amazon.de/dp/B07PW9VBK5', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN7VVLJ&Quantity.1=1', + model: 'strix', + series: '3080', + url: 'https://www.amazon.de/dp/B08HN7VVLJ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN6KYS3&Quantity.1=1', + model: 'strix oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08HN6KYS3', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN37VQK&Quantity.1=1', + model: 'tuf', + series: '3080', + url: 'https://www.amazon.de/dp/B08HN37VQK', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN4DSTC&Quantity.1=1', + model: 'tuf oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08HN4DSTC', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGBYWQ6&Quantity.1=1', + model: 'ftw3', + series: '3080', + url: 'https://www.amazon.de/dp/B08HGBYWQ6', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGYXP4C&Quantity.1=1', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.amazon.de/dp/B08HGYXP4C', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGLN78Q&Quantity.1=1', + model: 'xc3', + series: '3080', + url: 'https://www.amazon.de/dp/B08HGLN78Q', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HH1BMQQ&Quantity.1=1', + model: 'xc3 black', + series: '3080', + url: 'https://www.amazon.de/dp/B08HH1BMQQ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJ9XFNM&Quantity.1=1', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.amazon.de/dp/B08HJ9XFNM', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHLDS72&Quantity.1=1', + model: 'aorus master', + series: '3080', + url: 'https://www.amazon.de/dp/B08KHLDS72', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HHZVZ3N&Quantity.1=1', + model: 'eagle oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08HHZVZ3N', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HLZXHZY&Quantity.1=1', + model: 'gaming oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08HLZXHZY', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KH7RL89&Quantity.1=1', + model: 'vision oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08KH7RL89', + }, + { + brand: 'inno3d', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JD6QPXD&Quantity.1=1', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08JD6QPXD', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HM4V2DH&Quantity.1=1', + model: 'gaming x trio', + series: '3080', + url: 'https://www.amazon.de/dp/B08HM4V2DH', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HM4M621&Quantity.1=1', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08HM4M621', + }, + { + brand: 'palit', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JCVWTQY&Quantity.1=1', + model: 'gaming pro', + series: '3080', + url: 'https://www.amazon.de/dp/B08JCVWTQY', + }, + { + brand: 'palit', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JCKYYL8&Quantity.1=1', + model: 'gaming pro oc', + series: '3080', + url: 'https://www.amazon.de/dp/B08JCKYYL8', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HR1NPPQ&Quantity.1=1', + model: 'trinity', + series: '3080', + url: 'https://www.amazon.de/dp/B08HR1NPPQ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN642LY&Quantity.1=1', + model: 'strix', + series: '3090', + url: 'https://www.amazon.de/dp/B08HN642LY', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN51T8Q&Quantity.1=1', + model: 'strix oc', + series: '3090', + url: 'https://www.amazon.de/dp/B08HN51T8Q', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN4FLFJ&Quantity.1=1', + model: 'tuf', + series: '3090', + url: 'https://www.amazon.de/dp/B08HN4FLFJ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HN5B8FJ&Quantity.1=1', + model: 'tuf oc', + series: '3090', + url: 'https://www.amazon.de/dp/B08HN5B8FJ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGFNPJQ&Quantity.1=1', + model: 'ftw3', + series: '3090', + url: 'https://www.amazon.de/dp/B08HGFNPJQ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08J5NMDP7&Quantity.1=1', + model: 'ftw3', + series: '3090', + url: 'https://www.amazon.de/dp/B08J5NMDP7', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGS1SXH&Quantity.1=1', + model: 'ftw3 ultra', + series: '3090', + url: 'https://www.amazon.de/dp/B08HGS1SXH', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGZ4XSZ&Quantity.1=1', + model: 'xc3', + series: '3090', + url: 'https://www.amazon.de/dp/B08HGZ4XSZ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGKQ527&Quantity.1=1', + model: 'xc3 black', + series: '3090', + url: 'https://www.amazon.de/dp/B08HGKQ527', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HGTNDL4&Quantity.1=1', + model: 'xc3 ultra', + series: '3090', + url: 'https://www.amazon.de/dp/B08HGTNDL4', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KH7R4FQ&Quantity.1=1', + model: 'aorus master', + series: '3090', + url: 'https://www.amazon.de/dp/B08KH7R4FQ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1', + model: 'eagle oc', + series: '3090', + url: 'https://www.amazon.de/dp/B08HJPDJTY', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHKDTSJ&Quantity.1=1', + model: 'turbo', + series: '3090', + url: 'https://www.amazon.de/dp/B08KHKDTSJ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1', + model: 'gaming oc', + series: '3090', + url: 'https://www.amazon.de/dp/B08HJRF2CN', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HRBW6VB&Quantity.1=1', + model: 'gaming x trio', + series: '3090', + url: 'https://www.amazon.de/dp/B08HRBW6VB', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HM661YM&Quantity.1=1', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.amazon.de/dp/B08HM661YM', + }, + { + brand: 'palit', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08JQQ1VD1&Quantity.1=1', + model: 'gaming pro', + series: '3090', + url: 'https://www.amazon.de/dp/B08JQQ1VD1', + }, + { + brand: 'nvidia', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HR6ZBYJ&Quantity.1=1', + model: 'founders edition', + series: '3090', + url: 'https://www.amazon.de/dp/B08HR6ZBYJ', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1', + model: 'trinity', + series: '3090', + url: 'https://www.amazon.de/dp/B08HJQ182D', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HSJ1622&Quantity.1=1', + model: 'dual', + series: '3070', + url: 'https://www.amazon.de/dp/B08HSJ1622', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHFZN9P&Quantity.1=1', + model: 'dual oc', + series: '3070', + url: 'https://www.amazon.de/dp/B08KHFZN9P', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HT7PR9Y&Quantity.1=1', + model: 'strix', + series: '3070', + url: 'https://www.amazon.de/dp/B08HT7PR9Y', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1', + model: 'strix oc', + series: '3070', + url: 'https://www.amazon.de/dp/B08L8JNTXQ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.amazon.de/dp/B08KWPDXJZ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L6PCZTR&Quantity.1=1', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.amazon.de/dp/B08L6PCZTR', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', + model: 'gaming x trio', + series: '3070', + url: 'https://www.amazon.de/dp/B08KWN2LZG', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1', + model: 'vision oc', + series: '3070', + url: 'https://www.amazon.de/dp/B08M13DXSZ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHL21CV&Quantity.1=1', + model: 'gaming oc', + series: '3070', + url: 'https://www.amazon.de/dp/B08KHL21CV', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08KHL2J5X&Quantity.1=1', + model: 'eagle oc', + series: '3070', + url: 'https://www.amazon.de/dp/B08KHL2J5X', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L3QCZKZ&Quantity.1=1', + model: 'xc3 black', + series: '3070', + url: 'https://www.amazon.de/dp/B08L3QCZKZ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L3QZP7W&Quantity.1=1', + model: 'xc3', + series: '3070', + url: 'https://www.amazon.de/dp/B08L3QZP7W', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08L3Q41SM&Quantity.1=1', + model: 'xc3 ultra', + series: '3070', + url: 'https://www.amazon.de/dp/B08L3Q41SM', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HRBR7K9&Quantity.1=1', + model: 'twin edge', + series: '3070', + url: 'https://www.amazon.de/dp/B08HRBR7K9', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08LBVNKT1&Quantity.1=1', + model: 'twin edge oc', + series: '3070', + url: 'https://www.amazon.de/dp/B08LBVNKT1', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1', + model: 'dual fan', + series: '3070', + url: 'https://www.amazon.de/dp/B08HBF5L3K', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1', + model: 'xlr8 revel', + series: '3070', + url: 'https://www.amazon.de/dp/B08HBJB7YD', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amazon.de/dp/B08166SLDF', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amazon.de/dp/B0815XFSGK', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amazon.de/dp/B08164VTWH', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amazon.de/dp/B0815Y8J9N', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08H93ZRK9&Quantity.1=1', + labels: { + inStock: { + container: '#productTitle', + text: ['sony playstation 5'], + }, + }, + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.amazon.de/dp/B08H93ZRK9', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08H98GVK8&Quantity.1=1', + labels: { + inStock: { + container: '#productTitle', + text: ['sony playstation 5'], + }, + }, + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.amazon.de/dp/B08H98GVK8', + }, + { + brand: 'microsoft', + // Fixme: disabled because of #1095, enable when working again + // cartUrl: + // 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08H93ZRLL&Quantity.1=1', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.amazon.de/dp/B08H93ZRLL', + }, + { + brand: 'microsoft', + // Fixme: disabled because of #1095, enable when working again + // cartUrl: + // 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B087VM5XC6&Quantity.1=1', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.amazon.de/dp/B087VM5XC6', + }, + ], + name: 'amazon-de', }; diff --git a/src/store/model/amazon-es.ts b/src/store/model/amazon-es.ts index 76e54562d3..0e12bbc1a4 100644 --- a/src/store/model/amazon-es.ts +++ b/src/store/model/amazon-es.ts @@ -1,204 +1,204 @@ import {Store} from './store'; export const AmazonEs: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '€', - labels: { - captcha: { - container: 'body', - text: ['introduzca los caracteres que ve a continuación'] - }, - inStock: { - container: '#desktop_buybox', - text: ['añadir a la cesta'] - }, - maxPrice: { - container: '#priceblock_ourprice' - }, - outOfStock: [ - { - container: '#availability', - text: ['No disponible'] - } - ] - }, - links: [ - { - brand: 'test:brand', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B07PW9VBK5&Quantity.1=1', - model: 'test:model', - series: 'test:series', - url: 'https://www.amazon.es/dp/B07PW9VBK5' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HM4V2DH&Quantity.1=1', - model: 'gaming x trio', - series: '3080', - url: 'https://www.amazon.es/dp/B08HM4V2DH' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HGYXP4C&Quantity.1=1', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.amazon.es/dp/B08HGYXP4C' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HJ9XFNM&Quantity.1=1', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.amazon.es/dp/B08HJ9XFNM' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HGBYWQ6&Quantity.1=1', - model: 'ftw3', - series: '3080', - url: 'https://www.amazon.es/dp/B08HGBYWQ6' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HGLN78Q&Quantity.1=1', - model: 'xc3', - series: '3080', - url: 'https://www.amazon.es/dp/B08HGLN78Q' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HH1BMQQ&Quantity.1=1', - model: 'xc3 black', - series: '3080', - url: 'https://www.amazon.es/dp/B08HH1BMQQ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HLZXHZY&Quantity.1=1', - model: 'gaming oc', - series: '3080', - url: 'https://www.amazon.es/dp/B08HLZXHZY' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HHZVZ3N&Quantity.1=1', - model: 'eagle oc', - series: '3080', - url: 'https://www.amazon.es/dp/B08HHZVZ3N' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HN37VQK&Quantity.1=1', - model: 'tuf', - series: '3080', - url: 'https://www.amazon.es/dp/B08HN37VQK' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HN4DSTC&Quantity.1=1', - model: 'tuf oc', - series: '3080', - url: 'https://www.amazon.es/dp/B08HN4DSTC' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HN6KYS3&Quantity.1=1', - model: 'strix oc', - series: '3080', - url: 'https://www.amazon.es/dp/B08HN6KYS3' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HM4M621&Quantity.1=1', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.amazon.es/dp/B08HM4M621' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HR1NPPQ&Quantity.1=1', - model: 'trinity', - series: '3080', - url: 'https://www.amazon.es/dp/B08HR1NPPQ' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amazon.es/dp/B08166SLDF' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amazon.es/dp/B0815XFSGK' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amazon.es/dp/B08164VTWH' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amazon.es/dp/B0815Y8J9N' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08KKJ37F7&Quantity.1=1', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.amazon.es/dp/B08KKJ37F7' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08KJF2D25&Quantity.1=1', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.amazon.es/dp/B08KJF2D25' - }, - { - brand: 'microsoft', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08H93ZRLL&Quantity.1=1', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.amazon.es/dp/B08H93ZRLL' - }, - { - brand: 'microsoft', - cartUrl: - 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B087VM5XC6&Quantity.1=1', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.amazon.es/dp/B087VM5XC6' - } - ], - name: 'amazon-es' + backoffStatusCodes: [403, 429, 503], + currency: '€', + labels: { + captcha: { + container: 'body', + text: ['introduzca los caracteres que ve a continuación'], + }, + inStock: { + container: '#desktop_buybox', + text: ['añadir a la cesta'], + }, + maxPrice: { + container: '#priceblock_ourprice', + }, + outOfStock: [ + { + container: '#availability', + text: ['No disponible'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B07PW9VBK5&Quantity.1=1', + model: 'test:model', + series: 'test:series', + url: 'https://www.amazon.es/dp/B07PW9VBK5', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HM4V2DH&Quantity.1=1', + model: 'gaming x trio', + series: '3080', + url: 'https://www.amazon.es/dp/B08HM4V2DH', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HGYXP4C&Quantity.1=1', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.amazon.es/dp/B08HGYXP4C', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HJ9XFNM&Quantity.1=1', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.amazon.es/dp/B08HJ9XFNM', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HGBYWQ6&Quantity.1=1', + model: 'ftw3', + series: '3080', + url: 'https://www.amazon.es/dp/B08HGBYWQ6', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HGLN78Q&Quantity.1=1', + model: 'xc3', + series: '3080', + url: 'https://www.amazon.es/dp/B08HGLN78Q', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HH1BMQQ&Quantity.1=1', + model: 'xc3 black', + series: '3080', + url: 'https://www.amazon.es/dp/B08HH1BMQQ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HLZXHZY&Quantity.1=1', + model: 'gaming oc', + series: '3080', + url: 'https://www.amazon.es/dp/B08HLZXHZY', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HHZVZ3N&Quantity.1=1', + model: 'eagle oc', + series: '3080', + url: 'https://www.amazon.es/dp/B08HHZVZ3N', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HN37VQK&Quantity.1=1', + model: 'tuf', + series: '3080', + url: 'https://www.amazon.es/dp/B08HN37VQK', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HN4DSTC&Quantity.1=1', + model: 'tuf oc', + series: '3080', + url: 'https://www.amazon.es/dp/B08HN4DSTC', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HN6KYS3&Quantity.1=1', + model: 'strix oc', + series: '3080', + url: 'https://www.amazon.es/dp/B08HN6KYS3', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HM4M621&Quantity.1=1', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.amazon.es/dp/B08HM4M621', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08HR1NPPQ&Quantity.1=1', + model: 'trinity', + series: '3080', + url: 'https://www.amazon.es/dp/B08HR1NPPQ', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amazon.es/dp/B08166SLDF', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amazon.es/dp/B0815XFSGK', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amazon.es/dp/B08164VTWH', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amazon.es/dp/B0815Y8J9N', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08KKJ37F7&Quantity.1=1', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.amazon.es/dp/B08KKJ37F7', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08KJF2D25&Quantity.1=1', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.amazon.es/dp/B08KJF2D25', + }, + { + brand: 'microsoft', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B08H93ZRLL&Quantity.1=1', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.amazon.es/dp/B08H93ZRLL', + }, + { + brand: 'microsoft', + cartUrl: + 'https://www.amazon.es/gp/aws/cart/add.html?ASIN.1=B087VM5XC6&Quantity.1=1', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.amazon.es/dp/B087VM5XC6', + }, + ], + name: 'amazon-es', }; diff --git a/src/store/model/amazon-fr.ts b/src/store/model/amazon-fr.ts index 6d1f613141..e906cbd582 100644 --- a/src/store/model/amazon-fr.ts +++ b/src/store/model/amazon-fr.ts @@ -1,191 +1,191 @@ import {Store} from './store'; export const AmazonFr: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '€', - labels: { - captcha: { - container: 'body', - text: ['entrez les caractères que vous voyez ci-dessous'] - }, - inStock: { - container: '#desktop_buybox', - text: ['ajouter au panier'] - }, - maxPrice: { - container: '#priceblock_ourprice', - euroFormat: true - }, - outOfStock: [ - { - container: '#availability', - text: ['Actuellement indisponible'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.amazon.fr/dp/B07PW9VBK5' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HR7SV3M' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HR5SXPS' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HR3DPGW' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HR3Y5GQ' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HR55YB5' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HR4RJ3Q' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HR6FMF3' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HJTH61J' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HJS2JLJ' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HHDP9DW' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HH5WF97' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: 'https://www.amazon.fr/dp/B08HJNKT3P' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: 'https://www.amazon.fr/dp/B08HJQ182D' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: 'https://www.amazon.fr/dp/B08HR9D2JS' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: 'https://www.amazon.fr/dp/B08HJRF2CN' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: 'https://www.amazon.fr/dp/B08HJPDJTY' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: 'https://www.amazon.fr/dp/B08HJGNJ81' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: 'https://www.amazon.fr/dp/B08HJLLF7G' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amazon.fr/dp/B08166SLDF' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amazon.fr/dp/B0815XFSGK' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amazon.fr/dp/B08164VTWH' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amazon.fr/dp/B0815Y8J9N' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.amazon.fr/dp/B08H93ZRK9' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.amazon.fr/dp/B08H98GVK8' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.amazon.fr/dp/B08H93ZRLL' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.amazon.fr/dp/B087VM5XC6' - } - ], - name: 'amazon-fr' + backoffStatusCodes: [403, 429, 503], + currency: '€', + labels: { + captcha: { + container: 'body', + text: ['entrez les caractères que vous voyez ci-dessous'], + }, + inStock: { + container: '#desktop_buybox', + text: ['ajouter au panier'], + }, + maxPrice: { + container: '#priceblock_ourprice', + euroFormat: true, + }, + outOfStock: [ + { + container: '#availability', + text: ['Actuellement indisponible'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.amazon.fr/dp/B07PW9VBK5', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HR7SV3M', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HR5SXPS', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HR3DPGW', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HR3Y5GQ', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HR55YB5', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HR4RJ3Q', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HR6FMF3', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HJTH61J', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HJS2JLJ', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HHDP9DW', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HH5WF97', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: 'https://www.amazon.fr/dp/B08HJNKT3P', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: 'https://www.amazon.fr/dp/B08HJQ182D', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.amazon.fr/dp/B08HR9D2JS', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: 'https://www.amazon.fr/dp/B08HJRF2CN', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: 'https://www.amazon.fr/dp/B08HJPDJTY', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.amazon.fr/dp/B08HJGNJ81', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.amazon.fr/dp/B08HJLLF7G', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amazon.fr/dp/B08166SLDF', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amazon.fr/dp/B0815XFSGK', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amazon.fr/dp/B08164VTWH', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amazon.fr/dp/B0815Y8J9N', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.amazon.fr/dp/B08H93ZRK9', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.amazon.fr/dp/B08H98GVK8', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.amazon.fr/dp/B08H93ZRLL', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.amazon.fr/dp/B087VM5XC6', + }, + ], + name: 'amazon-fr', }; diff --git a/src/store/model/amazon-it.ts b/src/store/model/amazon-it.ts index 6723592454..6bf04209ae 100644 --- a/src/store/model/amazon-it.ts +++ b/src/store/model/amazon-it.ts @@ -1,417 +1,415 @@ import {Store} from './store'; export const AmazonIt: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '€', - labels: { - captcha: { - container: 'body', - text: [ - 'Inserisci i caratteri visualizzati nello spazio sottostante' - ] - }, - inStock: { - container: '#desktop_buybox', - text: ['Aggiungi al carrello'] - }, - maxPrice: { - container: '#priceblock_ourprice', - euroFormat: true - } - }, - links: [ - { - brand: 'asus', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KHFZN9P&Quantity.1=1', - model: 'dual', - series: '3070', - url: 'https://www.amazon.it/dp/B08KHFZN9P' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08L8HPKR6&Quantity.1=1', - model: 'dual', - series: '3070', - url: 'https://www.amazon.it/dp/B08L8HPKR6' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1', - model: 'strix', - series: '3070', - url: 'https://www.amazon.it/dp/B08L8JNTXQ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08L8KC1J7&Quantity.1=1', - model: 'tuf', - series: '3070', - url: 'https://www.amazon.it/dp/B08L8KC1J7' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', - model: 'gaming oc', - series: '3070', - url: 'https://www.amazon.it/dp/B08KY266MG' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', - model: 'gaming', - series: '3070', - url: 'https://www.amazon.it/dp/B08KWN2LZG' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1', - model: 'xlr8 revel', - series: '3070', - url: 'https://www.amazon.it/dp/B08HBJB7YD' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1', - model: 'xlr8 uprising', - series: '3070', - url: 'https://www.amazon.it/dp/B08HBF5L3K' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1', - model: 'ventus 2x oc', - series: '3070', - url: 'https://www.amazon.it/dp/B08KWPDXJZ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KWLMZV4&Quantity.1=1', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.amazon.it/dp/B08KWLMZV4' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08LF32LJ6&Quantity.1=1', - model: 'gaming', - series: '3070', - url: 'https://www.amazon.it/dp/B08LF32LJ6' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08L8L71SM&Quantity.1=1', - model: 'xc3 ultra', - series: '3070', - url: 'https://www.amazon.it/dp/B08L8L71SM' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08L8L9TCZ&Quantity.1=1', - model: 'ftw3 ultra', - series: '3070', - url: 'https://www.amazon.it/dp/B08L8L9TCZ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', - model: 'gaming oc', - series: '3070', - url: 'https://www.amazon.it/dp/B08KY266MG' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1', - model: 'vision oc', - series: '3070', - url: 'https://www.amazon.it/dp/B08M13DXSZ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KXZV626&Quantity.1=1', - model: 'eagle', - series: '3070', - url: 'https://www.amazon.it/dp/B08KXZV626' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBR7QBM&Quantity.1=1', - model: 'xlr8 revel', - series: '3080', - url: 'https://www.amazon.it/dp/B08HBR7QBM' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBTJMLJ&Quantity.1=1', - model: 'xlr8 revel', - series: '3080', - url: 'https://www.amazon.it/dp/B08HBTJMLJ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR3Y5GQ&Quantity.1=1', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.amazon.it/dp/B08HR3Y5GQ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR55YB5&Quantity.1=1', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.amazon.it/dp/B08HR55YB5' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR4RJ3Q&Quantity.1=1', - model: 'xc3', - series: '3080', - url: 'https://www.amazon.it/dp/B08HR4RJ3Q' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR6FMF3&Quantity.1=1', - model: 'xc3 black', - series: '3080', - url: 'https://www.amazon.it/dp/B08HR6FMF3' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJTH61J&Quantity.1=1', - model: 'gaming oc', - series: '3080', - url: 'https://www.amazon.it/dp/B08HJTH61J' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJS2JLJ&Quantity.1=1', - model: 'eagle oc', - series: '3080', - url: 'https://www.amazon.it/dp/B08HJS2JLJ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HH5WF97&Quantity.1=1', - model: 'tuf oc', - series: '3080', - url: 'https://www.amazon.it/dp/B08HH5WF97' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HHDP9DW&Quantity.1=1', - model: 'tuf', - series: '3080', - url: 'https://www.amazon.it/dp/B08HHDP9DW' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08J6GMWCQ&Quantity.1=1', - model: 'strix oc', - series: '3090', - url: 'https://www.amazon.it/dp/B08J6GMWCQ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR5SXPS&Quantity.1=1', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.amazon.it/dp/B08HR5SXPS' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJNKT3P&Quantity.1=1', - model: 'trinity', - series: '3080', - url: 'https://www.amazon.it/dp/B08HJNKT3P' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1', - model: 'trinity', - series: '3090', - url: 'https://www.amazon.it/dp/B08HJQ182D' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBQWBHH&Quantity.1=1', - model: 'xlr8 revel', - series: '3090', - url: 'https://www.amazon.it/dp/B08HBQWBHH' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBVX53D&Quantity.1=1', - model: 'xlr8 revel', - series: '3090', - url: 'https://www.amazon.it/dp/B08HBVX53D' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HRBW6VB&Quantity.1=1', - model: 'gaming x trio', - series: '3090', - url: 'https://www.amazon.it/dp/B08HRBW6VB' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR9D2JS&Quantity.1=1', - model: 'ventus 3x', - series: '3090', - url: 'https://www.amazon.it/dp/B08HR9D2JS' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1', - model: 'gaming oc', - series: '3090', - url: 'https://www.amazon.it/dp/B08HJRF2CN' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1', - model: 'eagle oc', - series: '3090', - url: 'https://www.amazon.it/dp/B08HJPDJTY' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJGNJ81&Quantity.1=1', - model: 'tuf oc', - series: '3090', - url: 'https://www.amazon.it/dp/B08HJGNJ81' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJLLF7G&Quantity.1=1', - model: 'tuf oc', - series: '3090', - url: 'https://www.amazon.it/dp/B08HJLLF7G' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amazon.it/dp/B08166SLDF' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amazon.it/dp/product/B0815XFSGK' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amazon.it/dp/B08164VTWH' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amazon.it/dp/B0815Y8J9N' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08MVC76SR&Quantity.1=1', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amazon.it/dp/B08MVC76SR' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08MVCLBWK&Quantity.1=1', - model: 'amd reference', - series: 'rx6800', - url: 'https://www.amazon.it/dp/B08MVCLBWK' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KKJ37F7&Quantity.1=1', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.amazon.it/dp/B08KKJ37F7' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KJF2D25&Quantity.1=1', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.amazon.it/dp/B08KJF2D25' - }, - { - brand: 'microsoft', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08JDSW1ZW&Quantity.1=1', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.amazon.it/dp/B08JDSW1ZW' - }, - { - brand: 'microsoft', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08JDTCXRG&Quantity.1=1', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.amazon.it/dp/B08JDTCXRG' - }, - { - brand: 'corsair', - cartUrl: - 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B07M63H81H&Quantity.1=1', - model: '750 platinum', - series: 'sf', - url: 'https://www.amazon.it/dp/B07M63H81H' - } - ], - name: 'amazon-it' + backoffStatusCodes: [403, 429, 503], + currency: '€', + labels: { + captcha: { + container: 'body', + text: ['Inserisci i caratteri visualizzati nello spazio sottostante'], + }, + inStock: { + container: '#desktop_buybox', + text: ['Aggiungi al carrello'], + }, + maxPrice: { + container: '#priceblock_ourprice', + euroFormat: true, + }, + }, + links: [ + { + brand: 'asus', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KHFZN9P&Quantity.1=1', + model: 'dual', + series: '3070', + url: 'https://www.amazon.it/dp/B08KHFZN9P', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08L8HPKR6&Quantity.1=1', + model: 'dual', + series: '3070', + url: 'https://www.amazon.it/dp/B08L8HPKR6', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1', + model: 'strix', + series: '3070', + url: 'https://www.amazon.it/dp/B08L8JNTXQ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08L8KC1J7&Quantity.1=1', + model: 'tuf', + series: '3070', + url: 'https://www.amazon.it/dp/B08L8KC1J7', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', + model: 'gaming oc', + series: '3070', + url: 'https://www.amazon.it/dp/B08KY266MG', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', + model: 'gaming', + series: '3070', + url: 'https://www.amazon.it/dp/B08KWN2LZG', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1', + model: 'xlr8 revel', + series: '3070', + url: 'https://www.amazon.it/dp/B08HBJB7YD', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1', + model: 'xlr8 uprising', + series: '3070', + url: 'https://www.amazon.it/dp/B08HBF5L3K', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.amazon.it/dp/B08KWPDXJZ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KWLMZV4&Quantity.1=1', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.amazon.it/dp/B08KWLMZV4', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08LF32LJ6&Quantity.1=1', + model: 'gaming', + series: '3070', + url: 'https://www.amazon.it/dp/B08LF32LJ6', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08L8L71SM&Quantity.1=1', + model: 'xc3 ultra', + series: '3070', + url: 'https://www.amazon.it/dp/B08L8L71SM', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08L8L9TCZ&Quantity.1=1', + model: 'ftw3 ultra', + series: '3070', + url: 'https://www.amazon.it/dp/B08L8L9TCZ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', + model: 'gaming oc', + series: '3070', + url: 'https://www.amazon.it/dp/B08KY266MG', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1', + model: 'vision oc', + series: '3070', + url: 'https://www.amazon.it/dp/B08M13DXSZ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KXZV626&Quantity.1=1', + model: 'eagle', + series: '3070', + url: 'https://www.amazon.it/dp/B08KXZV626', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBR7QBM&Quantity.1=1', + model: 'xlr8 revel', + series: '3080', + url: 'https://www.amazon.it/dp/B08HBR7QBM', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBTJMLJ&Quantity.1=1', + model: 'xlr8 revel', + series: '3080', + url: 'https://www.amazon.it/dp/B08HBTJMLJ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR3Y5GQ&Quantity.1=1', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.amazon.it/dp/B08HR3Y5GQ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR55YB5&Quantity.1=1', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.amazon.it/dp/B08HR55YB5', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR4RJ3Q&Quantity.1=1', + model: 'xc3', + series: '3080', + url: 'https://www.amazon.it/dp/B08HR4RJ3Q', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR6FMF3&Quantity.1=1', + model: 'xc3 black', + series: '3080', + url: 'https://www.amazon.it/dp/B08HR6FMF3', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJTH61J&Quantity.1=1', + model: 'gaming oc', + series: '3080', + url: 'https://www.amazon.it/dp/B08HJTH61J', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJS2JLJ&Quantity.1=1', + model: 'eagle oc', + series: '3080', + url: 'https://www.amazon.it/dp/B08HJS2JLJ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HH5WF97&Quantity.1=1', + model: 'tuf oc', + series: '3080', + url: 'https://www.amazon.it/dp/B08HH5WF97', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HHDP9DW&Quantity.1=1', + model: 'tuf', + series: '3080', + url: 'https://www.amazon.it/dp/B08HHDP9DW', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08J6GMWCQ&Quantity.1=1', + model: 'strix oc', + series: '3090', + url: 'https://www.amazon.it/dp/B08J6GMWCQ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR5SXPS&Quantity.1=1', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.amazon.it/dp/B08HR5SXPS', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJNKT3P&Quantity.1=1', + model: 'trinity', + series: '3080', + url: 'https://www.amazon.it/dp/B08HJNKT3P', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1', + model: 'trinity', + series: '3090', + url: 'https://www.amazon.it/dp/B08HJQ182D', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBQWBHH&Quantity.1=1', + model: 'xlr8 revel', + series: '3090', + url: 'https://www.amazon.it/dp/B08HBQWBHH', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HBVX53D&Quantity.1=1', + model: 'xlr8 revel', + series: '3090', + url: 'https://www.amazon.it/dp/B08HBVX53D', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HRBW6VB&Quantity.1=1', + model: 'gaming x trio', + series: '3090', + url: 'https://www.amazon.it/dp/B08HRBW6VB', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HR9D2JS&Quantity.1=1', + model: 'ventus 3x', + series: '3090', + url: 'https://www.amazon.it/dp/B08HR9D2JS', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1', + model: 'gaming oc', + series: '3090', + url: 'https://www.amazon.it/dp/B08HJRF2CN', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1', + model: 'eagle oc', + series: '3090', + url: 'https://www.amazon.it/dp/B08HJPDJTY', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJGNJ81&Quantity.1=1', + model: 'tuf oc', + series: '3090', + url: 'https://www.amazon.it/dp/B08HJGNJ81', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08HJLLF7G&Quantity.1=1', + model: 'tuf oc', + series: '3090', + url: 'https://www.amazon.it/dp/B08HJLLF7G', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amazon.it/dp/B08166SLDF', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amazon.it/dp/product/B0815XFSGK', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amazon.it/dp/B08164VTWH', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amazon.it/dp/B0815Y8J9N', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08MVC76SR&Quantity.1=1', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amazon.it/dp/B08MVC76SR', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08MVCLBWK&Quantity.1=1', + model: 'amd reference', + series: 'rx6800', + url: 'https://www.amazon.it/dp/B08MVCLBWK', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KKJ37F7&Quantity.1=1', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.amazon.it/dp/B08KKJ37F7', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08KJF2D25&Quantity.1=1', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.amazon.it/dp/B08KJF2D25', + }, + { + brand: 'microsoft', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08JDSW1ZW&Quantity.1=1', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.amazon.it/dp/B08JDSW1ZW', + }, + { + brand: 'microsoft', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B08JDTCXRG&Quantity.1=1', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.amazon.it/dp/B08JDTCXRG', + }, + { + brand: 'corsair', + cartUrl: + 'https://www.amazon.it/gp/aws/cart/add.html?ASIN.1=B07M63H81H&Quantity.1=1', + model: '750 platinum', + series: 'sf', + url: 'https://www.amazon.it/dp/B07M63H81H', + }, + ], + name: 'amazon-it', }; diff --git a/src/store/model/amazon-nl.ts b/src/store/model/amazon-nl.ts index 1a69af523b..f68b139cbf 100644 --- a/src/store/model/amazon-nl.ts +++ b/src/store/model/amazon-nl.ts @@ -1,240 +1,238 @@ import {Store} from './store'; export const AmazonNl: Store = { - currency: '€', - labels: { - captcha: { - container: 'body', - text: ['voer de karakters in die u hieronder ziet'] - }, - inStock: [ - { - container: '#add-to-cart-button', - text: ['in winkelwagen'] - }, - { - container: '#buy-now-button', - text: ['nu kopen'] - } - ], - maxPrice: { - container: '#priceblock_ourprice', - euroFormat: true - }, - outOfStock: [ - { - container: '#availability', - text: ['tijdelijk niet'] - }, - { - container: '#outOfStock', - text: [ - 'we weten niet of en wanneer dit item weer op voorraad is' - ] - } - ] - }, - links: [ - { - brand: 'test:brand', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B085K45C3S&Quantity.1=1', - model: 'test:model', - series: 'test:series', - url: 'https://www.amazon.nl/dp/B085K45C3S' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HM4M621&Quantity.1=1', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.amazon.nl/dp/B08HM4M621' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HM4V2DH&Quantity.1=1', - model: 'gaming x trio', - series: '3080', - url: 'https://www.amazon.nl/dp/B08HM4V2DH' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HJ9XFNM&Quantity.1=1', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.amazon.nl/dp/B08HJ9XFNM' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HH1BMQQ&Quantity.1=1', - model: 'xc3 black', - series: '3080', - url: 'https://www.amazon.nl/dp/B08HH1BMQQ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HN7VVLJ&Quantity.1=1', - model: 'strix', - series: '3080', - url: 'https://www.amazon.nl/dp/B08HN7VVLJ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P2DQ28S&Quantity.1=1', - model: 'ventus 2x oc', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08P2DQ28S' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08NW2YJB2&Quantity.1=1', - model: 'ventus 2x oc', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08NW2YJB2' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P3XJLJJ&Quantity.1=1', - model: 'twin edge', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08P3XJLJJ' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P3V572B&Quantity.1=1', - model: 'twin edge oc', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08P3V572B' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P3BJ9Y8&Quantity.1=1', - model: 'twin edge oc', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08P3BJ9Y8' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P3JPX8P&Quantity.1=1', - model: 'eagle', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08P3JPX8P' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08NW2X37Z&Quantity.1=1', - model: 'gaming oc', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08NW2X37Z' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08NW528S1&Quantity.1=1', - model: 'eagle oc', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08NW528S1' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08NW693LG&Quantity.1=1', - model: 'xlr8 revel', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08NW693LG' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B083Z5P6TX&Quantity.1=1', - model: 'tuf oc', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B083Z5P6TX' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08NZ4G4T2&Quantity.1=1', - model: 'tuf oc', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08NZ4G4T2' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P2HBBLX&Quantity.1=1', - model: 'dual oc', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08P2HBBLX' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08PDN36R3&Quantity.1=1', - model: 'ftw3', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08PDN36R3' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08PDP837W&Quantity.1=1', - model: 'xc gaming', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08PDP837W' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08PDMVPZ4&Quantity.1=1', - model: 'xc3 black', - series: '3060ti', - url: 'https://www.amazon.nl/dp/B08PDMVPZ4' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amazon.nl/dp/B08166SLDF' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amazon.nl/dp/B0815XFSGK' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amazon.nl/dp/B08164VTWH' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amazon.nl/dp/B0815Y8J9N' - } - ], - name: 'amazon-nl' + currency: '€', + labels: { + captcha: { + container: 'body', + text: ['voer de karakters in die u hieronder ziet'], + }, + inStock: [ + { + container: '#add-to-cart-button', + text: ['in winkelwagen'], + }, + { + container: '#buy-now-button', + text: ['nu kopen'], + }, + ], + maxPrice: { + container: '#priceblock_ourprice', + euroFormat: true, + }, + outOfStock: [ + { + container: '#availability', + text: ['tijdelijk niet'], + }, + { + container: '#outOfStock', + text: ['we weten niet of en wanneer dit item weer op voorraad is'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B085K45C3S&Quantity.1=1', + model: 'test:model', + series: 'test:series', + url: 'https://www.amazon.nl/dp/B085K45C3S', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HM4M621&Quantity.1=1', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.amazon.nl/dp/B08HM4M621', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HM4V2DH&Quantity.1=1', + model: 'gaming x trio', + series: '3080', + url: 'https://www.amazon.nl/dp/B08HM4V2DH', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HJ9XFNM&Quantity.1=1', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.amazon.nl/dp/B08HJ9XFNM', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HH1BMQQ&Quantity.1=1', + model: 'xc3 black', + series: '3080', + url: 'https://www.amazon.nl/dp/B08HH1BMQQ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08HN7VVLJ&Quantity.1=1', + model: 'strix', + series: '3080', + url: 'https://www.amazon.nl/dp/B08HN7VVLJ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P2DQ28S&Quantity.1=1', + model: 'ventus 2x oc', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08P2DQ28S', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08NW2YJB2&Quantity.1=1', + model: 'ventus 2x oc', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08NW2YJB2', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P3XJLJJ&Quantity.1=1', + model: 'twin edge', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08P3XJLJJ', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P3V572B&Quantity.1=1', + model: 'twin edge oc', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08P3V572B', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P3BJ9Y8&Quantity.1=1', + model: 'twin edge oc', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08P3BJ9Y8', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P3JPX8P&Quantity.1=1', + model: 'eagle', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08P3JPX8P', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08NW2X37Z&Quantity.1=1', + model: 'gaming oc', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08NW2X37Z', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08NW528S1&Quantity.1=1', + model: 'eagle oc', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08NW528S1', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08NW693LG&Quantity.1=1', + model: 'xlr8 revel', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08NW693LG', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B083Z5P6TX&Quantity.1=1', + model: 'tuf oc', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B083Z5P6TX', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08NZ4G4T2&Quantity.1=1', + model: 'tuf oc', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08NZ4G4T2', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08P2HBBLX&Quantity.1=1', + model: 'dual oc', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08P2HBBLX', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08PDN36R3&Quantity.1=1', + model: 'ftw3', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08PDN36R3', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08PDP837W&Quantity.1=1', + model: 'xc gaming', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08PDP837W', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08PDMVPZ4&Quantity.1=1', + model: 'xc3 black', + series: '3060ti', + url: 'https://www.amazon.nl/dp/B08PDMVPZ4', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amazon.nl/dp/B08166SLDF', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amazon.nl/dp/B0815XFSGK', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amazon.nl/dp/B08164VTWH', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.nl/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amazon.nl/dp/B0815Y8J9N', + }, + ], + name: 'amazon-nl', }; diff --git a/src/store/model/amazon-sg.ts b/src/store/model/amazon-sg.ts index d3cb22d4fd..3d1203ec80 100644 --- a/src/store/model/amazon-sg.ts +++ b/src/store/model/amazon-sg.ts @@ -1,760 +1,760 @@ import {Store} from './store'; export const AmazonSg: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '$', - labels: { - captcha: { - container: 'body', - text: ['enter the characters you see below'] - }, - inStock: [ - { - container: '#add-to-cart-button', - text: ['add to cart'] - }, - { - container: '#buy-now-button', - text: ['buy now'] - } - ], - maxPrice: { - container: '#priceblock_ourprice' - } - }, - links: [ - { - brand: 'test:brand', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B083248S3B&Quantity.1=1', - model: 'test:model', - series: 'test:series', - url: 'https://www.amazon.sg/dp/B083248S3B' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P2HBBLX&Quantity.1=1', - model: 'dual', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B08P2HBBLX' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NYP7KG6&Quantity.1=1', - model: 'gaming oc', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B08NYP7KG6' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NYPLXPJ&Quantity.1=1', - model: 'gaming oc pro', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B08NYPLXPJ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NYNJ6RC&Quantity.1=1', - model: 'eagle', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B08NYNJ6RC' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B083Z5P6TX&Quantity.1=1', - model: 'tuf', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B083Z5P6TX' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P2D3JSG&Quantity.1=1', - model: 'gaming x trio', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B08P2D3JSG' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P2DQ28S&Quantity.1=1', - model: 'ventus 2x', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B08P2DQ28S' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P3XJLJJ&Quantity.1=1', - model: 'twin edge oc', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B08P3XJLJJ' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P3V572B&Quantity.1=1', - model: 'twin edge', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B08P3V572B' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P2D1JZZ&Quantity.1=1', - model: 'ko', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B08P2D1JZZ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B083Z7TR8Z&Quantity.1=1', - model: 'strix', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B083Z7TR8Z' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P2H5LW2&Quantity.1=1', - model: 'ftw3', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B08P2H5LW2' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NYPKW1Z&Quantity.1=1', - model: 'eagle oc', - series: '3060ti', - url: 'https://www.amazon.sg/dp/B08NYPKW1Z' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8LG4M3&Quantity.1=1', - model: 'dual', - series: '3070', - url: 'https://www.amazon.sg/dp/B08L8LG4M3' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8HPKR6&Quantity.1=1', - model: 'dual', - series: '3070', - url: 'https://www.amazon.sg/dp/B08L8HPKR6' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1', - model: 'xc3 black', - series: '3070', - url: 'https://www.amazon.sg/dp/B08LW46GH2' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1', - model: 'strix', - series: '3070', - url: 'https://www.amazon.sg/dp/B08L8JNTXQ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8KC1J7&Quantity.1=1', - model: 'tuf', - series: '3070', - url: 'https://www.amazon.sg/dp/B08L8KC1J7' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', - model: 'gaming oc', - series: '3070', - url: 'https://www.amazon.sg/dp/B08KY266MG' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', - model: 'gaming', - series: '3070', - url: 'https://www.amazon.sg/dp/B08KWN2LZG' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1', - model: 'xlr8 revel', - series: '3070', - url: 'https://www.amazon.sg/dp/B08HBJB7YD' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1', - model: 'xlr8 uprising', - series: '3070', - url: 'https://www.amazon.sg/dp/B08HBF5L3K' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1', - model: 'ventus 2x oc', - series: '3070', - url: 'https://www.amazon.sg/dp/B08KWPDXJZ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KWLMZV4&Quantity.1=1', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.amazon.sg/dp/B08KWLMZV4' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08LF1CWT2&Quantity.1=1', - model: 'twin edge oc', - series: '3070', - url: 'https://www.amazon.sg/dp/B08LF1CWT2' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08LF32LJ6&Quantity.1=1', - model: 'gaming', - series: '3070', - url: 'https://www.amazon.sg/dp/B08LF32LJ6' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8L71SM&Quantity.1=1', - model: 'xc3 ultra', - series: '3070', - url: 'https://www.amazon.sg/dp/B08L8L71SM' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8L9TCZ&Quantity.1=1', - model: 'ftw3 ultra', - series: '3070', - url: 'https://www.amazon.sg/dp/B08L8L9TCZ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1', - model: 'xc3 black', - series: '3070', - url: 'https://www.amazon.sg/dp/B08LW46GH2' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', - model: 'gaming oc', - series: '3070', - url: 'https://www.amazon.sg/dp/B08KY266MG' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1', - model: 'vision oc', - series: '3070', - url: 'https://www.amazon.sg/dp/B08M13DXSZ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08M4YFNX2&Quantity.1=1', - model: 'gaming oc', - series: '3070', - url: 'https://www.amazon.sg/dp/B08M4YFNX2' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KXZV626&Quantity.1=1', - model: 'eagle', - series: '3070', - url: 'https://www.amazon.sg/dp/B08KXZV626' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KY322TH&Quantity.1=1', - model: 'eagle oc', - series: '3070', - url: 'https://www.amazon.sg/dp/B08KY322TH' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBR7QBM&Quantity.1=1', - model: 'xlr8 revel', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HBR7QBM' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBTJMLJ&Quantity.1=1', - model: 'xlr8 revel', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HBTJMLJ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR7SV3M&Quantity.1=1', - model: 'gaming x trio', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HR7SV3M' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR3Y5GQ&Quantity.1=1', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HR3Y5GQ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR55YB5&Quantity.1=1', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HR55YB5' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR3DPGW&Quantity.1=1', - model: 'ftw3', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HR3DPGW' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR4RJ3Q&Quantity.1=1', - model: 'xc3', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HR4RJ3Q' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR6FMF3&Quantity.1=1', - model: 'xc3 black', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HR6FMF3' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJTH61J&Quantity.1=1', - model: 'gaming oc', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HJTH61J' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJS2JLJ&Quantity.1=1', - model: 'eagle oc', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HJS2JLJ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HH5WF97&Quantity.1=1', - model: 'tuf oc', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HH5WF97' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HHDP9DW&Quantity.1=1', - model: 'tuf', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HHDP9DW' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08J6F174Z&Quantity.1=1', - model: 'strix oc', - series: '3080', - url: 'https://www.amazon.sg/dp/B08J6F174Z' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08J6GMWCQ&Quantity.1=1', - model: 'strix oc', - series: '3090', - url: 'https://www.amazon.sg/dp/B08J6GMWCQ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR5SXPS&Quantity.1=1', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HR5SXPS' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJNKT3P&Quantity.1=1', - model: 'trinity', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HJNKT3P' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HVV2P4Z&Quantity.1=1', - model: 'trinity oc', - series: '3080', - url: 'https://www.amazon.sg/dp/B08HVV2P4Z' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1', - model: 'trinity', - series: '3090', - url: 'https://www.amazon.sg/dp/B08HJQ182D' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBQWBHH&Quantity.1=1', - model: 'xlr8 revel', - series: '3090', - url: 'https://www.amazon.sg/dp/B08HBQWBHH' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBVX53D&Quantity.1=1', - model: 'xlr8 revel', - series: '3090', - url: 'https://www.amazon.sg/dp/B08HBVX53D' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HRBW6VB&Quantity.1=1', - model: 'gaming x trio', - series: '3090', - url: 'https://www.amazon.sg/dp/B08HRBW6VB' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR9D2JS&Quantity.1=1', - model: 'ventus 3x', - series: '3090', - url: 'https://www.amazon.sg/dp/B08HR9D2JS' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08J5F3G18&Quantity.1=1', - model: 'ftw3 ultra', - series: '3090', - url: 'https://www.amazon.sg/dp/B08J5F3G18' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1', - model: 'gaming oc', - series: '3090', - url: 'https://www.amazon.sg/dp/B08HJRF2CN' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1', - model: 'eagle oc', - series: '3090', - url: 'https://www.amazon.sg/dp/B08HJPDJTY' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJGNJ81&Quantity.1=1', - model: 'tuf oc', - series: '3090', - url: 'https://www.amazon.sg/dp/B08HJGNJ81' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJLLF7G&Quantity.1=1', - model: 'tuf oc', - series: '3090', - url: 'https://www.amazon.sg/dp/B08HJLLF7G' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amazon.sg/dp/B08166SLDF' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amazon.sg/dp/product/B0815XFSGK' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amazon.sg/dp/B08164VTWH' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amazon.sg/dp/B0815Y8J9N' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08PHWJC8X&Quantity.1=1', - model: 'amd reference', - series: 'rx6900xt', - url: 'https://www.amazon.sg/dp/B08PHWJC8X' - }, - { - brand: 'xfx', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08PDQJVD9&Quantity.1=1', - model: 'amd reference', - series: 'rx6900xt', - url: 'https://www.amazon.sg/dp/B08PDQJVD9' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NS4W2ZY&Quantity.1=1', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amazon.sg/dp/B08NS4W2ZY' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08MVC76SR&Quantity.1=1', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amazon.sg/dp/B08MVC76SR' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NXXT7WN&Quantity.1=1', - model: 'nitro+', - series: 'rx6800xt', - url: 'https://www.amazon.sg/dp/B08NXXT7WN' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NXYNLMR&Quantity.1=1', - model: 'pulse', - series: 'rx6800xt', - url: 'https://www.amazon.sg/dp/B08NXYNLMR' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NXVNMPQ&Quantity.1=1', - model: 'nitro+', - series: 'rx6800xt', - url: 'https://www.amazon.sg/dp/B08NXVNMPQ' - }, - { - brand: 'xfx', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08N6ZLX9B&Quantity.1=1', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amazon.sg/dp/B08N6ZLX9B' - }, - { - brand: 'xfx', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NX14LV1&Quantity.1=1', - model: 'merc', - series: 'rx6800xt', - url: 'https://www.amazon.sg/dp/B08NX14LV1' - }, - { - brand: 'xfx', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NN76VJD&Quantity.1=1', - model: 'amd reference', - series: 'rx6800', - url: 'https://www.amazon.sg/dp/B08NN76VJD' - }, - { - brand: 'xfx', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P5YFZCY&Quantity.1=1', - model: 'merc', - series: 'rx6800', - url: 'https://www.amazon.sg/dp/B08P5YFZCY' - }, - { - brand: 'powercolor', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08MNZM5TK&Quantity.1=1', - model: 'amd reference', - series: 'rx6800', - url: 'https://www.amazon.sg/dp/B08MNZM5TK' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08MVCLBWK&Quantity.1=1', - model: 'amd reference', - series: 'rx6800', - url: 'https://www.amazon.sg/dp/B08MVCLBWK' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NXZSPMY&Quantity.1=1', - model: 'nitro+', - series: 'rx6800', - url: 'https://www.amazon.sg/dp/B08NXZSPMY' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NXYBVDB&Quantity.1=1', - model: 'pulse', - series: 'rx6800', - url: 'https://www.amazon.sg/dp/B08NXYBVDB' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NWJ29NB&Quantity.1=1', - model: 'strix oc', - series: 'rx6800', - url: 'https://www.amazon.sg/dp/B08NWJ29NB' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P3YT3MY&Quantity.1=1', - model: 'tuf oc', - series: 'rx6800', - url: 'https://www.amazon.sg/dp/B08P3YT3MY' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NWHKGS9&Quantity.1=1', - model: 'strix lc', - series: 'rx6800xt', - url: 'https://www.amazon.sg/dp/B08NWHKGS9' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08FC5L3RG&Quantity.1=1', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.amazon.sg/dp/B08FC5L3RG' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HNRSVQP&Quantity.1=1', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.amazon.sg/dp/B08HNRSVQP' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08FC6MR62&Quantity.1=1', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.amazon.sg/dp/B08FC6MR62' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HNSWWT7&Quantity.1=1', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.amazon.sg/dp/B08HNSWWT7' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.amazon.sg/dp/B08H75RTZ8' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.amazon.sg/dp/B08G9J44ZN' - }, - { - brand: 'corsair', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B07M63H81H&Quantity.1=1', - model: '750 platinum', - series: 'sf', - url: 'https://www.amazon.sg/dp/B07M63H81H' - }, - { - brand: 'corsair', - cartUrl: - 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B07F84FJ1G&Quantity.1=1', - model: '600 platinum', - series: 'sf', - url: 'https://www.amazon.sg/dp/B07F84FJ1G' - } - ], - name: 'amazon-sg' + backoffStatusCodes: [403, 429, 503], + currency: '$', + labels: { + captcha: { + container: 'body', + text: ['enter the characters you see below'], + }, + inStock: [ + { + container: '#add-to-cart-button', + text: ['add to cart'], + }, + { + container: '#buy-now-button', + text: ['buy now'], + }, + ], + maxPrice: { + container: '#priceblock_ourprice', + }, + }, + links: [ + { + brand: 'test:brand', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B083248S3B&Quantity.1=1', + model: 'test:model', + series: 'test:series', + url: 'https://www.amazon.sg/dp/B083248S3B', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P2HBBLX&Quantity.1=1', + model: 'dual', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B08P2HBBLX', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NYP7KG6&Quantity.1=1', + model: 'gaming oc', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B08NYP7KG6', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NYPLXPJ&Quantity.1=1', + model: 'gaming oc pro', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B08NYPLXPJ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NYNJ6RC&Quantity.1=1', + model: 'eagle', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B08NYNJ6RC', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B083Z5P6TX&Quantity.1=1', + model: 'tuf', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B083Z5P6TX', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P2D3JSG&Quantity.1=1', + model: 'gaming x trio', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B08P2D3JSG', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P2DQ28S&Quantity.1=1', + model: 'ventus 2x', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B08P2DQ28S', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P3XJLJJ&Quantity.1=1', + model: 'twin edge oc', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B08P3XJLJJ', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P3V572B&Quantity.1=1', + model: 'twin edge', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B08P3V572B', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P2D1JZZ&Quantity.1=1', + model: 'ko', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B08P2D1JZZ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B083Z7TR8Z&Quantity.1=1', + model: 'strix', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B083Z7TR8Z', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P2H5LW2&Quantity.1=1', + model: 'ftw3', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B08P2H5LW2', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NYPKW1Z&Quantity.1=1', + model: 'eagle oc', + series: '3060ti', + url: 'https://www.amazon.sg/dp/B08NYPKW1Z', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8LG4M3&Quantity.1=1', + model: 'dual', + series: '3070', + url: 'https://www.amazon.sg/dp/B08L8LG4M3', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8HPKR6&Quantity.1=1', + model: 'dual', + series: '3070', + url: 'https://www.amazon.sg/dp/B08L8HPKR6', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1', + model: 'xc3 black', + series: '3070', + url: 'https://www.amazon.sg/dp/B08LW46GH2', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1', + model: 'strix', + series: '3070', + url: 'https://www.amazon.sg/dp/B08L8JNTXQ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8KC1J7&Quantity.1=1', + model: 'tuf', + series: '3070', + url: 'https://www.amazon.sg/dp/B08L8KC1J7', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', + model: 'gaming oc', + series: '3070', + url: 'https://www.amazon.sg/dp/B08KY266MG', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', + model: 'gaming', + series: '3070', + url: 'https://www.amazon.sg/dp/B08KWN2LZG', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1', + model: 'xlr8 revel', + series: '3070', + url: 'https://www.amazon.sg/dp/B08HBJB7YD', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1', + model: 'xlr8 uprising', + series: '3070', + url: 'https://www.amazon.sg/dp/B08HBF5L3K', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.amazon.sg/dp/B08KWPDXJZ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KWLMZV4&Quantity.1=1', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.amazon.sg/dp/B08KWLMZV4', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08LF1CWT2&Quantity.1=1', + model: 'twin edge oc', + series: '3070', + url: 'https://www.amazon.sg/dp/B08LF1CWT2', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08LF32LJ6&Quantity.1=1', + model: 'gaming', + series: '3070', + url: 'https://www.amazon.sg/dp/B08LF32LJ6', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8L71SM&Quantity.1=1', + model: 'xc3 ultra', + series: '3070', + url: 'https://www.amazon.sg/dp/B08L8L71SM', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08L8L9TCZ&Quantity.1=1', + model: 'ftw3 ultra', + series: '3070', + url: 'https://www.amazon.sg/dp/B08L8L9TCZ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1', + model: 'xc3 black', + series: '3070', + url: 'https://www.amazon.sg/dp/B08LW46GH2', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', + model: 'gaming oc', + series: '3070', + url: 'https://www.amazon.sg/dp/B08KY266MG', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1', + model: 'vision oc', + series: '3070', + url: 'https://www.amazon.sg/dp/B08M13DXSZ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08M4YFNX2&Quantity.1=1', + model: 'gaming oc', + series: '3070', + url: 'https://www.amazon.sg/dp/B08M4YFNX2', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KXZV626&Quantity.1=1', + model: 'eagle', + series: '3070', + url: 'https://www.amazon.sg/dp/B08KXZV626', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08KY322TH&Quantity.1=1', + model: 'eagle oc', + series: '3070', + url: 'https://www.amazon.sg/dp/B08KY322TH', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBR7QBM&Quantity.1=1', + model: 'xlr8 revel', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HBR7QBM', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBTJMLJ&Quantity.1=1', + model: 'xlr8 revel', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HBTJMLJ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR7SV3M&Quantity.1=1', + model: 'gaming x trio', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HR7SV3M', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR3Y5GQ&Quantity.1=1', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HR3Y5GQ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR55YB5&Quantity.1=1', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HR55YB5', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR3DPGW&Quantity.1=1', + model: 'ftw3', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HR3DPGW', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR4RJ3Q&Quantity.1=1', + model: 'xc3', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HR4RJ3Q', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR6FMF3&Quantity.1=1', + model: 'xc3 black', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HR6FMF3', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJTH61J&Quantity.1=1', + model: 'gaming oc', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HJTH61J', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJS2JLJ&Quantity.1=1', + model: 'eagle oc', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HJS2JLJ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HH5WF97&Quantity.1=1', + model: 'tuf oc', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HH5WF97', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HHDP9DW&Quantity.1=1', + model: 'tuf', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HHDP9DW', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08J6F174Z&Quantity.1=1', + model: 'strix oc', + series: '3080', + url: 'https://www.amazon.sg/dp/B08J6F174Z', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08J6GMWCQ&Quantity.1=1', + model: 'strix oc', + series: '3090', + url: 'https://www.amazon.sg/dp/B08J6GMWCQ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR5SXPS&Quantity.1=1', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HR5SXPS', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJNKT3P&Quantity.1=1', + model: 'trinity', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HJNKT3P', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HVV2P4Z&Quantity.1=1', + model: 'trinity oc', + series: '3080', + url: 'https://www.amazon.sg/dp/B08HVV2P4Z', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1', + model: 'trinity', + series: '3090', + url: 'https://www.amazon.sg/dp/B08HJQ182D', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBQWBHH&Quantity.1=1', + model: 'xlr8 revel', + series: '3090', + url: 'https://www.amazon.sg/dp/B08HBQWBHH', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HBVX53D&Quantity.1=1', + model: 'xlr8 revel', + series: '3090', + url: 'https://www.amazon.sg/dp/B08HBVX53D', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HRBW6VB&Quantity.1=1', + model: 'gaming x trio', + series: '3090', + url: 'https://www.amazon.sg/dp/B08HRBW6VB', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HR9D2JS&Quantity.1=1', + model: 'ventus 3x', + series: '3090', + url: 'https://www.amazon.sg/dp/B08HR9D2JS', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08J5F3G18&Quantity.1=1', + model: 'ftw3 ultra', + series: '3090', + url: 'https://www.amazon.sg/dp/B08J5F3G18', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1', + model: 'gaming oc', + series: '3090', + url: 'https://www.amazon.sg/dp/B08HJRF2CN', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1', + model: 'eagle oc', + series: '3090', + url: 'https://www.amazon.sg/dp/B08HJPDJTY', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJGNJ81&Quantity.1=1', + model: 'tuf oc', + series: '3090', + url: 'https://www.amazon.sg/dp/B08HJGNJ81', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HJLLF7G&Quantity.1=1', + model: 'tuf oc', + series: '3090', + url: 'https://www.amazon.sg/dp/B08HJLLF7G', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amazon.sg/dp/B08166SLDF', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amazon.sg/dp/product/B0815XFSGK', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amazon.sg/dp/B08164VTWH', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amazon.sg/dp/B0815Y8J9N', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08PHWJC8X&Quantity.1=1', + model: 'amd reference', + series: 'rx6900xt', + url: 'https://www.amazon.sg/dp/B08PHWJC8X', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08PDQJVD9&Quantity.1=1', + model: 'amd reference', + series: 'rx6900xt', + url: 'https://www.amazon.sg/dp/B08PDQJVD9', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NS4W2ZY&Quantity.1=1', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amazon.sg/dp/B08NS4W2ZY', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08MVC76SR&Quantity.1=1', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amazon.sg/dp/B08MVC76SR', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NXXT7WN&Quantity.1=1', + model: 'nitro+', + series: 'rx6800xt', + url: 'https://www.amazon.sg/dp/B08NXXT7WN', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NXYNLMR&Quantity.1=1', + model: 'pulse', + series: 'rx6800xt', + url: 'https://www.amazon.sg/dp/B08NXYNLMR', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NXVNMPQ&Quantity.1=1', + model: 'nitro+', + series: 'rx6800xt', + url: 'https://www.amazon.sg/dp/B08NXVNMPQ', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08N6ZLX9B&Quantity.1=1', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amazon.sg/dp/B08N6ZLX9B', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NX14LV1&Quantity.1=1', + model: 'merc', + series: 'rx6800xt', + url: 'https://www.amazon.sg/dp/B08NX14LV1', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NN76VJD&Quantity.1=1', + model: 'amd reference', + series: 'rx6800', + url: 'https://www.amazon.sg/dp/B08NN76VJD', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P5YFZCY&Quantity.1=1', + model: 'merc', + series: 'rx6800', + url: 'https://www.amazon.sg/dp/B08P5YFZCY', + }, + { + brand: 'powercolor', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08MNZM5TK&Quantity.1=1', + model: 'amd reference', + series: 'rx6800', + url: 'https://www.amazon.sg/dp/B08MNZM5TK', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08MVCLBWK&Quantity.1=1', + model: 'amd reference', + series: 'rx6800', + url: 'https://www.amazon.sg/dp/B08MVCLBWK', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NXZSPMY&Quantity.1=1', + model: 'nitro+', + series: 'rx6800', + url: 'https://www.amazon.sg/dp/B08NXZSPMY', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NXYBVDB&Quantity.1=1', + model: 'pulse', + series: 'rx6800', + url: 'https://www.amazon.sg/dp/B08NXYBVDB', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NWJ29NB&Quantity.1=1', + model: 'strix oc', + series: 'rx6800', + url: 'https://www.amazon.sg/dp/B08NWJ29NB', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08P3YT3MY&Quantity.1=1', + model: 'tuf oc', + series: 'rx6800', + url: 'https://www.amazon.sg/dp/B08P3YT3MY', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08NWHKGS9&Quantity.1=1', + model: 'strix lc', + series: 'rx6800xt', + url: 'https://www.amazon.sg/dp/B08NWHKGS9', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08FC5L3RG&Quantity.1=1', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.amazon.sg/dp/B08FC5L3RG', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HNRSVQP&Quantity.1=1', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.amazon.sg/dp/B08HNRSVQP', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08FC6MR62&Quantity.1=1', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.amazon.sg/dp/B08FC6MR62', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B08HNSWWT7&Quantity.1=1', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.amazon.sg/dp/B08HNSWWT7', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.amazon.sg/dp/B08H75RTZ8', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.amazon.sg/dp/B08G9J44ZN', + }, + { + brand: 'corsair', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B07M63H81H&Quantity.1=1', + model: '750 platinum', + series: 'sf', + url: 'https://www.amazon.sg/dp/B07M63H81H', + }, + { + brand: 'corsair', + cartUrl: + 'https://www.amazon.sg/gp/aws/cart/add.html?ASIN.1=B07F84FJ1G&Quantity.1=1', + model: '600 platinum', + series: 'sf', + url: 'https://www.amazon.sg/dp/B07F84FJ1G', + }, + ], + name: 'amazon-sg', }; diff --git a/src/store/model/amazon-uk.ts b/src/store/model/amazon-uk.ts index e4467494d6..6a34c22d15 100644 --- a/src/store/model/amazon-uk.ts +++ b/src/store/model/amazon-uk.ts @@ -1,500 +1,500 @@ import {Link, Store} from './store'; export const AmazonUk: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '£', - labels: { - captcha: { - container: 'body', - text: ['enter the characters you see below'] - }, - inStock: { - container: '#availability', - text: ['in stock'] - }, - maxPrice: { - container: '#priceblock_ourprice' - }, - outOfStock: [ - { - container: '#availability', - text: ['out of stock', 'unavailable'] - }, - { - container: '#backInStock', - text: ['unavailable'] - } - ] - }, - links: [ - { - brand: 'test:brand', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B0753R2TWC&Quantity.1=1', - model: 'test:model', - series: 'test:series', - url: 'https://www.amazon.co.uk/dp/B0753R2TWC/' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08H95Y452&Quantity.1=1', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.amazon.co.uk/dp/B08H95Y452' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08H97NYGP&Quantity.1=1', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.amazon.co.uk/dp/B08H97NYGP' - }, - { - brand: 'microsoft', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08H93GKNJ&Quantity.1=1', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.amazon.co.uk/dp/B08H93GKNJ' - }, - { - brand: 'microsoft', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08GD9MNZB&Quantity.1=1', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.amazon.co.uk/dp/B08GD9MNZB' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.amazon.co.uk/AMD-Ryzen-5600X-Processor-Cache/dp/B08166SLDF' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.amazon.co.uk/AMD-Ryzen-5800X-Processor-Cache/dp/B0815XFSGK' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.amazon.co.uk/AMD-Ryzen-5900X-Processor-Cache/dp/B08164VTWH' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.amazon.co.uk/AMD-Ryzen-5950X-Processor-Cache/dp/B0815Y8J9N' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HN7VVLJ&Quantity.1=1', - model: 'strix', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HN7VVLJ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HN6KYS3&Quantity.1=1', - model: 'strix oc', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HN6KYS3' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HN37VQK&Quantity.1=1', - model: 'tuf', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HN37VQK' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HN4DSTC&Quantity.1=1', - model: 'tuf oc', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HN4DSTC' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HGBYWQ6&Quantity.1=1', - model: 'ftw3', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HGBYWQ6' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HGYXP4C&Quantity.1=1', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HGYXP4C' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HGLN78Q&Quantity.1=1', - model: 'xc3', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HGLN78Q' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HH1BMQQ&Quantity.1=1', - model: 'xc3 black', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HH1BMQQ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HJ9XFNM&Quantity.1=1', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HJ9XFNM' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KHLDS72&Quantity.1=1', - model: 'aorus master', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08KHLDS72' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HHZVZ3N&Quantity.1=1', - model: 'eagle oc', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HHZVZ3N' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HLZXHZY&Quantity.1=1', - model: 'gaming oc', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HLZXHZY' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KH7RL89&Quantity.1=1', - model: 'vision oc', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08KH7RL89' - }, - { - brand: 'inno3d', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08JD6QPXD&Quantity.1=1', - model: 'twin x2 oc', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08JD6QPXD' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HM4V2DH&Quantity.1=1', - model: 'gaming x trio', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HM4V2DH' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HM4M621&Quantity.1=1', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HM4M621' - }, - { - brand: 'palit', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08JCVWTQY&Quantity.1=1', - model: 'gaming pro', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08JCVWTQY' - }, - { - brand: 'palit', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08JCKYYL8&Quantity.1=1', - model: 'gaming pro oc', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08JCKYYL8' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HR1NPPQ&Quantity.1=1', - model: 'trinity', - series: '3080', - url: 'https://www.amazon.co.uk/dp/B08HR1NPPQ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KHFZN9P&Quantity.1=1', - model: 'dual', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08KHFZN9P' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08L8HPKR6&Quantity.1=1', - model: 'dual', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08L8HPKR6' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1', - model: 'strix', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08L8JNTXQ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08L8KC1J7&Quantity.1=1', - model: 'tuf', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08L8KC1J7' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', - model: 'gaming oc', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08KY266MG' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', - model: 'gaming', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08KWN2LZG' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1', - model: 'xlr8 revel', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08HBJB7YD' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1', - model: 'xlr8 uprising', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08HBF5L3K' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1', - model: 'ventus 2x oc', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08KWPDXJZ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KWLMZV4&Quantity.1=1', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08KWLMZV4' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08LF32LJ6&Quantity.1=1', - model: 'gaming', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08LF32LJ6' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08L8L71SM&Quantity.1=1', - model: 'xc3 ultra', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08L8L71SM' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08L8L9TCZ&Quantity.1=1', - model: 'ftw3 ultra', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08L8L9TCZ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', - model: 'gaming oc', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08KY266MG' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1', - model: 'vision oc', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08M13DXSZ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KXZV626&Quantity.1=1', - model: 'eagle', - series: '3070', - url: 'https://www.amazon.co.uk/dp/B08KXZV626' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P2DQ28S&Quantity.1=1', - model: 'ventus 2x oc', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08P2DQ28S' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08NW2YJB2&Quantity.1=1', - model: 'ventus 2x oc', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08NW2YJB2' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P3XJLJJ&Quantity.1=1', - model: 'twin edge', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08P3XJLJJ' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P3V572B&Quantity.1=1', - model: 'twin edge oc', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08P3V572B' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P3BJ9Y8&Quantity.1=1', - model: 'twin edge oc', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08P3BJ9Y8' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P3JPX8P&Quantity.1=1', - model: 'eagle', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08P3JPX8P' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08NW2X37Z&Quantity.1=1', - model: 'gaming oc', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08NW2X37Z' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08NW528S1&Quantity.1=1', - model: 'eagle oc', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08NW528S1' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08NW693LG&Quantity.1=1', - model: 'xlr8 revel', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08NW693LG' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B083Z5P6TX&Quantity.1=1', - model: 'tuf oc', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B083Z5P6TX' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08NZ4G4T2&Quantity.1=1', - model: 'tuf oc', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08NZ4G4T2' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P2HBBLX&Quantity.1=1', - model: 'dual oc', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08P2HBBLX' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08PDN36R3&Quantity.1=1', - model: 'ftw3', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08PDN36R3' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08PDP837W&Quantity.1=1', - model: 'xc gaming', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08PDP837W' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08PDMVPZ4&Quantity.1=1', - model: 'xc3 black', - series: '3060ti', - url: 'https://www.amazon.co.uk/dp/B08PDMVPZ4' - } - ], - name: 'amazon-uk' + backoffStatusCodes: [403, 429, 503], + currency: '£', + labels: { + captcha: { + container: 'body', + text: ['enter the characters you see below'], + }, + inStock: { + container: '#availability', + text: ['in stock'], + }, + maxPrice: { + container: '#priceblock_ourprice', + }, + outOfStock: [ + { + container: '#availability', + text: ['out of stock', 'unavailable'], + }, + { + container: '#backInStock', + text: ['unavailable'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B0753R2TWC&Quantity.1=1', + model: 'test:model', + series: 'test:series', + url: 'https://www.amazon.co.uk/dp/B0753R2TWC/', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08H95Y452&Quantity.1=1', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.amazon.co.uk/dp/B08H95Y452', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08H97NYGP&Quantity.1=1', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.amazon.co.uk/dp/B08H97NYGP', + }, + { + brand: 'microsoft', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08H93GKNJ&Quantity.1=1', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.amazon.co.uk/dp/B08H93GKNJ', + }, + { + brand: 'microsoft', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08GD9MNZB&Quantity.1=1', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.amazon.co.uk/dp/B08GD9MNZB', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.amazon.co.uk/AMD-Ryzen-5600X-Processor-Cache/dp/B08166SLDF', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.amazon.co.uk/AMD-Ryzen-5800X-Processor-Cache/dp/B0815XFSGK', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.amazon.co.uk/AMD-Ryzen-5900X-Processor-Cache/dp/B08164VTWH', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.amazon.co.uk/AMD-Ryzen-5950X-Processor-Cache/dp/B0815Y8J9N', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HN7VVLJ&Quantity.1=1', + model: 'strix', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HN7VVLJ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HN6KYS3&Quantity.1=1', + model: 'strix oc', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HN6KYS3', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HN37VQK&Quantity.1=1', + model: 'tuf', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HN37VQK', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HN4DSTC&Quantity.1=1', + model: 'tuf oc', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HN4DSTC', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HGBYWQ6&Quantity.1=1', + model: 'ftw3', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HGBYWQ6', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HGYXP4C&Quantity.1=1', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HGYXP4C', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HGLN78Q&Quantity.1=1', + model: 'xc3', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HGLN78Q', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HH1BMQQ&Quantity.1=1', + model: 'xc3 black', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HH1BMQQ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HJ9XFNM&Quantity.1=1', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HJ9XFNM', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KHLDS72&Quantity.1=1', + model: 'aorus master', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08KHLDS72', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HHZVZ3N&Quantity.1=1', + model: 'eagle oc', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HHZVZ3N', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HLZXHZY&Quantity.1=1', + model: 'gaming oc', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HLZXHZY', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KH7RL89&Quantity.1=1', + model: 'vision oc', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08KH7RL89', + }, + { + brand: 'inno3d', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08JD6QPXD&Quantity.1=1', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08JD6QPXD', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HM4V2DH&Quantity.1=1', + model: 'gaming x trio', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HM4V2DH', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HM4M621&Quantity.1=1', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HM4M621', + }, + { + brand: 'palit', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08JCVWTQY&Quantity.1=1', + model: 'gaming pro', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08JCVWTQY', + }, + { + brand: 'palit', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08JCKYYL8&Quantity.1=1', + model: 'gaming pro oc', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08JCKYYL8', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HR1NPPQ&Quantity.1=1', + model: 'trinity', + series: '3080', + url: 'https://www.amazon.co.uk/dp/B08HR1NPPQ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KHFZN9P&Quantity.1=1', + model: 'dual', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08KHFZN9P', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08L8HPKR6&Quantity.1=1', + model: 'dual', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08L8HPKR6', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1', + model: 'strix', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08L8JNTXQ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08L8KC1J7&Quantity.1=1', + model: 'tuf', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08L8KC1J7', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', + model: 'gaming oc', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08KY266MG', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', + model: 'gaming', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08KWN2LZG', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1', + model: 'xlr8 revel', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08HBJB7YD', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1', + model: 'xlr8 uprising', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08HBF5L3K', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08KWPDXJZ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KWLMZV4&Quantity.1=1', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08KWLMZV4', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08LF32LJ6&Quantity.1=1', + model: 'gaming', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08LF32LJ6', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08L8L71SM&Quantity.1=1', + model: 'xc3 ultra', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08L8L71SM', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08L8L9TCZ&Quantity.1=1', + model: 'ftw3 ultra', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08L8L9TCZ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', + model: 'gaming oc', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08KY266MG', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1', + model: 'vision oc', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08M13DXSZ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08KXZV626&Quantity.1=1', + model: 'eagle', + series: '3070', + url: 'https://www.amazon.co.uk/dp/B08KXZV626', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P2DQ28S&Quantity.1=1', + model: 'ventus 2x oc', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08P2DQ28S', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08NW2YJB2&Quantity.1=1', + model: 'ventus 2x oc', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08NW2YJB2', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P3XJLJJ&Quantity.1=1', + model: 'twin edge', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08P3XJLJJ', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P3V572B&Quantity.1=1', + model: 'twin edge oc', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08P3V572B', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P3BJ9Y8&Quantity.1=1', + model: 'twin edge oc', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08P3BJ9Y8', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P3JPX8P&Quantity.1=1', + model: 'eagle', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08P3JPX8P', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08NW2X37Z&Quantity.1=1', + model: 'gaming oc', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08NW2X37Z', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08NW528S1&Quantity.1=1', + model: 'eagle oc', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08NW528S1', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08NW693LG&Quantity.1=1', + model: 'xlr8 revel', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08NW693LG', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B083Z5P6TX&Quantity.1=1', + model: 'tuf oc', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B083Z5P6TX', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08NZ4G4T2&Quantity.1=1', + model: 'tuf oc', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08NZ4G4T2', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08P2HBBLX&Quantity.1=1', + model: 'dual oc', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08P2HBBLX', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08PDN36R3&Quantity.1=1', + model: 'ftw3', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08PDN36R3', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08PDP837W&Quantity.1=1', + model: 'xc gaming', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08PDP837W', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.co.uk/gp/aws/cart/add.html?ASIN.1=B08PDMVPZ4&Quantity.1=1', + model: 'xc3 black', + series: '3060ti', + url: 'https://www.amazon.co.uk/dp/B08PDMVPZ4', + }, + ], + name: 'amazon-uk', }; diff --git a/src/store/model/amazon.ts b/src/store/model/amazon.ts index fc38dd657c..0e5a5b832c 100644 --- a/src/store/model/amazon.ts +++ b/src/store/model/amazon.ts @@ -1,754 +1,753 @@ import {Store} from './store'; export const Amazon: Store = { - backoffStatusCodes: [403, 429, 503], - captchaDeterrent: { - hardLinks: [ - 'https://www.amazon.com/Amazon-Video/b/?ie=UTF8&node=2858778011&ref_=nav_cs_prime_video', - 'https://www.amazon.com/alm/storefront?almBrandId=VUZHIFdob2xlIEZvb2Rz&ref_=nav_cs_whole_foods_in_region', - 'https://www.amazon.com/gp/goldbox?ref_=nav_cs_gb' - ], - searchTerms: ['goober', 'dungeons+and+dragons'], - searchUrl: - 'https://www.amazon.com/s?k=%%s&i=todays-deals&ref=nb_sb_noss_2' - }, - currency: '$', - labels: { - captcha: { - container: 'body', - text: ['enter the characters you see below'] - }, - inStock: [ - { - container: '#add-to-cart-button', - text: ['add to cart'] - }, - { - container: '#buy-now-button', - text: ['buy now'] - } - ], - maxPrice: { - container: '#priceblock_ourprice' - } - }, - links: [ - { - brand: 'test:brand', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B083248S3B&Quantity.1=1', - model: 'test:model', - series: 'test:series', - url: 'https://www.amazon.com/dp/B083248S3B' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P2HBBLX&Quantity.1=1', - model: 'dual', - series: '3060ti', - url: 'https://www.amazon.com/dp/B08P2HBBLX' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NYP7KG6&Quantity.1=1', - model: 'gaming oc', - series: '3060ti', - url: 'https://www.amazon.com/dp/B08NYP7KG6' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NYPLXPJ&Quantity.1=1', - model: 'gaming oc pro', - series: '3060ti', - url: 'https://www.amazon.com/dp/B08NYPLXPJ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NYNJ6RC&Quantity.1=1', - model: 'eagle', - series: '3060ti', - url: 'https://www.amazon.com/dp/B08NYNJ6RC' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B083Z5P6TX&Quantity.1=1', - model: 'tuf', - series: '3060ti', - url: 'https://www.amazon.com/dp/B083Z5P6TX' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P2D3JSG&Quantity.1=1', - model: 'gaming x trio', - series: '3060ti', - url: 'https://www.amazon.com/dp/B08P2D3JSG' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P2DQ28S&Quantity.1=1', - model: 'ventus 2x', - series: '3060ti', - url: 'https://www.amazon.com/dp/B08P2DQ28S' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P3XJLJJ&Quantity.1=1', - model: 'twin edge oc', - series: '3060ti', - url: 'https://www.amazon.com/dp/B08P3XJLJJ' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P3V572B&Quantity.1=1', - model: 'twin edge', - series: '3060ti', - url: 'https://www.amazon.com/dp/B08P3V572B' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P2D1JZZ&Quantity.1=1', - model: 'ko', - series: '3060ti', - url: 'https://www.amazon.com/dp/B08P2D1JZZ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B083Z7TR8Z&Quantity.1=1', - model: 'strix', - series: '3060ti', - url: 'https://www.amazon.com/dp/B083Z7TR8Z' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P2H5LW2&Quantity.1=1', - model: 'ftw3', - series: '3060ti', - url: 'https://www.amazon.com/dp/B08P2H5LW2' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NYPKW1Z&Quantity.1=1', - model: 'eagle oc', - series: '3060ti', - url: 'https://www.amazon.com/dp/B08NYPKW1Z' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8LG4M3&Quantity.1=1', - model: 'dual', - series: '3070', - url: 'https://www.amazon.com/dp/B08L8LG4M3' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8HPKR6&Quantity.1=1', - model: 'dual', - series: '3070', - url: 'https://www.amazon.com/dp/B08L8HPKR6' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1', - model: 'xc3 black', - series: '3070', - url: 'https://www.amazon.com/dp/B08LW46GH2' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1', - model: 'strix', - series: '3070', - url: 'https://www.amazon.com/dp/B08L8JNTXQ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8KC1J7&Quantity.1=1', - model: 'tuf', - series: '3070', - url: 'https://www.amazon.com/dp/B08L8KC1J7' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', - model: 'gaming oc', - series: '3070', - url: 'https://www.amazon.com/dp/B08KY266MG' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', - model: 'gaming', - series: '3070', - url: 'https://www.amazon.com/dp/B08KWN2LZG' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1', - model: 'xlr8 revel', - series: '3070', - url: 'https://www.amazon.com/dp/B08HBJB7YD' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1', - model: 'xlr8 uprising', - series: '3070', - url: 'https://www.amazon.com/dp/B08HBF5L3K' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1', - model: 'ventus 2x oc', - series: '3070', - url: 'https://www.amazon.com/dp/B08KWPDXJZ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KWLMZV4&Quantity.1=1', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.amazon.com/dp/B08KWLMZV4' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LF1CWT2&Quantity.1=1', - model: 'twin edge oc', - series: '3070', - url: 'https://www.amazon.com/dp/B08LF1CWT2' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LF32LJ6&Quantity.1=1', - model: 'gaming', - series: '3070', - url: 'https://www.amazon.com/dp/B08LF32LJ6' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8L71SM&Quantity.1=1', - model: 'xc3 ultra', - series: '3070', - url: 'https://www.amazon.com/dp/B08L8L71SM' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8L9TCZ&Quantity.1=1', - model: 'ftw3 ultra', - series: '3070', - url: 'https://www.amazon.com/dp/B08L8L9TCZ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1', - model: 'xc3 black', - series: '3070', - url: 'https://www.amazon.com/dp/B08LW46GH2' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', - model: 'gaming oc', - series: '3070', - url: 'https://www.amazon.com/dp/B08KY266MG' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1', - model: 'vision oc', - series: '3070', - url: 'https://www.amazon.com/dp/B08M13DXSZ' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08M4YFNX2&Quantity.1=1', - model: 'gaming oc', - series: '3070', - url: 'https://www.amazon.com/dp/B08M4YFNX2' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KXZV626&Quantity.1=1', - model: 'eagle', - series: '3070', - url: 'https://www.amazon.com/dp/B08KXZV626' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KY322TH&Quantity.1=1', - model: 'eagle oc', - series: '3070', - url: 'https://www.amazon.com/dp/B08KY322TH' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBR7QBM&Quantity.1=1', - model: 'xlr8 revel', - series: '3080', - url: 'https://www.amazon.com/dp/B08HBR7QBM' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBTJMLJ&Quantity.1=1', - model: 'xlr8 revel', - series: '3080', - url: 'https://www.amazon.com/dp/B08HBTJMLJ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR7SV3M&Quantity.1=1', - model: 'gaming x trio', - series: '3080', - url: 'https://www.amazon.com/dp/B08HR7SV3M' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR3Y5GQ&Quantity.1=1', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.amazon.com/dp/B08HR3Y5GQ' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR55YB5&Quantity.1=1', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.amazon.com/dp/B08HR55YB5' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR3DPGW&Quantity.1=1', - model: 'ftw3', - series: '3080', - url: 'https://www.amazon.com/dp/B08HR3DPGW' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR4RJ3Q&Quantity.1=1', - model: 'xc3', - series: '3080', - url: 'https://www.amazon.com/dp/B08HR4RJ3Q' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR6FMF3&Quantity.1=1', - model: 'xc3 black', - series: '3080', - url: 'https://www.amazon.com/dp/B08HR6FMF3' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJTH61J&Quantity.1=1', - model: 'gaming oc', - series: '3080', - url: 'https://www.amazon.com/dp/B08HJTH61J' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJS2JLJ&Quantity.1=1', - model: 'eagle oc', - series: '3080', - url: 'https://www.amazon.com/dp/B08HJS2JLJ' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HH5WF97&Quantity.1=1', - model: 'tuf oc', - series: '3080', - url: 'https://www.amazon.com/dp/B08HH5WF97' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HHDP9DW&Quantity.1=1', - model: 'tuf', - series: '3080', - url: 'https://www.amazon.com/dp/B08HHDP9DW' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6F174Z&Quantity.1=1', - model: 'strix oc', - series: '3080', - url: 'https://www.amazon.com/dp/B08J6F174Z' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6GMWCQ&Quantity.1=1', - model: 'strix oc', - series: '3090', - url: 'https://www.amazon.com/dp/B08J6GMWCQ' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR5SXPS&Quantity.1=1', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.amazon.com/dp/B08HR5SXPS' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJNKT3P&Quantity.1=1', - model: 'trinity', - series: '3080', - url: 'https://www.amazon.com/dp/B08HJNKT3P' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HVV2P4Z&Quantity.1=1', - model: 'trinity oc', - series: '3080', - url: 'https://www.amazon.com/dp/B08HVV2P4Z' - }, - { - brand: 'zotac', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1', - model: 'trinity', - series: '3090', - url: 'https://www.amazon.com/dp/B08HJQ182D' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBQWBHH&Quantity.1=1', - model: 'xlr8 revel', - series: '3090', - url: 'https://www.amazon.com/dp/B08HBQWBHH' - }, - { - brand: 'pny', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBVX53D&Quantity.1=1', - model: 'xlr8 revel', - series: '3090', - url: 'https://www.amazon.com/dp/B08HBVX53D' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HRBW6VB&Quantity.1=1', - model: 'gaming x trio', - series: '3090', - url: 'https://www.amazon.com/dp/B08HRBW6VB' - }, - { - brand: 'msi', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR9D2JS&Quantity.1=1', - model: 'ventus 3x', - series: '3090', - url: 'https://www.amazon.com/dp/B08HR9D2JS' - }, - { - brand: 'evga', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J5F3G18&Quantity.1=1', - model: 'ftw3 ultra', - series: '3090', - url: 'https://www.amazon.com/dp/B08J5F3G18' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1', - model: 'gaming oc', - series: '3090', - url: 'https://www.amazon.com/dp/B08HJRF2CN' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1', - model: 'eagle oc', - series: '3090', - url: 'https://www.amazon.com/dp/B08HJPDJTY' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJGNJ81&Quantity.1=1', - model: 'tuf oc', - series: '3090', - url: 'https://www.amazon.com/dp/B08HJGNJ81' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJLLF7G&Quantity.1=1', - model: 'tuf oc', - series: '3090', - url: 'https://www.amazon.com/dp/B08HJLLF7G' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amazon.com/dp/B08166SLDF' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amazon.com/dp/product/B0815XFSGK' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amazon.com/dp/B08164VTWH' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amazon.com/dp/B0815Y8J9N' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08PHWJC8X&Quantity.1=1', - model: 'amd reference', - series: 'rx6900xt', - url: 'https://www.amazon.com/dp/B08PHWJC8X' - }, - { - brand: 'xfx', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08PDQJVD9&Quantity.1=1', - model: 'amd reference', - series: 'rx6900xt', - url: 'https://www.amazon.com/dp/B08PDQJVD9' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NS4W2ZY&Quantity.1=1', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amazon.com/dp/B08NS4W2ZY' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08MVC76SR&Quantity.1=1', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amazon.com/dp/B08MVC76SR' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NXXT7WN&Quantity.1=1', - model: 'nitro+', - series: 'rx6800xt', - url: 'https://www.amazon.com/dp/B08NXXT7WN' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NXYNLMR&Quantity.1=1', - model: 'pulse', - series: 'rx6800xt', - url: 'https://www.amazon.com/dp/B08NXYNLMR' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NXVNMPQ&Quantity.1=1', - model: 'nitro+', - series: 'rx6800xt', - url: 'https://www.amazon.com/dp/B08NXVNMPQ' - }, - { - brand: 'xfx', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08N6ZLX9B&Quantity.1=1', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amazon.com/dp/B08N6ZLX9B' - }, - { - brand: 'xfx', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NX14LV1&Quantity.1=1', - model: 'merc', - series: 'rx6800xt', - url: 'https://www.amazon.com/dp/B08NX14LV1' - }, - { - brand: 'xfx', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NN76VJD&Quantity.1=1', - model: 'amd reference', - series: 'rx6800', - url: 'https://www.amazon.com/dp/B08NN76VJD' - }, - { - brand: 'xfx', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P5YFZCY&Quantity.1=1', - model: 'merc', - series: 'rx6800', - url: 'https://www.amazon.com/dp/B08P5YFZCY' - }, - { - brand: 'powercolor', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08MNZM5TK&Quantity.1=1', - model: 'amd reference', - series: 'rx6800', - url: 'https://www.amazon.com/dp/B08MNZM5TK' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08MVCLBWK&Quantity.1=1', - model: 'amd reference', - series: 'rx6800', - url: 'https://www.amazon.com/dp/B08MVCLBWK' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NXZSPMY&Quantity.1=1', - model: 'nitro+', - series: 'rx6800', - url: 'https://www.amazon.com/dp/B08NXZSPMY' - }, - { - brand: 'sapphire', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NXYBVDB&Quantity.1=1', - model: 'pulse', - series: 'rx6800', - url: 'https://www.amazon.com/dp/B08NXYBVDB' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NWJ29NB&Quantity.1=1', - model: 'strix oc', - series: 'rx6800', - url: 'https://www.amazon.com/dp/B08NWJ29NB' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P3YT3MY&Quantity.1=1', - model: 'tuf oc', - series: 'rx6800', - url: 'https://www.amazon.com/dp/B08P3YT3MY' - }, - { - brand: 'asus', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NWHKGS9&Quantity.1=1', - model: 'strix lc', - series: 'rx6800xt', - url: 'https://www.amazon.com/dp/B08NWHKGS9' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08FC5L3RG&Quantity.1=1', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.amazon.com/dp/B08FC5L3RG' - }, - { - brand: 'sony', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08FC6MR62&Quantity.1=1', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.amazon.com/dp/B08FC6MR62' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.amazon.com/dp/B08H75RTZ8' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.amazon.com/dp/B08G9J44ZN' - }, - { - brand: 'corsair', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B07M63H81H&Quantity.1=1', - model: '750 platinum', - series: 'sf', - url: 'https://www.amazon.com/dp/B07M63H81H' - }, - { - brand: 'corsair', - cartUrl: - 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B07F84FJ1G&Quantity.1=1', - model: '600 platinum', - series: 'sf', - url: 'https://www.amazon.com/dp/B07F84FJ1G' - } - ], - name: 'amazon' + backoffStatusCodes: [403, 429, 503], + captchaDeterrent: { + hardLinks: [ + 'https://www.amazon.com/Amazon-Video/b/?ie=UTF8&node=2858778011&ref_=nav_cs_prime_video', + 'https://www.amazon.com/alm/storefront?almBrandId=VUZHIFdob2xlIEZvb2Rz&ref_=nav_cs_whole_foods_in_region', + 'https://www.amazon.com/gp/goldbox?ref_=nav_cs_gb', + ], + searchTerms: ['goober', 'dungeons+and+dragons'], + searchUrl: 'https://www.amazon.com/s?k=%%s&i=todays-deals&ref=nb_sb_noss_2', + }, + currency: '$', + labels: { + captcha: { + container: 'body', + text: ['enter the characters you see below'], + }, + inStock: [ + { + container: '#add-to-cart-button', + text: ['add to cart'], + }, + { + container: '#buy-now-button', + text: ['buy now'], + }, + ], + maxPrice: { + container: '#priceblock_ourprice', + }, + }, + links: [ + { + brand: 'test:brand', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B089KV4YYX&Quantity.1=1', + model: 'test:model', + series: 'test:series', + url: 'https://www.amazon.com/dp/B089KV4YYX', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P2HBBLX&Quantity.1=1', + model: 'dual', + series: '3060ti', + url: 'https://www.amazon.com/dp/B08P2HBBLX', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NYP7KG6&Quantity.1=1', + model: 'gaming oc', + series: '3060ti', + url: 'https://www.amazon.com/dp/B08NYP7KG6', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NYPLXPJ&Quantity.1=1', + model: 'gaming oc pro', + series: '3060ti', + url: 'https://www.amazon.com/dp/B08NYPLXPJ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NYNJ6RC&Quantity.1=1', + model: 'eagle', + series: '3060ti', + url: 'https://www.amazon.com/dp/B08NYNJ6RC', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B083Z5P6TX&Quantity.1=1', + model: 'tuf', + series: '3060ti', + url: 'https://www.amazon.com/dp/B083Z5P6TX', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P2D3JSG&Quantity.1=1', + model: 'gaming x trio', + series: '3060ti', + url: 'https://www.amazon.com/dp/B08P2D3JSG', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P2DQ28S&Quantity.1=1', + model: 'ventus 2x', + series: '3060ti', + url: 'https://www.amazon.com/dp/B08P2DQ28S', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P3XJLJJ&Quantity.1=1', + model: 'twin edge oc', + series: '3060ti', + url: 'https://www.amazon.com/dp/B08P3XJLJJ', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P3V572B&Quantity.1=1', + model: 'twin edge', + series: '3060ti', + url: 'https://www.amazon.com/dp/B08P3V572B', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P2D1JZZ&Quantity.1=1', + model: 'ko', + series: '3060ti', + url: 'https://www.amazon.com/dp/B08P2D1JZZ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B083Z7TR8Z&Quantity.1=1', + model: 'strix', + series: '3060ti', + url: 'https://www.amazon.com/dp/B083Z7TR8Z', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P2H5LW2&Quantity.1=1', + model: 'ftw3', + series: '3060ti', + url: 'https://www.amazon.com/dp/B08P2H5LW2', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NYPKW1Z&Quantity.1=1', + model: 'eagle oc', + series: '3060ti', + url: 'https://www.amazon.com/dp/B08NYPKW1Z', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8LG4M3&Quantity.1=1', + model: 'dual', + series: '3070', + url: 'https://www.amazon.com/dp/B08L8LG4M3', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8HPKR6&Quantity.1=1', + model: 'dual', + series: '3070', + url: 'https://www.amazon.com/dp/B08L8HPKR6', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1', + model: 'xc3 black', + series: '3070', + url: 'https://www.amazon.com/dp/B08LW46GH2', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8JNTXQ&Quantity.1=1', + model: 'strix', + series: '3070', + url: 'https://www.amazon.com/dp/B08L8JNTXQ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8KC1J7&Quantity.1=1', + model: 'tuf', + series: '3070', + url: 'https://www.amazon.com/dp/B08L8KC1J7', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', + model: 'gaming oc', + series: '3070', + url: 'https://www.amazon.com/dp/B08KY266MG', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KWN2LZG&Quantity.1=1', + model: 'gaming', + series: '3070', + url: 'https://www.amazon.com/dp/B08KWN2LZG', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBJB7YD&Quantity.1=1', + model: 'xlr8 revel', + series: '3070', + url: 'https://www.amazon.com/dp/B08HBJB7YD', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBF5L3K&Quantity.1=1', + model: 'xlr8 uprising', + series: '3070', + url: 'https://www.amazon.com/dp/B08HBF5L3K', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KWPDXJZ&Quantity.1=1', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.amazon.com/dp/B08KWPDXJZ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KWLMZV4&Quantity.1=1', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.amazon.com/dp/B08KWLMZV4', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LF1CWT2&Quantity.1=1', + model: 'twin edge oc', + series: '3070', + url: 'https://www.amazon.com/dp/B08LF1CWT2', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LF32LJ6&Quantity.1=1', + model: 'gaming', + series: '3070', + url: 'https://www.amazon.com/dp/B08LF32LJ6', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8L71SM&Quantity.1=1', + model: 'xc3 ultra', + series: '3070', + url: 'https://www.amazon.com/dp/B08L8L71SM', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08L8L9TCZ&Quantity.1=1', + model: 'ftw3 ultra', + series: '3070', + url: 'https://www.amazon.com/dp/B08L8L9TCZ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08LW46GH2&Quantity.1=1', + model: 'xc3 black', + series: '3070', + url: 'https://www.amazon.com/dp/B08LW46GH2', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KY266MG&Quantity.1=1', + model: 'gaming oc', + series: '3070', + url: 'https://www.amazon.com/dp/B08KY266MG', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08M13DXSZ&Quantity.1=1', + model: 'vision oc', + series: '3070', + url: 'https://www.amazon.com/dp/B08M13DXSZ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08M4YFNX2&Quantity.1=1', + model: 'gaming oc', + series: '3070', + url: 'https://www.amazon.com/dp/B08M4YFNX2', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KXZV626&Quantity.1=1', + model: 'eagle', + series: '3070', + url: 'https://www.amazon.com/dp/B08KXZV626', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08KY322TH&Quantity.1=1', + model: 'eagle oc', + series: '3070', + url: 'https://www.amazon.com/dp/B08KY322TH', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBR7QBM&Quantity.1=1', + model: 'xlr8 revel', + series: '3080', + url: 'https://www.amazon.com/dp/B08HBR7QBM', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBTJMLJ&Quantity.1=1', + model: 'xlr8 revel', + series: '3080', + url: 'https://www.amazon.com/dp/B08HBTJMLJ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR7SV3M&Quantity.1=1', + model: 'gaming x trio', + series: '3080', + url: 'https://www.amazon.com/dp/B08HR7SV3M', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR3Y5GQ&Quantity.1=1', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.amazon.com/dp/B08HR3Y5GQ', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR55YB5&Quantity.1=1', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.amazon.com/dp/B08HR55YB5', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR3DPGW&Quantity.1=1', + model: 'ftw3', + series: '3080', + url: 'https://www.amazon.com/dp/B08HR3DPGW', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR4RJ3Q&Quantity.1=1', + model: 'xc3', + series: '3080', + url: 'https://www.amazon.com/dp/B08HR4RJ3Q', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR6FMF3&Quantity.1=1', + model: 'xc3 black', + series: '3080', + url: 'https://www.amazon.com/dp/B08HR6FMF3', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJTH61J&Quantity.1=1', + model: 'gaming oc', + series: '3080', + url: 'https://www.amazon.com/dp/B08HJTH61J', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJS2JLJ&Quantity.1=1', + model: 'eagle oc', + series: '3080', + url: 'https://www.amazon.com/dp/B08HJS2JLJ', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HH5WF97&Quantity.1=1', + model: 'tuf oc', + series: '3080', + url: 'https://www.amazon.com/dp/B08HH5WF97', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HHDP9DW&Quantity.1=1', + model: 'tuf', + series: '3080', + url: 'https://www.amazon.com/dp/B08HHDP9DW', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6F174Z&Quantity.1=1', + model: 'strix oc', + series: '3080', + url: 'https://www.amazon.com/dp/B08J6F174Z', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J6GMWCQ&Quantity.1=1', + model: 'strix oc', + series: '3090', + url: 'https://www.amazon.com/dp/B08J6GMWCQ', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR5SXPS&Quantity.1=1', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.amazon.com/dp/B08HR5SXPS', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJNKT3P&Quantity.1=1', + model: 'trinity', + series: '3080', + url: 'https://www.amazon.com/dp/B08HJNKT3P', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HVV2P4Z&Quantity.1=1', + model: 'trinity oc', + series: '3080', + url: 'https://www.amazon.com/dp/B08HVV2P4Z', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJQ182D&Quantity.1=1', + model: 'trinity', + series: '3090', + url: 'https://www.amazon.com/dp/B08HJQ182D', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBQWBHH&Quantity.1=1', + model: 'xlr8 revel', + series: '3090', + url: 'https://www.amazon.com/dp/B08HBQWBHH', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HBVX53D&Quantity.1=1', + model: 'xlr8 revel', + series: '3090', + url: 'https://www.amazon.com/dp/B08HBVX53D', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HRBW6VB&Quantity.1=1', + model: 'gaming x trio', + series: '3090', + url: 'https://www.amazon.com/dp/B08HRBW6VB', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HR9D2JS&Quantity.1=1', + model: 'ventus 3x', + series: '3090', + url: 'https://www.amazon.com/dp/B08HR9D2JS', + }, + { + brand: 'evga', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08J5F3G18&Quantity.1=1', + model: 'ftw3 ultra', + series: '3090', + url: 'https://www.amazon.com/dp/B08J5F3G18', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJRF2CN&Quantity.1=1', + model: 'gaming oc', + series: '3090', + url: 'https://www.amazon.com/dp/B08HJRF2CN', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJPDJTY&Quantity.1=1', + model: 'eagle oc', + series: '3090', + url: 'https://www.amazon.com/dp/B08HJPDJTY', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJGNJ81&Quantity.1=1', + model: 'tuf oc', + series: '3090', + url: 'https://www.amazon.com/dp/B08HJGNJ81', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08HJLLF7G&Quantity.1=1', + model: 'tuf oc', + series: '3090', + url: 'https://www.amazon.com/dp/B08HJLLF7G', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08166SLDF&Quantity.1=1', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amazon.com/dp/B08166SLDF', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0815XFSGK&Quantity.1=1', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amazon.com/dp/product/B0815XFSGK', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08164VTWH&Quantity.1=1', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amazon.com/dp/B08164VTWH', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0815Y8J9N&Quantity.1=1', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amazon.com/dp/B0815Y8J9N', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08PHWJC8X&Quantity.1=1', + model: 'amd reference', + series: 'rx6900xt', + url: 'https://www.amazon.com/dp/B08PHWJC8X', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08PDQJVD9&Quantity.1=1', + model: 'amd reference', + series: 'rx6900xt', + url: 'https://www.amazon.com/dp/B08PDQJVD9', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NS4W2ZY&Quantity.1=1', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amazon.com/dp/B08NS4W2ZY', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08MVC76SR&Quantity.1=1', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amazon.com/dp/B08MVC76SR', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NXXT7WN&Quantity.1=1', + model: 'nitro+', + series: 'rx6800xt', + url: 'https://www.amazon.com/dp/B08NXXT7WN', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NXYNLMR&Quantity.1=1', + model: 'pulse', + series: 'rx6800xt', + url: 'https://www.amazon.com/dp/B08NXYNLMR', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NXVNMPQ&Quantity.1=1', + model: 'nitro+', + series: 'rx6800xt', + url: 'https://www.amazon.com/dp/B08NXVNMPQ', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08N6ZLX9B&Quantity.1=1', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amazon.com/dp/B08N6ZLX9B', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NX14LV1&Quantity.1=1', + model: 'merc', + series: 'rx6800xt', + url: 'https://www.amazon.com/dp/B08NX14LV1', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NN76VJD&Quantity.1=1', + model: 'amd reference', + series: 'rx6800', + url: 'https://www.amazon.com/dp/B08NN76VJD', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P5YFZCY&Quantity.1=1', + model: 'merc', + series: 'rx6800', + url: 'https://www.amazon.com/dp/B08P5YFZCY', + }, + { + brand: 'powercolor', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08MNZM5TK&Quantity.1=1', + model: 'amd reference', + series: 'rx6800', + url: 'https://www.amazon.com/dp/B08MNZM5TK', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08MVCLBWK&Quantity.1=1', + model: 'amd reference', + series: 'rx6800', + url: 'https://www.amazon.com/dp/B08MVCLBWK', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NXZSPMY&Quantity.1=1', + model: 'nitro+', + series: 'rx6800', + url: 'https://www.amazon.com/dp/B08NXZSPMY', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NXYBVDB&Quantity.1=1', + model: 'pulse', + series: 'rx6800', + url: 'https://www.amazon.com/dp/B08NXYBVDB', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NWJ29NB&Quantity.1=1', + model: 'strix oc', + series: 'rx6800', + url: 'https://www.amazon.com/dp/B08NWJ29NB', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08P3YT3MY&Quantity.1=1', + model: 'tuf oc', + series: 'rx6800', + url: 'https://www.amazon.com/dp/B08P3YT3MY', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08NWHKGS9&Quantity.1=1', + model: 'strix lc', + series: 'rx6800xt', + url: 'https://www.amazon.com/dp/B08NWHKGS9', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08FC5L3RG&Quantity.1=1', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.amazon.com/dp/B08FC5L3RG', + }, + { + brand: 'sony', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B08FC6MR62&Quantity.1=1', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.amazon.com/dp/B08FC6MR62', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.amazon.com/dp/B08H75RTZ8', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.amazon.com/dp/B08G9J44ZN', + }, + { + brand: 'corsair', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B07M63H81H&Quantity.1=1', + model: '750 platinum', + series: 'sf', + url: 'https://www.amazon.com/dp/B07M63H81H', + }, + { + brand: 'corsair', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B07F84FJ1G&Quantity.1=1', + model: '600 platinum', + series: 'sf', + url: 'https://www.amazon.com/dp/B07F84FJ1G', + }, + ], + name: 'amazon', }; diff --git a/src/store/model/amd-ca.ts b/src/store/model/amd-ca.ts index d9843ce19a..36a8aa3c45 100644 --- a/src/store/model/amd-ca.ts +++ b/src/store/model/amd-ca.ts @@ -1,48 +1,48 @@ import {Store} from './store'; export const AmdCa: Store = { - currency: '$', - labels: { - inStock: { - container: '.btn-shopping-cart', - text: ['add to cart'] - }, - maxPrice: { - container: '.product-page-description h4', - euroFormat: false - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.amd.com/en/direct-buy/5458373400/ca' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5458373400/ca?add-to-cart=true', - model: 'amd reference', - series: 'rx6800', - url: 'https://www.amd.com/en/direct-buy/5458373400/ca' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5458372800/ca?add-to-cart=true', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amd.com/en/direct-buy/5458372800/ca' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5458372200/ca?add-to-cart=true', - model: 'amd reference', - series: 'rx6900xt', - url: 'https://www.amd.com/en/direct-buy/5458372200/ca' - } - ], - name: 'amd-ca' + currency: '$', + labels: { + inStock: { + container: '.btn-shopping-cart', + text: ['add to cart'], + }, + maxPrice: { + container: '.product-page-description h4', + euroFormat: false, + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.amd.com/en/direct-buy/5458373400/ca', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5458373400/ca?add-to-cart=true', + model: 'amd reference', + series: 'rx6800', + url: 'https://www.amd.com/en/direct-buy/5458373400/ca', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5458372800/ca?add-to-cart=true', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amd.com/en/direct-buy/5458372800/ca', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5458372200/ca?add-to-cart=true', + model: 'amd reference', + series: 'rx6900xt', + url: 'https://www.amd.com/en/direct-buy/5458372200/ca', + }, + ], + name: 'amd-ca', }; diff --git a/src/store/model/amd-de.ts b/src/store/model/amd-de.ts index 7be6e19f56..872c127291 100644 --- a/src/store/model/amd-de.ts +++ b/src/store/model/amd-de.ts @@ -1,84 +1,84 @@ import {Store} from './store'; export const AmdDe: Store = { - currency: '€', - labels: { - inStock: { - container: '.btn-shopping-cart', - text: ['add to cart'] - }, - maxPrice: { - container: '.product-page-description h4', - euroFormat: true - }, - outOfStock: { - container: '.btn-radeon', - text: ['ausverkauft'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.amd.com/de/direct-buy/5450881400/de' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/de/direct-buy/5450881400/de?add-to-cart=true', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amd.com/de/direct-buy/5450881400/de' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/de/direct-buy/5450881500/de?add-to-cart=true', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amd.com/de/direct-buy/5450881500/de' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/de/direct-buy/5450881600/de?add-to-cart=true', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amd.com/de/direct-buy/5450881600/de' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/de/direct-buy/5450881700/de?add-to-cart=true', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amd.com/de/direct-buy/5450881700/de' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/de/direct-buy/5458374000/de?add-to-cart=true', - model: 'amd reference', - series: 'rx6800', - url: 'https://www.amd.com/de/direct-buy/5458374000/de' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/de/direct-buy/5458374100/de?add-to-cart=true', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amd.com/de/direct-buy/5458374100/de' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/de/direct-buy/5458374200/de?add-to-cart=true', - model: 'amd reference', - series: 'rx6900xt', - url: 'https://www.amd.com/de/direct-buy/5458374200/de' - } - ], - name: 'amd-de' + currency: '€', + labels: { + inStock: { + container: '.btn-shopping-cart', + text: ['add to cart'], + }, + maxPrice: { + container: '.product-page-description h4', + euroFormat: true, + }, + outOfStock: { + container: '.btn-radeon', + text: ['ausverkauft'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.amd.com/de/direct-buy/5450881400/de', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/de/direct-buy/5450881400/de?add-to-cart=true', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amd.com/de/direct-buy/5450881400/de', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/de/direct-buy/5450881500/de?add-to-cart=true', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amd.com/de/direct-buy/5450881500/de', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/de/direct-buy/5450881600/de?add-to-cart=true', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amd.com/de/direct-buy/5450881600/de', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/de/direct-buy/5450881700/de?add-to-cart=true', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amd.com/de/direct-buy/5450881700/de', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/de/direct-buy/5458374000/de?add-to-cart=true', + model: 'amd reference', + series: 'rx6800', + url: 'https://www.amd.com/de/direct-buy/5458374000/de', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/de/direct-buy/5458374100/de?add-to-cart=true', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amd.com/de/direct-buy/5458374100/de', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/de/direct-buy/5458374200/de?add-to-cart=true', + model: 'amd reference', + series: 'rx6900xt', + url: 'https://www.amd.com/de/direct-buy/5458374200/de', + }, + ], + name: 'amd-de', }; diff --git a/src/store/model/amd-it.ts b/src/store/model/amd-it.ts index 1567ca25b4..dfb6c905a3 100644 --- a/src/store/model/amd-it.ts +++ b/src/store/model/amd-it.ts @@ -1,64 +1,64 @@ import {Store} from './store'; export const AmdIt: Store = { - currency: '€', - labels: { - inStock: { - container: '.btn-shopping-cart', - text: ['add to cart'] - }, - maxPrice: { - container: '.product-page-description h4', - euroFormat: true - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.amd.com/en/direct-buy/5450881400/it' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881400/it?add-to-cart=true', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amd.com/en/direct-buy/5450881400/it' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881500/it?add-to-cart=true', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amd.com/en/direct-buy/5450881500/it' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881600/it?add-to-cart=true', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amd.com/en/direct-buy/5450881600/it' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881700/it?add-to-cart=true', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amd.com/en/direct-buy/5450881700/it' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5458374100/it?add-to-cart=true', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amd.com/en/direct-buy/5458374100/it' - } - ], - name: 'amd-it' + currency: '€', + labels: { + inStock: { + container: '.btn-shopping-cart', + text: ['add to cart'], + }, + maxPrice: { + container: '.product-page-description h4', + euroFormat: true, + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.amd.com/en/direct-buy/5450881400/it', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881400/it?add-to-cart=true', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amd.com/en/direct-buy/5450881400/it', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881500/it?add-to-cart=true', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amd.com/en/direct-buy/5450881500/it', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881600/it?add-to-cart=true', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amd.com/en/direct-buy/5450881600/it', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881700/it?add-to-cart=true', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amd.com/en/direct-buy/5450881700/it', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5458374100/it?add-to-cart=true', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amd.com/en/direct-buy/5458374100/it', + }, + ], + name: 'amd-it', }; diff --git a/src/store/model/amd-uk.ts b/src/store/model/amd-uk.ts index 8c4c9bc60f..086b2c42bd 100644 --- a/src/store/model/amd-uk.ts +++ b/src/store/model/amd-uk.ts @@ -1,96 +1,96 @@ import {Store} from './store'; export const AmdUk: Store = { - currency: '£', - labels: { - inStock: [ - { - container: '.btn-shopping-cart', - text: ['add to cart'] - }, - { - container: '.btn-radeon', - text: ['add to cart'] - } - ], - maxPrice: { - container: '.product-page-description h4', - euroFormat: false - }, - outOfStock: [ - { - container: '.product-out-of-stock', - text: ['out of stock'] - }, - { - container: '.btn-radeon', - text: ['sold out'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.amd.com/en/direct-buy/5450881400/gb' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881400/gb?add-to-cart=true', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amd.com/en/direct-buy/5450881400/gb' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881500/gb?add-to-cart=true', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amd.com/en/direct-buy/5450881500/gb' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881600/gb?add-to-cart=true', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amd.com/en/direct-buy/5450881600/gb' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881700/gb?add-to-cart=true', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amd.com/en/direct-buy/5450881700/gb' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5458374000/gb?add-to-cart=true', - model: 'amd reference', - series: 'rx6800', - url: 'https://www.amd.com/en/direct-buy/5458374000/gb' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5458374100/gb?add-to-cart=true', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amd.com/en/direct-buy/5458374100/gb' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5458374200/gb?add-to-cart=true', - model: 'amd reference', - series: 'rx6900xt', - url: 'https://www.amd.com/en/direct-buy/5458374200/gb' - } - ], - name: 'amd-uk' + currency: '£', + labels: { + inStock: [ + { + container: '.btn-shopping-cart', + text: ['add to cart'], + }, + { + container: '.btn-radeon', + text: ['add to cart'], + }, + ], + maxPrice: { + container: '.product-page-description h4', + euroFormat: false, + }, + outOfStock: [ + { + container: '.product-out-of-stock', + text: ['out of stock'], + }, + { + container: '.btn-radeon', + text: ['sold out'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.amd.com/en/direct-buy/5450881400/gb', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881400/gb?add-to-cart=true', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amd.com/en/direct-buy/5450881400/gb', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881500/gb?add-to-cart=true', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amd.com/en/direct-buy/5450881500/gb', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881600/gb?add-to-cart=true', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amd.com/en/direct-buy/5450881600/gb', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881700/gb?add-to-cart=true', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amd.com/en/direct-buy/5450881700/gb', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5458374000/gb?add-to-cart=true', + model: 'amd reference', + series: 'rx6800', + url: 'https://www.amd.com/en/direct-buy/5458374000/gb', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5458374100/gb?add-to-cart=true', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amd.com/en/direct-buy/5458374100/gb', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5458374200/gb?add-to-cart=true', + model: 'amd reference', + series: 'rx6900xt', + url: 'https://www.amd.com/en/direct-buy/5458374200/gb', + }, + ], + name: 'amd-uk', }; diff --git a/src/store/model/amd.ts b/src/store/model/amd.ts index d0620bc159..3fdefb1373 100644 --- a/src/store/model/amd.ts +++ b/src/store/model/amd.ts @@ -1,80 +1,80 @@ import {Store} from './store'; export const Amd: Store = { - currency: '$', - labels: { - inStock: { - container: '.btn-shopping-cart', - text: ['add to cart'] - }, - maxPrice: { - container: '.product-page-description h4', - euroFormat: false - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.amd.com/en/direct-buy/5450881400/us' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881400/us?add-to-cart=true', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.amd.com/en/direct-buy/5450881400/us' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881500/us?add-to-cart=true', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.amd.com/en/direct-buy/5450881500/us' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881600/us?add-to-cart=true', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.amd.com/en/direct-buy/5450881600/us' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5450881700/us?add-to-cart=true', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.amd.com/en/direct-buy/5450881700/us' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5458372200/us?add-to-cart=true', - model: 'amd reference', - series: 'rx6900xt', - url: 'https://www.amd.com/en/direct-buy/5458372200/us' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5458372800/us?add-to-cart=true', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://www.amd.com/en/direct-buy/5458372800/us' - }, - { - brand: 'amd', - cartUrl: - 'https://www.amd.com/en/direct-buy/5458373400/us?add-to-cart=true', - model: 'amd reference', - series: 'rx6800', - url: 'https://www.amd.com/en/direct-buy/5458373400/us' - } - ], - name: 'amd' + currency: '$', + labels: { + inStock: { + container: '.btn-shopping-cart', + text: ['add to cart'], + }, + maxPrice: { + container: '.product-page-description h4', + euroFormat: false, + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.amd.com/en/direct-buy/5450881400/us', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881400/us?add-to-cart=true', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.amd.com/en/direct-buy/5450881400/us', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881500/us?add-to-cart=true', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.amd.com/en/direct-buy/5450881500/us', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881600/us?add-to-cart=true', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.amd.com/en/direct-buy/5450881600/us', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5450881700/us?add-to-cart=true', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.amd.com/en/direct-buy/5450881700/us', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5458372200/us?add-to-cart=true', + model: 'amd reference', + series: 'rx6900xt', + url: 'https://www.amd.com/en/direct-buy/5458372200/us', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5458372800/us?add-to-cart=true', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://www.amd.com/en/direct-buy/5458372800/us', + }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5458373400/us?add-to-cart=true', + model: 'amd reference', + series: 'rx6800', + url: 'https://www.amd.com/en/direct-buy/5458373400/us', + }, + ], + name: 'amd', }; diff --git a/src/store/model/antonline.ts b/src/store/model/antonline.ts index 4a53bfdd8a..cd06a72067 100644 --- a/src/store/model/antonline.ts +++ b/src/store/model/antonline.ts @@ -1,43 +1,43 @@ import {Store} from './store'; export const AntOnline: Store = { - currency: '$', - labels: { - inStock: { - container: '.uk-button', - text: ['Add to Cart'] - }, - maxPrice: { - container: '.cPrice', - euroFormat: false - }, - outOfStock: { - container: '.priceView-price .priceView-hero-price span', - text: ['Sold Out'] - } - }, - links: [ - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.antonline.com/Sony/Electronics/Gaming_Devices/Gaming_Consoles/1409507' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.antonline.com/Microsoft/Electronics/Gaming_Devices/Gaming_Consoles/1414487' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: - 'https://www.antonline.com/Microsoft/Electronics/Gaming_Devices/Gaming_Consoles/1409527' - } - ], - name: 'antonline' + currency: '$', + labels: { + inStock: { + container: '.uk-button', + text: ['Add to Cart'], + }, + maxPrice: { + container: '.cPrice', + euroFormat: false, + }, + outOfStock: { + container: '.priceView-price .priceView-hero-price span', + text: ['Sold Out'], + }, + }, + links: [ + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.antonline.com/Sony/Electronics/Gaming_Devices/Gaming_Consoles/1409507', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.antonline.com/Microsoft/Electronics/Gaming_Devices/Gaming_Consoles/1414487', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: + 'https://www.antonline.com/Microsoft/Electronics/Gaming_Devices/Gaming_Consoles/1409527', + }, + ], + name: 'antonline', }; diff --git a/src/store/model/argos-ie.ts b/src/store/model/argos-ie.ts index a9890f53a0..b4f963778b 100644 --- a/src/store/model/argos-ie.ts +++ b/src/store/model/argos-ie.ts @@ -1,35 +1,35 @@ import {Store} from './store'; export const ArgosIE: Store = { - currency: '€', - labels: { - inStock: { - container: '.btnbuyreserve', - text: ['buy or reserve'] - }, - maxPrice: { - container: '.price' - }, - outOfStock: { - container: '#subCopy', - text: ["We're working hard to get more stock."] - } - }, - links: [ - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'http://www.argos.ie/static/Product/partNumber/8448262/Trail/searchtext%3EXBOX+SERIES+X.htm' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'http://www.argos.ie/static/Product/partNumber/8349000/Trail/searchtext%3EPS5+CONSOLE.htm' - } - ], - name: 'argos-ie' + currency: '€', + labels: { + inStock: { + container: '.btnbuyreserve', + text: ['buy or reserve'], + }, + maxPrice: { + container: '.price', + }, + outOfStock: { + container: '#subCopy', + text: ["We're working hard to get more stock."], + }, + }, + links: [ + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'http://www.argos.ie/static/Product/partNumber/8448262/Trail/searchtext%3EXBOX+SERIES+X.htm', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'http://www.argos.ie/static/Product/partNumber/8349000/Trail/searchtext%3EPS5+CONSOLE.htm', + }, + ], + name: 'argos-ie', }; diff --git a/src/store/model/argos.ts b/src/store/model/argos.ts index 7fba8fe1c8..934ee174bb 100644 --- a/src/store/model/argos.ts +++ b/src/store/model/argos.ts @@ -1,47 +1,47 @@ import {Store} from './store'; export const Argos: Store = { - currency: '£', - labels: { - inStock: { - container: 'button[data-test="add-to-trolley-button-button"', - text: ['to trolley'] - }, - maxPrice: { - container: 'li[itemprop="price"]' - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.argos.co.uk/product/5718469' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.argos.co.uk/product/8349000' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.argos.co.uk/product/8349024' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.argos.co.uk/product/8448262' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.argos.co.uk/product/8448248' - } - ], - name: 'argos' + currency: '£', + labels: { + inStock: { + container: 'button[data-test="add-to-trolley-button-button"', + text: ['to trolley'], + }, + maxPrice: { + container: 'li[itemprop="price"]', + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.argos.co.uk/product/5718469', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.argos.co.uk/product/8349000', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.argos.co.uk/product/8349024', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.argos.co.uk/product/8448262', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.argos.co.uk/product/8448248', + }, + ], + name: 'argos', }; diff --git a/src/store/model/aria.ts b/src/store/model/aria.ts index f42b7fa8ad..46228d8e6a 100644 --- a/src/store/model/aria.ts +++ b/src/store/model/aria.ts @@ -2,66 +2,66 @@ import {Store} from './store'; import {getProductLinksBuilder} from './helpers/card'; export const Aria: Store = { - currency: '£', - labels: { - inStock: { - container: '#addQuantity', - text: ['add to shopping basket'] - }, - maxPrice: { - container: '.priceBig', - euroFormat: false // Note: Aria uses non-euroFromat as price seperator - }, - outOfStock: { - container: '.fBox', - text: ['out of stock', 'there is currently no stock of this item'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+2060+Super/Gigabyte+NVIDIA+GeForce+RTX+2060+SUPER+8GB+WINDFORCE+OC+Turing+Graphics+Card+%2B+RTX+Bundle%21?productId=71541' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.aria.co.uk/Products/Components/Processors/AMD+CPUs/Ryzen+9+-+Socket+AM4/AMD+Ryzen+9+5950X+16+Core+AM4+CPU%2FProcessor?productId=72868' - } - ], - linksBuilder: { - builder: getProductLinksBuilder({ - productsSelector: '#productListingInner .listTable .listTableTr', - sitePrefix: 'https://www.aria.co.uk', - titleSelector: 'strong > a[href]' - }), - urls: [ - { - series: '3060ti', - url: - 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3060+Ti' - }, - { - series: '3070', - url: - 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3070' - }, - { - series: '3080', - url: - 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3080' - }, - { - series: '3090', - url: - 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3090' - } - ] - }, - name: 'aria', - waitUntil: 'domcontentloaded' + currency: '£', + labels: { + inStock: { + container: '#addQuantity', + text: ['add to shopping basket'], + }, + maxPrice: { + container: '.priceBig', + euroFormat: false, // Note: Aria uses non-euroFromat as price seperator + }, + outOfStock: { + container: '.fBox', + text: ['out of stock', 'there is currently no stock of this item'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+2060+Super/Gigabyte+NVIDIA+GeForce+RTX+2060+SUPER+8GB+WINDFORCE+OC+Turing+Graphics+Card+%2B+RTX+Bundle%21?productId=71541', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.aria.co.uk/Products/Components/Processors/AMD+CPUs/Ryzen+9+-+Socket+AM4/AMD+Ryzen+9+5950X+16+Core+AM4+CPU%2FProcessor?productId=72868', + }, + ], + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '#productListingInner .listTable .listTableTr', + sitePrefix: 'https://www.aria.co.uk', + titleSelector: 'strong > a[href]', + }), + urls: [ + { + series: '3060ti', + url: + 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3060+Ti', + }, + { + series: '3070', + url: + 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3070', + }, + { + series: '3080', + url: + 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3080', + }, + { + series: '3090', + url: + 'https://www.aria.co.uk/Products/Components/Graphics+Cards/NVIDIA+GeForce/GeForce+RTX+3090', + }, + ], + }, + name: 'aria', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/arlt.ts b/src/store/model/arlt.ts index b62f9cf1ec..ade6076fce 100644 --- a/src/store/model/arlt.ts +++ b/src/store/model/arlt.ts @@ -1,141 +1,141 @@ import {Store} from './store'; export const Arlt: Store = { - currency: '€', - labels: { - inStock: { - container: '.articleDesc .shippingtext', - text: ['auf Lager', 'Lieferzeit 2-3 Werktage', 'Ware im Zulauf'] - }, - maxPrice: { - container: '.articleprice .price', - euroFormat: true - }, - outOfStock: { - container: '.articleDesc .shippingtext', - text: ['Neuer Artikel in Kürze verfügbar', 'Liefertermin unbekannt'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.arlt.com/ASUS-GeForce-GTX1650-Super-TUF-GTX1650S-O4G-GAMING.html' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: - 'https://www.arlt.com/Gaming/Gaming-Hardware/Grafikkarten/ASUS-Dual-GeForce-RTX-3070.html' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/ASUS-Dual-GeForce-RTX-3070-OC.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: - 'https://www.arlt.com/Gaming/Gaming-Hardware/Grafikkarten/ASUS-TUF-Gaming-GeForce-RTX-3070-OC.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3070/ASUS-ROG-Strix-GeForce-RTX-3070.html' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3070/MSI-GeForce-RTX-3070-Ventus-2X-OC.html' - }, - { - brand: 'gainward', - model: 'phoenix', - series: '3070', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/Gainward-GeForce-RTX-3070-Phoenix.html' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3070', - url: - 'https://www.arlt.com/Gaming/Gaming-Hardware/Gainward-GeForce-RTX-3070-Phoenix-GS.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/ASUS-TUF-Gaming-GeForce-RTX-3080-OC.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3080/MSI-GeForce-RTX-3080-Ventus-3X-OC.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3090/ASUS-TUF-Gaming-GeForce-RTX-3090-OC.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3090/ASUS-ROG-Strix-GeForce-RTX-3090-OC.html' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3090', - url: - 'https://www.arlt.com/Gaming/Gaming-Hardware/Gainward-GeForce-RTX-3090-Phoenix-GS.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-5-5600X-boxed.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-7-5800X-boxed.html' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-9-5900X-boxed.html' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-9-5950X-boxed.html' - } - ], - name: 'arlt' + currency: '€', + labels: { + inStock: { + container: '.articleDesc .shippingtext', + text: ['auf Lager', 'Lieferzeit 2-3 Werktage', 'Ware im Zulauf'], + }, + maxPrice: { + container: '.articleprice .price', + euroFormat: true, + }, + outOfStock: { + container: '.articleDesc .shippingtext', + text: ['Neuer Artikel in Kürze verfügbar', 'Liefertermin unbekannt'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.arlt.com/ASUS-GeForce-GTX1650-Super-TUF-GTX1650S-O4G-GAMING.html', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: + 'https://www.arlt.com/Gaming/Gaming-Hardware/Grafikkarten/ASUS-Dual-GeForce-RTX-3070.html', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/ASUS-Dual-GeForce-RTX-3070-OC.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: + 'https://www.arlt.com/Gaming/Gaming-Hardware/Grafikkarten/ASUS-TUF-Gaming-GeForce-RTX-3070-OC.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3070/ASUS-ROG-Strix-GeForce-RTX-3070.html', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3070/MSI-GeForce-RTX-3070-Ventus-2X-OC.html', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3070', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/Gainward-GeForce-RTX-3070-Phoenix.html', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3070', + url: + 'https://www.arlt.com/Gaming/Gaming-Hardware/Gainward-GeForce-RTX-3070-Phoenix-GS.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/ASUS-TUF-Gaming-GeForce-RTX-3080-OC.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3080/MSI-GeForce-RTX-3080-Ventus-3X-OC.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3090/ASUS-TUF-Gaming-GeForce-RTX-3090-OC.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Grafikkarten/NVIDIA/GeForce-RTX/RTX-3090/ASUS-ROG-Strix-GeForce-RTX-3090-OC.html', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3090', + url: + 'https://www.arlt.com/Gaming/Gaming-Hardware/Gainward-GeForce-RTX-3090-Phoenix-GS.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-5-5600X-boxed.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-7-5800X-boxed.html', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-9-5900X-boxed.html', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-9-5950X-boxed.html', + }, + ], + name: 'arlt', }; diff --git a/src/store/model/asus-de.ts b/src/store/model/asus-de.ts index 41d6ab265f..1d8edd0484 100644 --- a/src/store/model/asus-de.ts +++ b/src/store/model/asus-de.ts @@ -1,77 +1,77 @@ import {Store} from './store'; export const AsusDe: Store = { - currency: '€', - labels: { - inStock: { - container: '.buybox--button', - text: ['in den warenkorb'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2766/asus-rog-strix-rtx2060s-o8g-evo-v2-gaming' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2828/asus-rog-strix-rtx3080-10g-gaming' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2829/asus-rog-strix-rtx3080-o10g-gaming' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2824/asus-tuf-rtx3080-10g-gaming' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2825/asus-tuf-rtx3080-o10g-gaming' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: - 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2826/asus-rog-strix-rtx3090-24g-gaming' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2827/asus-rog-strix-rtx3090-o24g-gaming' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2822/asus-tuf-rtx3090-24g-gaming' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2823/asus-tuf-rtx3090-o24g-gaming' - } - ], - name: 'asus-de' + currency: '€', + labels: { + inStock: { + container: '.buybox--button', + text: ['in den warenkorb'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2766/asus-rog-strix-rtx2060s-o8g-evo-v2-gaming', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2828/asus-rog-strix-rtx3080-10g-gaming', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2829/asus-rog-strix-rtx3080-o10g-gaming', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2824/asus-tuf-rtx3080-10g-gaming', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2825/asus-tuf-rtx3080-o10g-gaming', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: + 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2826/asus-rog-strix-rtx3090-24g-gaming', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2827/asus-rog-strix-rtx3090-o24g-gaming', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2822/asus-tuf-rtx3090-24g-gaming', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2823/asus-tuf-rtx3090-o24g-gaming', + }, + ], + name: 'asus-de', }; diff --git a/src/store/model/asus.ts b/src/store/model/asus.ts index 260e7c6db4..5291ce4d2b 100644 --- a/src/store/model/asus.ts +++ b/src/store/model/asus.ts @@ -2,191 +2,189 @@ import {Store} from './store'; import fetch from 'node-fetch'; export const Asus: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '$', - labels: { - inStock: { - container: '#item_add_cart', - text: ['add to cart'] - }, - outOfStock: { - container: '#off_sale', - text: ['sold out'] - } - }, - links: [ - { - brand: 'test:brand', - itemNumber: '202006AM260000003', - model: 'test:model', - series: 'test:series', - url: 'https://store.asus.com/us/item/202006AM260000003' - }, - { - brand: 'asus', - itemNumber: '202012AM030000004', - model: 'tuf oc', - series: '3060ti', - url: 'https://store.asus.com/us/item/202012AM030000004' - }, - { - brand: 'asus', - itemNumber: '202012AM030000003', - model: 'dual', - series: '3060ti', - url: 'https://store.asus.com/us/item/202012AM030000003' - }, - { - brand: 'asus', - itemNumber: '202012AM030000005', - model: 'strix oc', - series: '3060ti', - url: 'https://store.asus.com/us/item/202012AM030000005' - }, - { - brand: 'asus', - itemNumber: '202012AM030000002', - model: 'ko', - series: '3060ti', - url: 'https://store.asus.com/us/item/202012AM030000002' - }, - { - brand: 'asus', - itemNumber: '202010AM310000002', - model: 'tuf oc', - series: '3070', - url: 'https://store.asus.com/us/item/202010AM310000002' - }, - { - brand: 'asus', - itemNumber: '202011AM240000001', - model: 'dual', - series: '3070', - url: 'https://store.asus.com/us/item/202011AM240000001' - }, - { - brand: 'asus', - itemNumber: '202010AM310000001', - model: 'strix', - series: '3070', - url: 'https://store.asus.com/us/item/202010AM310000001' - }, - { - brand: 'asus', - itemNumber: '202011AM070000002', - model: 'ko oc', - series: '3070', - url: 'https://store.asus.com/us/item/202011AM070000002' - }, - { - brand: 'asus', - itemNumber: '202011AM070000003', - model: 'dual', - series: '3070', - url: 'https://store.asus.com/us/item/202011AM070000003' - }, - { - brand: 'asus', - itemNumber: '202101AM070000001', - model: 'strix oc', - series: '3070', - url: 'https://store.asus.com/us/item/202101AM070000001' - }, - { - brand: 'asus', - itemNumber: '202012AM160000002', - model: 'strix', - series: '3080', - url: 'https://store.asus.com/us/item/202012AM160000002' - }, - { - brand: 'asus', - itemNumber: '202011AM190000001', - model: 'tuf oc', - series: '3080', - url: 'https://store.asus.com/us/item/202011AM190000001' - }, - { - brand: 'asus', - itemNumber: '202012AM220000002', - model: 'strix oc', - series: '3080', - url: 'https://store.asus.com/us/item/202012AM220000002' - }, - { - brand: 'asus', - itemNumber: '202009AM150000004', - model: 'tuf', - series: '3080', - url: 'https://store.asus.com/us/item/202009AM150000004' - }, - { - brand: 'asus', - itemNumber: '202101AM070000002', - model: 'ekwb', - series: '3080', - url: 'https://store.asus.com/us/item/202101AM070000002' - }, - { - brand: 'asus', - itemNumber: '202011AM190000002', - model: 'tuf oc', - series: '3090', - url: 'https://store.asus.com/us/item/202011AM190000002' - }, - { - brand: 'asus', - itemNumber: '202009AM150000003', - model: 'tuf', - series: '3090', - url: 'https://store.asus.com/us/item/202009AM150000003' - }, - { - brand: 'asus', - itemNumber: '202010AM310000004', - model: 'strix oc', - series: '3090', - url: 'https://store.asus.com/us/item/202010AM310000004' - }, - { - brand: 'asus', - itemNumber: '202012AM220000001', - model: 'strix oc', - series: '3090', - url: 'https://store.asus.com/us/item/202012AM220000001' - }, - { - brand: 'asus', - itemNumber: '202011AM200000003', - model: 'crosshair viii', - series: 'darkhero', - url: 'https://store.asus.com/us/item/202011AM200000003' - } - ], - name: 'asus', - realTimeInventoryLookup: async (itemNumber: string) => { - const request_url = - 'https://store.asus.com/us/category/get_real_time_data'; - const response = await fetch(request_url, { - body: 'sm_seq_list%5B%5D=' + itemNumber, - headers: { - 'accept-language': 'en-US,en;q=0.9', - 'cache-control': 'no-cache', - 'content-type': - 'application/x-www-form-urlencoded; charset=UTF-8' - }, - method: 'POST' - }); - const response_json = await response.json(); + backoffStatusCodes: [403, 429, 503], + currency: '$', + labels: { + inStock: { + container: '#item_add_cart', + text: ['add to cart'], + }, + outOfStock: { + container: '#off_sale', + text: ['sold out'], + }, + }, + links: [ + { + brand: 'test:brand', + itemNumber: '202006AM260000003', + model: 'test:model', + series: 'test:series', + url: 'https://store.asus.com/us/item/202006AM260000003', + }, + { + brand: 'asus', + itemNumber: '202012AM030000004', + model: 'tuf oc', + series: '3060ti', + url: 'https://store.asus.com/us/item/202012AM030000004', + }, + { + brand: 'asus', + itemNumber: '202012AM030000003', + model: 'dual', + series: '3060ti', + url: 'https://store.asus.com/us/item/202012AM030000003', + }, + { + brand: 'asus', + itemNumber: '202012AM030000005', + model: 'strix oc', + series: '3060ti', + url: 'https://store.asus.com/us/item/202012AM030000005', + }, + { + brand: 'asus', + itemNumber: '202012AM030000002', + model: 'ko', + series: '3060ti', + url: 'https://store.asus.com/us/item/202012AM030000002', + }, + { + brand: 'asus', + itemNumber: '202010AM310000002', + model: 'tuf oc', + series: '3070', + url: 'https://store.asus.com/us/item/202010AM310000002', + }, + { + brand: 'asus', + itemNumber: '202011AM240000001', + model: 'dual', + series: '3070', + url: 'https://store.asus.com/us/item/202011AM240000001', + }, + { + brand: 'asus', + itemNumber: '202010AM310000001', + model: 'strix', + series: '3070', + url: 'https://store.asus.com/us/item/202010AM310000001', + }, + { + brand: 'asus', + itemNumber: '202011AM070000002', + model: 'ko oc', + series: '3070', + url: 'https://store.asus.com/us/item/202011AM070000002', + }, + { + brand: 'asus', + itemNumber: '202011AM070000003', + model: 'dual', + series: '3070', + url: 'https://store.asus.com/us/item/202011AM070000003', + }, + { + brand: 'asus', + itemNumber: '202101AM070000001', + model: 'strix oc', + series: '3070', + url: 'https://store.asus.com/us/item/202101AM070000001', + }, + { + brand: 'asus', + itemNumber: '202012AM160000002', + model: 'strix', + series: '3080', + url: 'https://store.asus.com/us/item/202012AM160000002', + }, + { + brand: 'asus', + itemNumber: '202011AM190000001', + model: 'tuf oc', + series: '3080', + url: 'https://store.asus.com/us/item/202011AM190000001', + }, + { + brand: 'asus', + itemNumber: '202012AM220000002', + model: 'strix oc', + series: '3080', + url: 'https://store.asus.com/us/item/202012AM220000002', + }, + { + brand: 'asus', + itemNumber: '202009AM150000004', + model: 'tuf', + series: '3080', + url: 'https://store.asus.com/us/item/202009AM150000004', + }, + { + brand: 'asus', + itemNumber: '202101AM070000002', + model: 'ekwb', + series: '3080', + url: 'https://store.asus.com/us/item/202101AM070000002', + }, + { + brand: 'asus', + itemNumber: '202011AM190000002', + model: 'tuf oc', + series: '3090', + url: 'https://store.asus.com/us/item/202011AM190000002', + }, + { + brand: 'asus', + itemNumber: '202009AM150000003', + model: 'tuf', + series: '3090', + url: 'https://store.asus.com/us/item/202009AM150000003', + }, + { + brand: 'asus', + itemNumber: '202010AM310000004', + model: 'strix oc', + series: '3090', + url: 'https://store.asus.com/us/item/202010AM310000004', + }, + { + brand: 'asus', + itemNumber: '202012AM220000001', + model: 'strix oc', + series: '3090', + url: 'https://store.asus.com/us/item/202012AM220000001', + }, + { + brand: 'asus', + itemNumber: '202011AM200000003', + model: 'crosshair viii', + series: 'darkhero', + url: 'https://store.asus.com/us/item/202011AM200000003', + }, + ], + name: 'asus', + realTimeInventoryLookup: async (itemNumber: string) => { + const request_url = 'https://store.asus.com/us/category/get_real_time_data'; + const response = await fetch(request_url, { + body: 'sm_seq_list%5B%5D=' + itemNumber, + headers: { + 'accept-language': 'en-US,en;q=0.9', + 'cache-control': 'no-cache', + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', + }, + method: 'POST', + }); + const response_json = await response.json(); - if (response_json.data[itemNumber] !== undefined) { - const item_info = response_json.data[itemNumber].market_info; - if (item_info.buy === true || item_info.quantity > 0) { - return true; - } - } + if (response_json.data[itemNumber] !== undefined) { + const item_info = response_json.data[itemNumber].market_info; + if (item_info.buy === true || item_info.quantity > 0) { + return true; + } + } - return false; - }, - successStatusCodes: [[0, 399], 404] + return false; + }, + successStatusCodes: [[0, 399], 404], }; diff --git a/src/store/model/awd.ts b/src/store/model/awd.ts index 5f155fc3ed..c8906a53af 100644 --- a/src/store/model/awd.ts +++ b/src/store/model/awd.ts @@ -2,92 +2,92 @@ import {Store} from './store'; import {getProductLinksBuilder} from './helpers/card'; export const Awd: Store = { - currency: '£', - labels: { - inStock: { - container: '.vs-stock .ty-qty-in-stock', - text: ['item(s)'] - }, - maxPrice: { - container: '.ty-price', - euroFormat: false // Note: Awd uses non-euroFromat as price seperator - }, - outOfStock: { - container: '.vs-stock.ty-float-left', - text: ['Out-of-stock'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.awd-it.co.uk/asus-nvidia-geforce-gt-710-silent-low-profile-2gb-gddr5-graphics-card-pci-e.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.awd-it.co.uk/amd-ryzen-5-5600x-cpu-six-core-3.7ghz-processor-socket-am4-retail.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.awd-it.co.uk/amd-ryzen-7-5800x-cpu-eight-core-3.8ghz-processor-socket-am4-retail.html' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.awd-it.co.uk/amd-ryzen-9-5900x-cpu-twelve-core-3.7ghz-processor-socket-am4-retail.html' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.awd-it.co.uk/amd-ryzen-9-5950x-sixteen-core-socket-am4-3.4ghz-processor.html' - } - ], - linksBuilder: { - builder: getProductLinksBuilder({ - productsSelector: '.grid-list .ty-grid-list__item', - sitePrefix: 'https://www.awd-it.co.uk', - titleSelector: '.product-title' - }), - urls: [ - { - series: 'rx6800', - url: - 'https://www.awd-it.co.uk/components/graphics-cards/ati/amd-radeon-6800-6800xt.html' - }, - { - series: '3060ti', - url: - 'https://www.awd-it.co.uk/components/graphics-cards/nvidia/nvidia-geforce-rtx-3060ti.html' - }, - { - series: '3070', - url: - 'https://www.awd-it.co.uk/components/graphics-cards/nvidia/nvidia-geforce-rtx-3070.html' - }, - { - series: '3080', - url: - 'https://www.awd-it.co.uk/components/graphics-cards/nvidia/nvidia-geforce-rtx-3080.html' - }, - { - series: '3090', - url: - 'https://www.awd-it.co.uk/components/graphics-cards/nvidia/nvidia-geforce-rtx-3090.html' - } - ] - }, - name: 'awd', - waitUntil: 'domcontentloaded' + currency: '£', + labels: { + inStock: { + container: '.vs-stock .ty-qty-in-stock', + text: ['item(s)'], + }, + maxPrice: { + container: '.ty-price', + euroFormat: false, // Note: Awd uses non-euroFromat as price seperator + }, + outOfStock: { + container: '.vs-stock.ty-float-left', + text: ['Out-of-stock'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.awd-it.co.uk/asus-nvidia-geforce-gt-710-silent-low-profile-2gb-gddr5-graphics-card-pci-e.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.awd-it.co.uk/amd-ryzen-5-5600x-cpu-six-core-3.7ghz-processor-socket-am4-retail.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.awd-it.co.uk/amd-ryzen-7-5800x-cpu-eight-core-3.8ghz-processor-socket-am4-retail.html', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.awd-it.co.uk/amd-ryzen-9-5900x-cpu-twelve-core-3.7ghz-processor-socket-am4-retail.html', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.awd-it.co.uk/amd-ryzen-9-5950x-sixteen-core-socket-am4-3.4ghz-processor.html', + }, + ], + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '.grid-list .ty-grid-list__item', + sitePrefix: 'https://www.awd-it.co.uk', + titleSelector: '.product-title', + }), + urls: [ + { + series: 'rx6800', + url: + 'https://www.awd-it.co.uk/components/graphics-cards/ati/amd-radeon-6800-6800xt.html', + }, + { + series: '3060ti', + url: + 'https://www.awd-it.co.uk/components/graphics-cards/nvidia/nvidia-geforce-rtx-3060ti.html', + }, + { + series: '3070', + url: + 'https://www.awd-it.co.uk/components/graphics-cards/nvidia/nvidia-geforce-rtx-3070.html', + }, + { + series: '3080', + url: + 'https://www.awd-it.co.uk/components/graphics-cards/nvidia/nvidia-geforce-rtx-3080.html', + }, + { + series: '3090', + url: + 'https://www.awd-it.co.uk/components/graphics-cards/nvidia/nvidia-geforce-rtx-3090.html', + }, + ], + }, + name: 'awd', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/azerty.ts b/src/store/model/azerty.ts index d970ad85a2..07f82ea75e 100644 --- a/src/store/model/azerty.ts +++ b/src/store/model/azerty.ts @@ -1,218 +1,218 @@ import {Store} from './store'; export const Azerty: Store = { - currency: '€', - labels: { - inStock: { - container: '.orderdelay', - text: ['Volgende werkdag in huis', '1 werkdag', '2-3 werkdagen'] - }, - maxPrice: { - container: '.mod_article .price', - euroFormat: true - }, - outOfStock: { - container: '.orderdelay', - text: ['Onbekend', 'meer dan 10 werkdagen', 'Pre-order'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://azerty.nl/product/gigabyte/3756757/geforce-rtx-2060-oc-6g-grafische-kaart-geforce-rtx-2060' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://azerty.nl/product/gigabyte/4349658/aorus-geforce-rtx-3080-xtreme-10g-grafische-kaart-gf-rtx-3080' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://azerty.nl/product/msi/4346262/geforce-rtx-3080-ventus-3x-10g-oc-grafische-kaart-rtx-3080' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://azerty.nl/product/asus/4346679/tuf-gaming-geforce-rtx-3080-grafische-kaart-gf-rtx-3080' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://azerty.nl/product/msi/4346263/geforce-rtx-3080-gaming-x-trio-10g-grafische-kaart-rtx-3080' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://azerty.nl/product/asus/4348176/tuf-gaming-geforce-rtx-3080-oc-grafische-kaart-gf-rtx-3080' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://azerty.nl/product/asus/4348174/rog-strix-geforce-rtx-3080-oc-grafische-kaart-gf-rtx-3080' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://azerty.nl/product/zotac/4352301/gaming-geforce-rtx-3080-trinity-oc-grafische-kaart-gf-rtx-3080' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://azerty.nl/product/gigabyte/4349651/aorus-geforce-rtx-3080-master-10g-grafische-kaart-gf-rtx-3080' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://azerty.nl/product/pny/4342269/geforce-rtx-3080-xlr8-gaming-revel-epic-x-rgb-triple-fan-gaming-edition-grafische-kaart-gf-rtx-3080' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://azerty.nl/product/asus/4363892/rog-strix-gaming-geforce-rtx-3070-o8g-videokaart-8-gb-gddr6' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: - 'https://azerty.nl/product/asus/4373096/rog-strix-gaming-geforce-rtx-3070-8g-videokaart-8-gb-gddr6' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: - 'https://azerty.nl/product/asus/4363910/tuf-gaming-geforce-rtx-3070-oc-videokaart-8-gb-gddr6' - }, - { - brand: 'asus', - model: 'tuf', - series: '3070', - url: - 'https://azerty.nl/product/asus/4373099/tuf-gaming-geforce-rtx-3070-videokaart-8-gb-gddr6' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3070', - url: - 'https://azerty.nl/product/inno3d/4369725/geforce-rtx-3070-ichill-x4-videokaart-8-gb-ddr6' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3070', - url: - 'https://azerty.nl/product/inno3d/4369726/geforce-rtx-3070-ichill-x3-videokaart-8-gb-ddr6' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://azerty.nl/product/msi/4374747/geforce-rtx-3070-ventus-3x-oc-videokaart-8-gb-gddr6' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: - 'https://azerty.nl/product/msi/4365398/geforce-rtx-3070-gaming-x-trio-videokaart-8-gb-gddr6' - }, - { - brand: 'pny', - model: 'dual fan', - series: '3070', - url: - 'https://azerty.nl/product/pny/4342270/uprising-dual-fan-geforce-rtx-3070' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3070', - url: - 'https://azerty.nl/product/pny/4342271/epic-x-rgb-geforce-rtx-3070-triple-fan-gaming-edition-xlr8--videokaart-8-gb-gddr6x' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3070', - url: - 'https://azerty.nl/product/evga/4377247/geforce-rtx-3070-ftw3-videokaart-8-gb-gddr6' - }, - { - brand: 'evga', - model: 'xc3', - series: '3070', - url: - 'https://azerty.nl/product/evga/4377248/xc3-geforce-rtx-3070-xc3-videokaart-8-gb-gddr6' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3070', - url: - 'https://azerty.nl/product/evga/4377250/ftw3-ultra-geforce-rtx-3070-videokaart-8-gb-gddr6' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3070', - url: - 'https://azerty.nl/product/evga/4377252/xc3-black-geforce-rtx-3070-videokaart-8-gb-gddr6' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://azerty.nl/product/amd/4368019/ryzen-5-5600x-processor-3-7-ghz-4-6-ghz-' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://azerty.nl/product/amd/4368018/ryzen-7-5800x-processor-3-8-ghz-4-7-ghz-' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://azerty.nl/product/amd/4368017/ryzen-9-5900x-processor-3-7-ghz-4-8-ghz-' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://azerty.nl/product/amd/4368016/ryzen-9-5950x-processor-3-4-ghz-4-9-ghz-' - } - ], - name: 'azerty' + currency: '€', + labels: { + inStock: { + container: '.orderdelay', + text: ['Volgende werkdag in huis', '1 werkdag', '2-3 werkdagen'], + }, + maxPrice: { + container: '.mod_article .price', + euroFormat: true, + }, + outOfStock: { + container: '.orderdelay', + text: ['Onbekend', 'meer dan 10 werkdagen', 'Pre-order'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://azerty.nl/product/gigabyte/3756757/geforce-rtx-2060-oc-6g-grafische-kaart-geforce-rtx-2060', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://azerty.nl/product/gigabyte/4349658/aorus-geforce-rtx-3080-xtreme-10g-grafische-kaart-gf-rtx-3080', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://azerty.nl/product/msi/4346262/geforce-rtx-3080-ventus-3x-10g-oc-grafische-kaart-rtx-3080', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://azerty.nl/product/asus/4346679/tuf-gaming-geforce-rtx-3080-grafische-kaart-gf-rtx-3080', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://azerty.nl/product/msi/4346263/geforce-rtx-3080-gaming-x-trio-10g-grafische-kaart-rtx-3080', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://azerty.nl/product/asus/4348176/tuf-gaming-geforce-rtx-3080-oc-grafische-kaart-gf-rtx-3080', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://azerty.nl/product/asus/4348174/rog-strix-geforce-rtx-3080-oc-grafische-kaart-gf-rtx-3080', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://azerty.nl/product/zotac/4352301/gaming-geforce-rtx-3080-trinity-oc-grafische-kaart-gf-rtx-3080', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://azerty.nl/product/gigabyte/4349651/aorus-geforce-rtx-3080-master-10g-grafische-kaart-gf-rtx-3080', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://azerty.nl/product/pny/4342269/geforce-rtx-3080-xlr8-gaming-revel-epic-x-rgb-triple-fan-gaming-edition-grafische-kaart-gf-rtx-3080', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://azerty.nl/product/asus/4363892/rog-strix-gaming-geforce-rtx-3070-o8g-videokaart-8-gb-gddr6', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: + 'https://azerty.nl/product/asus/4373096/rog-strix-gaming-geforce-rtx-3070-8g-videokaart-8-gb-gddr6', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: + 'https://azerty.nl/product/asus/4363910/tuf-gaming-geforce-rtx-3070-oc-videokaart-8-gb-gddr6', + }, + { + brand: 'asus', + model: 'tuf', + series: '3070', + url: + 'https://azerty.nl/product/asus/4373099/tuf-gaming-geforce-rtx-3070-videokaart-8-gb-gddr6', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3070', + url: + 'https://azerty.nl/product/inno3d/4369725/geforce-rtx-3070-ichill-x4-videokaart-8-gb-ddr6', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3070', + url: + 'https://azerty.nl/product/inno3d/4369726/geforce-rtx-3070-ichill-x3-videokaart-8-gb-ddr6', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://azerty.nl/product/msi/4374747/geforce-rtx-3070-ventus-3x-oc-videokaart-8-gb-gddr6', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: + 'https://azerty.nl/product/msi/4365398/geforce-rtx-3070-gaming-x-trio-videokaart-8-gb-gddr6', + }, + { + brand: 'pny', + model: 'dual fan', + series: '3070', + url: + 'https://azerty.nl/product/pny/4342270/uprising-dual-fan-geforce-rtx-3070', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3070', + url: + 'https://azerty.nl/product/pny/4342271/epic-x-rgb-geforce-rtx-3070-triple-fan-gaming-edition-xlr8--videokaart-8-gb-gddr6x', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3070', + url: + 'https://azerty.nl/product/evga/4377247/geforce-rtx-3070-ftw3-videokaart-8-gb-gddr6', + }, + { + brand: 'evga', + model: 'xc3', + series: '3070', + url: + 'https://azerty.nl/product/evga/4377248/xc3-geforce-rtx-3070-xc3-videokaart-8-gb-gddr6', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3070', + url: + 'https://azerty.nl/product/evga/4377250/ftw3-ultra-geforce-rtx-3070-videokaart-8-gb-gddr6', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3070', + url: + 'https://azerty.nl/product/evga/4377252/xc3-black-geforce-rtx-3070-videokaart-8-gb-gddr6', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://azerty.nl/product/amd/4368019/ryzen-5-5600x-processor-3-7-ghz-4-6-ghz-', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://azerty.nl/product/amd/4368018/ryzen-7-5800x-processor-3-8-ghz-4-7-ghz-', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://azerty.nl/product/amd/4368017/ryzen-9-5900x-processor-3-7-ghz-4-8-ghz-', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://azerty.nl/product/amd/4368016/ryzen-9-5950x-processor-3-4-ghz-4-9-ghz-', + }, + ], + name: 'azerty', }; diff --git a/src/store/model/bandh.ts b/src/store/model/bandh.ts index 919c708103..915a3303bc 100644 --- a/src/store/model/bandh.ts +++ b/src/store/model/bandh.ts @@ -1,339 +1,339 @@ import {Store} from './store'; export const BAndH: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: 'div[data-selenium="addToCartSection"]', - text: ['add to cart'] - }, - maxPrice: { - container: 'div[data-selenium="pricingPrice"]', - euroFormat: false - }, - outOfStock: { - container: 'button[data-selenium="notifyAvailabilityButton"]', - text: ['notify when available'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.bhphotovideo.com/c/product/1452927-REG/evga_06g_p4_2063_kr_geforce_rtx_2060_xc.html' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: - 'https://www.bhphotovideo.com/c/product/1602755-REG/asus_dualrtx30708g_geforce_rtx_3070_8g.html' - }, - { - brand: 'pny', - model: 'dual fan', - series: '3070', - url: - 'https://www.bhphotovideo.com/c/product/1595984-REG/pny_technologies_vcg30708tfxppb_geforce_rtx_3070_epic_x.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://www.bhphotovideo.com/c/product/1602756-REG/asus_strixrtx3070o8_rog_strix_geforce_rtx.html' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: - 'https://www.bhphotovideo.com/c/product/1603974-REG/asus_dualrtx3070o8g_dual_geforce_rtx_3070.html' - }, - { - brand: 'asus', - model: 'ko oc', - series: '3070', - url: - 'https://www.bhphotovideo.com/c/product/1606745-REG/asus_90yv0fq2_m0aa00_ko_nvidia_geforce_rtx.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: - 'https://www.bhphotovideo.com/c/product/1606746-REG/asus_tuf_rtx3070_o8g_gaming_tuf_gaming_nvidia_geforce.html' - }, - { - brand: 'asus', - model: 'ekwb', - series: '3070', - url: - 'https://www.bhphotovideo.com/c/product/1614305-REG/asus_rtx3070_8g_ek_ekwb_geforce_rtx_3070.html' - }, - { - brand: 'asus', - model: 'strix white', - series: '3070', - url: - 'https://www.bhphotovideo.com/c/product/1614300-REG/asus_rog_strix_rtx3070_o8g_white_rog_strix_geforce_rtx.html' - }, - // TUF was removed from BH, not sure why so commenting out listing for now - // { - // brand: 'asus', - // model: 'tuf', - // series: '3080', - // url: 'https://www.bhphotovideo.com/c/product/1593649-REG/asus_tuf_rtx3080_10g_gaming_tuf_gaming_geforce_rtx.html' - // }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.bhphotovideo.com/c/product/1593333-REG/gigabyte_gv_n3080gaming_oc_10gd_geforce_rtx_3080_gaming.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.bhphotovideo.com/c/product/1592969-REG/zotac_zt_a30800d_10p_gaming_geforce_rtx_3080.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.bhphotovideo.com/c/product/1593650-REG/asus_tuf_rtx3080_o10g_gaming_tuf_gaming_geforce_rtx.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.bhphotovideo.com/c/product/1603617-REG/asus_rog_strix_rtx3080_o10g_gaming_rog_strix_geforce_rtx.html' - }, - { - brand: 'asus', - model: 'strix white', - series: '3080', - url: - 'https://www.bhphotovideo.com/c/product/1614301-REG/asus_rog_strix_rtx3080_o10g_white_rog_strix_geforce_rtx.html' - }, - { - brand: 'asus', - model: 'ekwb', - series: '3080', - url: - 'https://www.bhphotovideo.com/c/product/1614303-REG/asus_rtx3080_10g_ek_ekwb_geforce_rtx_3080.html' - }, - { - brand: 'asus', - model: 'ko oc', - series: '3060ti', - url: - 'https://www.bhphotovideo.com/c/product/1609756-REG/asus_ko_rtx3060ti_o8g_gaming_ko_geforce_rtx_3060.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3060ti', - url: - 'https://www.bhphotovideo.com/c/product/1607025-REG/asus_tuf_rtx3060ti_o8g_gaming_geforce_rtx_3060_ti.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3060ti', - url: - 'https://www.bhphotovideo.com/c/product/1606948-REG/gigabyte_gv_n306teagle_oc_8gd_rtx_3060_ti_eagle.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3060ti', - url: - 'https://www.bhphotovideo.com/c/product/1606949-REG/gigabyte_gv_n306teagle_8gd_rtx_3060_ti_eagle.html' - }, - { - brand: 'gigabyte', - model: 'aorus', - series: '3060ti', - url: - 'https://www.bhphotovideo.com/c/product/1606945-REG/gigabyte_gv_n306taorus_m_8gd_aorus_rtx_3060_ti.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3060ti', - url: - 'https://www.bhphotovideo.com/c/product/1606947-REG/gigabyte_gv_n306tgaming_oc_8gd_rtx_3060_ti_gaming.html' - }, - { - brand: 'gigabyte', - model: 'gaming pro', - series: '3060ti', - url: - 'https://www.bhphotovideo.com/c/product/1606946-REG/gigabyte_gv_n306tgamingoc_pro_8gd_rtx_3060_ti_gaming.html' - }, + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: 'div[data-selenium="addToCartSection"]', + text: ['add to cart'], + }, + maxPrice: { + container: 'div[data-selenium="pricingPrice"]', + euroFormat: false, + }, + outOfStock: { + container: 'button[data-selenium="notifyAvailabilityButton"]', + text: ['notify when available'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.bhphotovideo.com/c/product/1452927-REG/evga_06g_p4_2063_kr_geforce_rtx_2060_xc.html', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: + 'https://www.bhphotovideo.com/c/product/1602755-REG/asus_dualrtx30708g_geforce_rtx_3070_8g.html', + }, + { + brand: 'pny', + model: 'dual fan', + series: '3070', + url: + 'https://www.bhphotovideo.com/c/product/1595984-REG/pny_technologies_vcg30708tfxppb_geforce_rtx_3070_epic_x.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://www.bhphotovideo.com/c/product/1602756-REG/asus_strixrtx3070o8_rog_strix_geforce_rtx.html', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: + 'https://www.bhphotovideo.com/c/product/1603974-REG/asus_dualrtx3070o8g_dual_geforce_rtx_3070.html', + }, + { + brand: 'asus', + model: 'ko oc', + series: '3070', + url: + 'https://www.bhphotovideo.com/c/product/1606745-REG/asus_90yv0fq2_m0aa00_ko_nvidia_geforce_rtx.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: + 'https://www.bhphotovideo.com/c/product/1606746-REG/asus_tuf_rtx3070_o8g_gaming_tuf_gaming_nvidia_geforce.html', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3070', + url: + 'https://www.bhphotovideo.com/c/product/1614305-REG/asus_rtx3070_8g_ek_ekwb_geforce_rtx_3070.html', + }, + { + brand: 'asus', + model: 'strix white', + series: '3070', + url: + 'https://www.bhphotovideo.com/c/product/1614300-REG/asus_rog_strix_rtx3070_o8g_white_rog_strix_geforce_rtx.html', + }, + // TUF was removed from BH, not sure why so commenting out listing for now + // { + // brand: 'asus', + // model: 'tuf', + // series: '3080', + // url: 'https://www.bhphotovideo.com/c/product/1593649-REG/asus_tuf_rtx3080_10g_gaming_tuf_gaming_geforce_rtx.html' + // }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.bhphotovideo.com/c/product/1593333-REG/gigabyte_gv_n3080gaming_oc_10gd_geforce_rtx_3080_gaming.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.bhphotovideo.com/c/product/1592969-REG/zotac_zt_a30800d_10p_gaming_geforce_rtx_3080.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.bhphotovideo.com/c/product/1593650-REG/asus_tuf_rtx3080_o10g_gaming_tuf_gaming_geforce_rtx.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.bhphotovideo.com/c/product/1603617-REG/asus_rog_strix_rtx3080_o10g_gaming_rog_strix_geforce_rtx.html', + }, + { + brand: 'asus', + model: 'strix white', + series: '3080', + url: + 'https://www.bhphotovideo.com/c/product/1614301-REG/asus_rog_strix_rtx3080_o10g_white_rog_strix_geforce_rtx.html', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3080', + url: + 'https://www.bhphotovideo.com/c/product/1614303-REG/asus_rtx3080_10g_ek_ekwb_geforce_rtx_3080.html', + }, + { + brand: 'asus', + model: 'ko oc', + series: '3060ti', + url: + 'https://www.bhphotovideo.com/c/product/1609756-REG/asus_ko_rtx3060ti_o8g_gaming_ko_geforce_rtx_3060.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060ti', + url: + 'https://www.bhphotovideo.com/c/product/1607025-REG/asus_tuf_rtx3060ti_o8g_gaming_geforce_rtx_3060_ti.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3060ti', + url: + 'https://www.bhphotovideo.com/c/product/1606948-REG/gigabyte_gv_n306teagle_oc_8gd_rtx_3060_ti_eagle.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3060ti', + url: + 'https://www.bhphotovideo.com/c/product/1606949-REG/gigabyte_gv_n306teagle_8gd_rtx_3060_ti_eagle.html', + }, + { + brand: 'gigabyte', + model: 'aorus', + series: '3060ti', + url: + 'https://www.bhphotovideo.com/c/product/1606945-REG/gigabyte_gv_n306taorus_m_8gd_aorus_rtx_3060_ti.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3060ti', + url: + 'https://www.bhphotovideo.com/c/product/1606947-REG/gigabyte_gv_n306tgaming_oc_8gd_rtx_3060_ti_gaming.html', + }, + { + brand: 'gigabyte', + model: 'gaming pro', + series: '3060ti', + url: + 'https://www.bhphotovideo.com/c/product/1606946-REG/gigabyte_gv_n306tgamingoc_pro_8gd_rtx_3060_ti_gaming.html', + }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.bhphotovideo.com/c/product/1593996-REG/msi_g3080gxt10_geforce_rtx_3080_gaming.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.bhphotovideo.com/c/product/1593997-REG/msi_g3080v3x10c_geforce_rtx_3080_ventus.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.bhphotovideo.com/c/product/1593645-REG/msi_geforce_rtx_3080_gaming.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.bhphotovideo.com/c/product/1593646-REG/msi_geforce_rtx_3080_ventus.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1592970-REG/zotac_zt_a30900d_10p_gaming_geforce_rtx_3090.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1593647-REG/msi_geforce_rtx_3090_gaming.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1593994-REG/msi_g3090gxt24_geforce_rtx_3090_gaming.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1593648-REG/msi_geforce_rtx_3090_ventus.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1593995-REG/msi_g3090v3x24c_geforce_rtx_3090_ventus.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1593334-REG/gigabyte_gv_n3090eagle_oc_24gd_geforce_rtx_3090_eagle.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1593335-REG/gigabyte_gv_n3090gaming_oc_24gd_geforce_rtx3090_gaming_oc.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1594454-REG/asus_90yv0fd0_m0am00_tuf_gaming_geforce_rtx.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1594451-REG/asus_90yv0fd1_m0am00_tuf_gaming_geforce_rtx.html' - }, - { - brand: 'asus', - model: 'ekwb', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1607043-REG/asus_rtx3090_24g_ek_geforce_rtx_3090_24g.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1601764-REG/asus_rog_strix_rtx3090_o24g_gaming_rog_strix_geforce_rtx.html' - }, - { - brand: 'asus', - model: 'strix white', - series: '3090', - url: - 'https://www.bhphotovideo.com/c/product/1614302-REG/asus_rog_strix_rtx3090_o24g_white_rog_strix_geforce_rtx.html' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.bhphotovideo.com/c/product/1598372-REG/amd_100_100000059wof_ryzen_9_5950x_3_4.html' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.bhphotovideo.com/c/product/1598373-REG/amd_100_100000061wof_ryzen_9_5900x_3_7.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.bhphotovideo.com/c/product/1598376-REG/amd_100_100000063wof_ryzen_7_5800x_3_8.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.bhphotovideo.com/c/product/1598377-REG/amd_100_100000065box_ryzen_5_5600x_3_7.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.bhphotovideo.com/c/product/1598377-REG/amd_100_100000065box_ryzen_5_5600x_3_7.html' - }, - { - brand: 'corsair', - model: '750 platinum', - series: 'sf', - url: - 'https://www.bhphotovideo.com/c/product/1560680-REG/corsair_cp_9020186_na_corsair_sf750_power_supply.html' - } - ], - name: 'bandh' + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.bhphotovideo.com/c/product/1593996-REG/msi_g3080gxt10_geforce_rtx_3080_gaming.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.bhphotovideo.com/c/product/1593997-REG/msi_g3080v3x10c_geforce_rtx_3080_ventus.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.bhphotovideo.com/c/product/1593645-REG/msi_geforce_rtx_3080_gaming.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.bhphotovideo.com/c/product/1593646-REG/msi_geforce_rtx_3080_ventus.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1592970-REG/zotac_zt_a30900d_10p_gaming_geforce_rtx_3090.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1593647-REG/msi_geforce_rtx_3090_gaming.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1593994-REG/msi_g3090gxt24_geforce_rtx_3090_gaming.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1593648-REG/msi_geforce_rtx_3090_ventus.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1593995-REG/msi_g3090v3x24c_geforce_rtx_3090_ventus.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1593334-REG/gigabyte_gv_n3090eagle_oc_24gd_geforce_rtx_3090_eagle.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1593335-REG/gigabyte_gv_n3090gaming_oc_24gd_geforce_rtx3090_gaming_oc.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1594454-REG/asus_90yv0fd0_m0am00_tuf_gaming_geforce_rtx.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1594451-REG/asus_90yv0fd1_m0am00_tuf_gaming_geforce_rtx.html', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1607043-REG/asus_rtx3090_24g_ek_geforce_rtx_3090_24g.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1601764-REG/asus_rog_strix_rtx3090_o24g_gaming_rog_strix_geforce_rtx.html', + }, + { + brand: 'asus', + model: 'strix white', + series: '3090', + url: + 'https://www.bhphotovideo.com/c/product/1614302-REG/asus_rog_strix_rtx3090_o24g_white_rog_strix_geforce_rtx.html', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.bhphotovideo.com/c/product/1598372-REG/amd_100_100000059wof_ryzen_9_5950x_3_4.html', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.bhphotovideo.com/c/product/1598373-REG/amd_100_100000061wof_ryzen_9_5900x_3_7.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.bhphotovideo.com/c/product/1598376-REG/amd_100_100000063wof_ryzen_7_5800x_3_8.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.bhphotovideo.com/c/product/1598377-REG/amd_100_100000065box_ryzen_5_5600x_3_7.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.bhphotovideo.com/c/product/1598377-REG/amd_100_100000065box_ryzen_5_5600x_3_7.html', + }, + { + brand: 'corsair', + model: '750 platinum', + series: 'sf', + url: + 'https://www.bhphotovideo.com/c/product/1560680-REG/corsair_cp_9020186_na_corsair_sf750_power_supply.html', + }, + ], + name: 'bandh', }; diff --git a/src/store/model/bestbuy-ca.ts b/src/store/model/bestbuy-ca.ts index 01fff485b5..04e7e12821 100644 --- a/src/store/model/bestbuy-ca.ts +++ b/src/store/model/bestbuy-ca.ts @@ -1,208 +1,208 @@ import {Store} from './store'; export const BestBuyCa: Store = { - currency: '$', - labels: { - maxPrice: { - container: 'div[class*="pricingContainer"]', - euroFormat: false - }, - outOfStock: { - container: '.addToCartButton:disabled', - text: ['add to cart'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.bestbuy.ca/en-ca/product/google-nest-hello-wi-fi-video-doorbell-black-white/12222651' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3060ti', - url: - 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3060-ti-ventus-2x-oc-8gb-gddr6-video-card/15178453?intl=nosplash' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3060ti', - url: - 'https://www.bestbuy.ca/en-ca/product/nvidia-geforce-rtx-3060-ti-8gb-gddr6-video-card/15166285?intl=nosplash' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3060ti', - url: - 'https://www.bestbuy.ca/en-ca/product/zotac-geforce-rtx-3060-ti-twin-edge-oc-8gb-gddr6-video-card/15178452?intl=nosplash' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3060ti', - url: - 'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3060-ti-ftw3-ultra-8gb-gddr6-video-card/15200164?intl=nosplash' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.bestbuy.ca/en-ca/product/zotac-geforce-rtx-3080-trinity-10gb-gddr6x-video-card/14953249?intl=nosplash' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3080-trinity-oc-10gb-gddr6x-video-card/15000077?intl=nosplash' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3080', - url: - 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3080-ventus-3x-10gb-gddr6x-video-card/14950588?intl=nosplash' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x-video-card/15084753?intl=nosplash' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x-video-card-english/14961449?intl=nosplash' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.bestbuy.ca/en-ca/product/asus-tuf-gaming-geforce-rtx-3080-10gb-gddr6x-video-card/14953248?intl=nosplash' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.bestbuy.ca/en-ca/product/asus-rog-strix-geforce-rtx-3080-10gb-gddr6x-video-card/14954116?intl=nosplash' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.bestbuy.ca/en-ca/product/zotac-geforce-rtx-3090-trinity-24gb-gddr6x-video-card/14953250?intl=nosplash' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.bestbuy.ca/en-ca/product/asus-tuf-gaming-geforce-rtx-3090-24gb-gddr6x-video-card/14953247?intl=nosplash' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: - 'https://www.bestbuy.ca/en-ca/product/asus-rog-strix-geforce-rtx-3090-24gb-gddr6x-video-card/14954117?intl=nosplash' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3090-ventus-3x-oc-24gb-gddr6x-video-card/14966477?intl=nosplash' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: - 'https://www.bestbuy.ca/en-ca/product/evga-nvidia-geforce-rtx-3090-xc3-ultra-gaming-24gb-gddr6x-video-card/14967857?intl=nosplash' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3070-ventus-3x-oc-8gb-gddr6x-video-card/15038016?intl=nosplash' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3070-twin-edge-oc-8gb-gddr6x-video-card/15000078?intl=nosplash' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3070-twin-edge-8gb-gddr6x-video-card/15000079?intl=nosplash' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3070', - url: - 'https://www.bestbuy.ca/en-ca/product/nvidia-geforce-rtx-3070-8gb-gddr6-video-card-only-at-best-buy/15078017?intl=nosplash' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3070', - url: - 'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3070-xc3-ultra-8gb-gddr6-video-card/15147122?intl=nosplash' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3070', - url: - 'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3070-xc3-black-8gb-gddr6-video-card/15081879?intl=nosplash' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.bestbuy.ca/en-ca/product/playstation-5-console-online-only/14962185?intl=nosplash' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5de', - url: - 'https://www.bestbuy.ca/en-ca/product/playstation-5-digital-edition-console-online-only/14962184?intl=nosplash' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.bestbuy.ca/en-ca/product/xbox-series-x-1tb-console-new-model-online-only/14964951' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: - 'https://www.bestbuy.ca/en-ca/product/xbox-series-s-512gb-console-new-model-online-only/14964950' - } - ], - name: 'bestbuy-ca', - waitUntil: 'domcontentloaded' + currency: '$', + labels: { + maxPrice: { + container: 'div[class*="pricingContainer"]', + euroFormat: false, + }, + outOfStock: { + container: '.addToCartButton:disabled', + text: ['add to cart'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.bestbuy.ca/en-ca/product/google-nest-hello-wi-fi-video-doorbell-black-white/12222651', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: + 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3060-ti-ventus-2x-oc-8gb-gddr6-video-card/15178453?intl=nosplash', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3060ti', + url: + 'https://www.bestbuy.ca/en-ca/product/nvidia-geforce-rtx-3060-ti-8gb-gddr6-video-card/15166285?intl=nosplash', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3060ti', + url: + 'https://www.bestbuy.ca/en-ca/product/zotac-geforce-rtx-3060-ti-twin-edge-oc-8gb-gddr6-video-card/15178452?intl=nosplash', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3060ti', + url: + 'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3060-ti-ftw3-ultra-8gb-gddr6-video-card/15200164?intl=nosplash', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.bestbuy.ca/en-ca/product/zotac-geforce-rtx-3080-trinity-10gb-gddr6x-video-card/14953249?intl=nosplash', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3080-trinity-oc-10gb-gddr6x-video-card/15000077?intl=nosplash', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3080', + url: + 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3080-ventus-3x-10gb-gddr6x-video-card/14950588?intl=nosplash', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x-video-card/15084753?intl=nosplash', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x-video-card-english/14961449?intl=nosplash', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.bestbuy.ca/en-ca/product/asus-tuf-gaming-geforce-rtx-3080-10gb-gddr6x-video-card/14953248?intl=nosplash', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.bestbuy.ca/en-ca/product/asus-rog-strix-geforce-rtx-3080-10gb-gddr6x-video-card/14954116?intl=nosplash', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.bestbuy.ca/en-ca/product/zotac-geforce-rtx-3090-trinity-24gb-gddr6x-video-card/14953250?intl=nosplash', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.bestbuy.ca/en-ca/product/asus-tuf-gaming-geforce-rtx-3090-24gb-gddr6x-video-card/14953247?intl=nosplash', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: + 'https://www.bestbuy.ca/en-ca/product/asus-rog-strix-geforce-rtx-3090-24gb-gddr6x-video-card/14954117?intl=nosplash', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3090-ventus-3x-oc-24gb-gddr6x-video-card/14966477?intl=nosplash', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: + 'https://www.bestbuy.ca/en-ca/product/evga-nvidia-geforce-rtx-3090-xc3-ultra-gaming-24gb-gddr6x-video-card/14967857?intl=nosplash', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3070-ventus-3x-oc-8gb-gddr6x-video-card/15038016?intl=nosplash', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3070-twin-edge-oc-8gb-gddr6x-video-card/15000078?intl=nosplash', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://www.bestbuy.ca/en-ca/product/zotac-nvidia-geforce-rtx-3070-twin-edge-8gb-gddr6x-video-card/15000079?intl=nosplash', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3070', + url: + 'https://www.bestbuy.ca/en-ca/product/nvidia-geforce-rtx-3070-8gb-gddr6-video-card-only-at-best-buy/15078017?intl=nosplash', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3070', + url: + 'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3070-xc3-ultra-8gb-gddr6-video-card/15147122?intl=nosplash', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3070', + url: + 'https://www.bestbuy.ca/en-ca/product/evga-geforce-rtx-3070-xc3-black-8gb-gddr6-video-card/15081879?intl=nosplash', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.bestbuy.ca/en-ca/product/playstation-5-console-online-only/14962185?intl=nosplash', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5de', + url: + 'https://www.bestbuy.ca/en-ca/product/playstation-5-digital-edition-console-online-only/14962184?intl=nosplash', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.bestbuy.ca/en-ca/product/xbox-series-x-1tb-console-new-model-online-only/14964951', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: + 'https://www.bestbuy.ca/en-ca/product/xbox-series-s-512gb-console-new-model-online-only/14964950', + }, + ], + name: 'bestbuy-ca', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/bestbuy.ts b/src/store/model/bestbuy.ts index c7742c6f43..2b44d2fc29 100644 --- a/src/store/model/bestbuy.ts +++ b/src/store/model/bestbuy.ts @@ -1,466 +1,465 @@ import {Store} from './store'; export const BestBuy: Store = { - currency: '$', - labels: { - inStock: { - container: - '[data-sticky-media-gallery] .fulfillment-add-to-cart-button', - text: ['add to cart'] - }, - maxPrice: { - container: - '[data-sticky-media-gallery] .priceView-price .priceView-hero-price span' - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://api.bestbuy.com/click/-/6258941/pdp' - }, - { - brand: 'nvidia', - cartUrl: 'https://api.bestbuy.com/click/-/6429442/cart', - model: 'founders edition', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6429442/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6439300/cart', - model: 'xc3 black', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6439300/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6437912/cart', - model: 'eagle', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6437912/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6437909/cart', - model: 'gaming oc', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6437909/pdp' - }, - { - brand: 'pny', - cartUrl: 'https://api.bestbuy.com/click/-/6432654/cart', - model: 'dual fan', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6432654/pdp' - }, - { - brand: 'pny', - cartUrl: 'https://api.bestbuy.com/click/-/6432653/cart', - model: 'xlr8 revel', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6432653/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6439384/cart', - model: 'aorus', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6439384/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6439385/cart', - model: 'vision', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6439385/pdp' - }, - { - brand: 'asus', - cartUrl: 'https://api.bestbuy.com/click/-/6439128/cart', - model: 'tuf', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6439128/pdp' - }, - { - brand: 'msi', - cartUrl: 'https://api.bestbuy.com/click/-/6438278/cart', - model: 'ventus 3x oc', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6438278/pdp' - }, - { - brand: 'asus', - cartUrl: 'https://api.bestbuy.com/click/-/6439127/cart', - model: 'strix', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6439127/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6439301/cart', - model: 'ftw3 ultra', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6439301/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6439299/cart', - model: 'xc3 ultra', - series: '3070', - url: 'https://api.bestbuy.com/click/-/6439299/pdp' - }, - { - brand: 'nvidia', - cartUrl: 'https://api.bestbuy.com/click/-/6429440/cart', - model: 'founders edition', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6429440/pdp' - }, - { - brand: 'asus', - cartUrl: 'https://api.bestbuy.com/click/-/6432445/cart', - model: 'strix', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6432445/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6432399/cart', - model: 'xc3 black', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6432399/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6436194/cart', - model: 'xc3', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6436194/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6432400/cart', - model: 'xc3 ultra', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6432400/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6436196/cart', - model: 'ftw3 ultra', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6436196/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6436191/cart', - model: 'ftw3', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6436191/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6430620/cart', - model: 'gaming oc', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6430620/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6430621/cart', - model: 'eagle oc', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6430621/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6436219/cart', - model: 'vision oc', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6436219/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6436223/cart', - model: 'aorus master', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6436223/pdp' - }, - { - brand: 'msi', - cartUrl: 'https://api.bestbuy.com/click/-/6430175/cart', - model: 'ventus 3x oc', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6430175/pdp' - }, - { - brand: 'pny', - cartUrl: 'https://api.bestbuy.com/click/-/6432655/cart', - model: 'xlr8 revel', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6432655/pdp' - }, - { - brand: 'pny', - cartUrl: 'https://api.bestbuy.com/click/-/6432658/cart', - model: 'xlr8 revel', - series: '3080', - url: 'https://api.bestbuy.com/click/-/6432658/pdp' - }, - { - brand: 'nvidia', - cartUrl: 'https://api.bestbuy.com/click/-/6429434/cart', - model: 'founders edition', - series: '3090', - url: 'https://api.bestbuy.com/click/-/6429434/pdp' - }, - { - brand: 'asus', - cartUrl: 'https://api.bestbuy.com/click/-/6432447/cart', - model: 'strix', - series: '3090', - url: 'https://api.bestbuy.com/click/-/6432447/pdp' - }, - { - brand: 'asus', - cartUrl: 'https://api.bestbuy.com/click/-/6432446/cart', - model: 'tuf', - series: '3090', - url: 'https://api.bestbuy.com/click/-/6432446/pdp' - }, - { - brand: 'msi', - cartUrl: 'https://api.bestbuy.com/click/-/6430215/cart', - model: 'ventus 3x oc', - series: '3090', - url: 'https://api.bestbuy.com/click/-/6430215/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6430623/cart', - model: 'gaming', - series: '3090', - url: 'https://api.bestbuy.com/click/-/6430623/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6430624/cart', - model: 'eagle', - series: '3090', - url: 'https://api.bestbuy.com/click/-/6430624/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6434363/cart', - model: 'xc3', - series: '3090', - url: 'https://api.bestbuy.com/click/-/6434363/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6436193/cart', - model: 'ftw3', - series: '3090', - url: 'https://api.bestbuy.com/click/-/6436193/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6436192/cart', - model: 'ftw3 ultra', - series: '3090', - url: 'https://api.bestbuy.com/click/-/6436192/pdp' - }, - { - brand: 'pny', - cartUrl: 'https://api.bestbuy.com/click/-/6432657/cart', - model: 'xlr8 revel', - series: '3090', - url: 'https://api.bestbuy.com/click/-/6432657/pdp' - }, - { - brand: 'nvidia', - cartUrl: 'https://api.bestbuy.com/click/-/6439402/cart', - model: 'founders edition', - series: '3060ti', - url: 'https://api.bestbuy.com/click/-/6439402/pdp' - }, - { - brand: 'msi', - cartUrl: 'https://api.bestbuy.com/click/-/6441172/cart', - model: 'ventus 2x', - series: '3060ti', - url: 'https://api.bestbuy.com/click/-/6441172/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6442484/cart', - model: 'gaming oc', - series: '3060ti', - url: 'https://api.bestbuy.com/click/-/6442484/pdp' - }, - { - brand: 'gigabyte', - cartUrl: 'https://api.bestbuy.com/click/-/6442485/cart', - model: 'eagle', - series: '3060ti', - url: 'https://api.bestbuy.com/click/-/6442485/pdp' - }, - { - brand: 'amd', - cartUrl: 'https://api.bestbuy.com/click/-/6438942/cart', - model: '5900x', - series: 'ryzen5900', - url: 'https://api.bestbuy.com/click/-/6438942/pdp' - }, - { - brand: 'amd', - cartUrl: 'https://api.bestbuy.com/click/-/6438941/cart', - model: '5950x', - series: 'ryzen5950', - url: 'https://api.bestbuy.com/click/-/6438941/pdp' - }, - { - brand: 'amd', - cartUrl: 'https://api.bestbuy.com/click/-/6439000/cart', - model: '5800x', - series: 'ryzen5800', - url: 'https://api.bestbuy.com/click/-/6439000/pdp' - }, - { - brand: 'amd', - cartUrl: 'https://api.bestbuy.com/click/-/6438943/cart', - model: '5600x', - series: 'ryzen5600', - url: 'https://api.bestbuy.com/click/-/6438943/pdp' - }, - { - brand: 'sony', - cartUrl: 'https://api.bestbuy.com/click/-/6426149/cart', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://api.bestbuy.com/click/-/6426149/pdp' - }, - { - brand: 'sony', - cartUrl: 'https://api.bestbuy.com/click/-/6430161/cart', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://api.bestbuy.com/click/-/6430161/pdp' - }, - { - brand: 'microsoft', - cartUrl: 'https://api.bestbuy.com/click/-/6428324/cart', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://api.bestbuy.com/click/-/6428324/pdp' - }, - { - brand: 'microsoft', - cartUrl: 'https://api.bestbuy.com/click/-/6430277/cart', - model: 'xbox series s', - series: 'xboxss', - url: 'https://api.bestbuy.com/click/-/6430277/pdp' - }, - { - brand: 'msi', - cartUrl: 'https://api.bestbuy.com/click/-/6440913/cart', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://api.bestbuy.com/click/-/6440913/pdp' - }, - { - brand: 'msi', - cartUrl: 'https://api.bestbuy.com/click/-/6441020/cart', - model: 'amd reference', - series: 'rx6800', - url: 'https://api.bestbuy.com/click/-/6441020/pdp' - }, - { - brand: 'xfx', - cartUrl: 'https://api.bestbuy.com/click/-/6442077/cart', - model: 'amd reference', - series: 'rx6800', - url: 'https://api.bestbuy.com/click/-/6442077/pdp' - }, - { - brand: 'xfx', - cartUrl: 'https://api.bestbuy.com/click/-/6441226/cart', - model: 'amd reference', - series: 'rx6800xt', - url: 'https://api.bestbuy.com/click/-/6441226/pdp' - }, - { - brand: 'xfx', - cartUrl: 'https://api.bestbuy.com/click/-/6442585/cart', - model: 'merc', - series: 'rx6800xt', - url: 'https://api.bestbuy.com/click/-/6442585/pdp' - }, - { - brand: 'xfx', - cartUrl: 'https://api.bestbuy.com/click/-/6444358/cart', - model: 'amd reference', - series: 'rx6900xt', - url: 'https://api.bestbuy.com/click/-/6444358/pdp' - }, - { - brand: 'msi', - cartUrl: 'https://api.bestbuy.com/click/-/6444716/cart', - model: 'amd reference', - series: 'rx6900xt', - url: 'https://api.bestbuy.com/click/-/6444716/pdp' - }, - { - brand: 'xfx', - cartUrl: 'https://api.bestbuy.com/click/-/6445157/cart', - model: 'merc', - series: 'rx6900xt', - url: 'https://api.bestbuy.com/click/-/6445157/pdp' - }, - { - brand: 'corsair', - cartUrl: 'https://api.bestbuy.com/click/-/6351845/cart', - model: '750 platinum', - series: 'sf', - url: 'https://api.bestbuy.com/click/-/6351845/pdp' - }, - { - brand: 'corsair', - cartUrl: 'https://api.bestbuy.com/click/-/6351844/cart', - model: '600 platinum', - series: 'sf', - url: 'https://api.bestbuy.com/click/-/6351844/pdp' - }, - { - brand: 'pny', - cartUrl: 'https://api.bestbuy.com/click/-/6446660/cart', - model: 'xlr8 uprising', - series: '3060ti', - url: 'https://api.bestbuy.com/click/-/6446660/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6444445/cart', - model: 'xc gaming', - series: '3060ti', - url: 'https://api.bestbuy.com/click/-/6444445/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6444444/cart', - model: 'ftw3', - series: '3060ti', - url: 'https://api.bestbuy.com/click/-/6444444/pdp' - }, - { - brand: 'evga', - cartUrl: 'https://api.bestbuy.com/click/-/6444449/cart', - model: 'ftw3', - series: '3060ti', - url: 'https://api.bestbuy.com/click/-/6444449/pdp' - } - ], - name: 'bestbuy' + currency: '$', + labels: { + inStock: { + container: '[data-sticky-media-gallery] .fulfillment-add-to-cart-button', + text: ['add to cart'], + }, + maxPrice: { + container: + '[data-sticky-media-gallery] .priceView-price .priceView-hero-price span', + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://api.bestbuy.com/click/-/6258941/pdp', + }, + { + brand: 'nvidia', + cartUrl: 'https://api.bestbuy.com/click/-/6429442/cart', + model: 'founders edition', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6429442/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6439300/cart', + model: 'xc3 black', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6439300/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6437912/cart', + model: 'eagle', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6437912/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6437909/cart', + model: 'gaming oc', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6437909/pdp', + }, + { + brand: 'pny', + cartUrl: 'https://api.bestbuy.com/click/-/6432654/cart', + model: 'dual fan', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6432654/pdp', + }, + { + brand: 'pny', + cartUrl: 'https://api.bestbuy.com/click/-/6432653/cart', + model: 'xlr8 revel', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6432653/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6439384/cart', + model: 'aorus', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6439384/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6439385/cart', + model: 'vision', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6439385/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6439128/cart', + model: 'tuf', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6439128/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6438278/cart', + model: 'ventus 3x oc', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6438278/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6439127/cart', + model: 'strix', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6439127/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6439301/cart', + model: 'ftw3 ultra', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6439301/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6439299/cart', + model: 'xc3 ultra', + series: '3070', + url: 'https://api.bestbuy.com/click/-/6439299/pdp', + }, + { + brand: 'nvidia', + cartUrl: 'https://api.bestbuy.com/click/-/6429440/cart', + model: 'founders edition', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6429440/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6432445/cart', + model: 'strix', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6432445/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6432399/cart', + model: 'xc3 black', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6432399/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6436194/cart', + model: 'xc3', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6436194/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6432400/cart', + model: 'xc3 ultra', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6432400/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6436196/cart', + model: 'ftw3 ultra', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6436196/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6436191/cart', + model: 'ftw3', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6436191/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6430620/cart', + model: 'gaming oc', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6430620/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6430621/cart', + model: 'eagle oc', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6430621/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6436219/cart', + model: 'vision oc', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6436219/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6436223/cart', + model: 'aorus master', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6436223/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6430175/cart', + model: 'ventus 3x oc', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6430175/pdp', + }, + { + brand: 'pny', + cartUrl: 'https://api.bestbuy.com/click/-/6432655/cart', + model: 'xlr8 revel', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6432655/pdp', + }, + { + brand: 'pny', + cartUrl: 'https://api.bestbuy.com/click/-/6432658/cart', + model: 'xlr8 revel', + series: '3080', + url: 'https://api.bestbuy.com/click/-/6432658/pdp', + }, + { + brand: 'nvidia', + cartUrl: 'https://api.bestbuy.com/click/-/6429434/cart', + model: 'founders edition', + series: '3090', + url: 'https://api.bestbuy.com/click/-/6429434/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6432447/cart', + model: 'strix', + series: '3090', + url: 'https://api.bestbuy.com/click/-/6432447/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6432446/cart', + model: 'tuf', + series: '3090', + url: 'https://api.bestbuy.com/click/-/6432446/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6430215/cart', + model: 'ventus 3x oc', + series: '3090', + url: 'https://api.bestbuy.com/click/-/6430215/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6430623/cart', + model: 'gaming', + series: '3090', + url: 'https://api.bestbuy.com/click/-/6430623/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6430624/cart', + model: 'eagle', + series: '3090', + url: 'https://api.bestbuy.com/click/-/6430624/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6434363/cart', + model: 'xc3', + series: '3090', + url: 'https://api.bestbuy.com/click/-/6434363/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6436193/cart', + model: 'ftw3', + series: '3090', + url: 'https://api.bestbuy.com/click/-/6436193/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6436192/cart', + model: 'ftw3 ultra', + series: '3090', + url: 'https://api.bestbuy.com/click/-/6436192/pdp', + }, + { + brand: 'pny', + cartUrl: 'https://api.bestbuy.com/click/-/6432657/cart', + model: 'xlr8 revel', + series: '3090', + url: 'https://api.bestbuy.com/click/-/6432657/pdp', + }, + { + brand: 'nvidia', + cartUrl: 'https://api.bestbuy.com/click/-/6439402/cart', + model: 'founders edition', + series: '3060ti', + url: 'https://api.bestbuy.com/click/-/6439402/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6441172/cart', + model: 'ventus 2x', + series: '3060ti', + url: 'https://api.bestbuy.com/click/-/6441172/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6442484/cart', + model: 'gaming oc', + series: '3060ti', + url: 'https://api.bestbuy.com/click/-/6442484/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6442485/cart', + model: 'eagle', + series: '3060ti', + url: 'https://api.bestbuy.com/click/-/6442485/pdp', + }, + { + brand: 'amd', + cartUrl: 'https://api.bestbuy.com/click/-/6438942/cart', + model: '5900x', + series: 'ryzen5900', + url: 'https://api.bestbuy.com/click/-/6438942/pdp', + }, + { + brand: 'amd', + cartUrl: 'https://api.bestbuy.com/click/-/6438941/cart', + model: '5950x', + series: 'ryzen5950', + url: 'https://api.bestbuy.com/click/-/6438941/pdp', + }, + { + brand: 'amd', + cartUrl: 'https://api.bestbuy.com/click/-/6439000/cart', + model: '5800x', + series: 'ryzen5800', + url: 'https://api.bestbuy.com/click/-/6439000/pdp', + }, + { + brand: 'amd', + cartUrl: 'https://api.bestbuy.com/click/-/6438943/cart', + model: '5600x', + series: 'ryzen5600', + url: 'https://api.bestbuy.com/click/-/6438943/pdp', + }, + { + brand: 'sony', + cartUrl: 'https://api.bestbuy.com/click/-/6426149/cart', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://api.bestbuy.com/click/-/6426149/pdp', + }, + { + brand: 'sony', + cartUrl: 'https://api.bestbuy.com/click/-/6430161/cart', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://api.bestbuy.com/click/-/6430161/pdp', + }, + { + brand: 'microsoft', + cartUrl: 'https://api.bestbuy.com/click/-/6428324/cart', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://api.bestbuy.com/click/-/6428324/pdp', + }, + { + brand: 'microsoft', + cartUrl: 'https://api.bestbuy.com/click/-/6430277/cart', + model: 'xbox series s', + series: 'xboxss', + url: 'https://api.bestbuy.com/click/-/6430277/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6440913/cart', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://api.bestbuy.com/click/-/6440913/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6441020/cart', + model: 'amd reference', + series: 'rx6800', + url: 'https://api.bestbuy.com/click/-/6441020/pdp', + }, + { + brand: 'xfx', + cartUrl: 'https://api.bestbuy.com/click/-/6442077/cart', + model: 'amd reference', + series: 'rx6800', + url: 'https://api.bestbuy.com/click/-/6442077/pdp', + }, + { + brand: 'xfx', + cartUrl: 'https://api.bestbuy.com/click/-/6441226/cart', + model: 'amd reference', + series: 'rx6800xt', + url: 'https://api.bestbuy.com/click/-/6441226/pdp', + }, + { + brand: 'xfx', + cartUrl: 'https://api.bestbuy.com/click/-/6442585/cart', + model: 'merc', + series: 'rx6800xt', + url: 'https://api.bestbuy.com/click/-/6442585/pdp', + }, + { + brand: 'xfx', + cartUrl: 'https://api.bestbuy.com/click/-/6444358/cart', + model: 'amd reference', + series: 'rx6900xt', + url: 'https://api.bestbuy.com/click/-/6444358/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6444716/cart', + model: 'amd reference', + series: 'rx6900xt', + url: 'https://api.bestbuy.com/click/-/6444716/pdp', + }, + { + brand: 'xfx', + cartUrl: 'https://api.bestbuy.com/click/-/6445157/cart', + model: 'merc', + series: 'rx6900xt', + url: 'https://api.bestbuy.com/click/-/6445157/pdp', + }, + { + brand: 'corsair', + cartUrl: 'https://api.bestbuy.com/click/-/6351845/cart', + model: '750 platinum', + series: 'sf', + url: 'https://api.bestbuy.com/click/-/6351845/pdp', + }, + { + brand: 'corsair', + cartUrl: 'https://api.bestbuy.com/click/-/6351844/cart', + model: '600 platinum', + series: 'sf', + url: 'https://api.bestbuy.com/click/-/6351844/pdp', + }, + { + brand: 'pny', + cartUrl: 'https://api.bestbuy.com/click/-/6446660/cart', + model: 'xlr8 uprising', + series: '3060ti', + url: 'https://api.bestbuy.com/click/-/6446660/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6444445/cart', + model: 'xc gaming', + series: '3060ti', + url: 'https://api.bestbuy.com/click/-/6444445/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6444444/cart', + model: 'ftw3', + series: '3060ti', + url: 'https://api.bestbuy.com/click/-/6444444/pdp', + }, + { + brand: 'evga', + cartUrl: 'https://api.bestbuy.com/click/-/6444449/cart', + model: 'ftw3', + series: '3060ti', + url: 'https://api.bestbuy.com/click/-/6444449/pdp', + }, + ], + name: 'bestbuy', }; diff --git a/src/store/model/box.ts b/src/store/model/box.ts index fa1e27eaa6..832986f9fe 100644 --- a/src/store/model/box.ts +++ b/src/store/model/box.ts @@ -2,91 +2,89 @@ import {Store} from './store'; import {getProductLinksBuilder} from './helpers/card'; export const Box: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '£', - labels: { - inStock: { - container: '#divBuyButton', - text: ['add to basket'] - }, - maxPrice: { - container: '.p-price', - euroFormat: false // Note: Box uses non-euroFromat as price seperator - }, - outOfStock: { - container: '#divBuyButton', - text: ['request stock alert', 'coming soon'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.box.co.uk/Gigabyte-GeForce-RTX-2080-Super-8GB-Wind_2724554.html' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.box.co.uk/CFI-1015A-Sony-Playstation-5-Console_3199689.html' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.box.co.uk/CFI-1015B-Sony-PlayStation-5-Digital-Edition-Conso_3199692.html' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.box.co.uk/RRT-00007-Xbox-Series-X-Console_3201195.html' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: - 'https://www.box.co.uk/RRS-00007-Xbox-Series-S-Console_3201197.html' - }, - { - brand: 'amd', - model: 'tuf oc', - series: 'rx6900xt', - url: - 'https://www.box.co.uk/90YV0GE0-M0NM00-ASUS-Radeon-RX-X6900XT-16GB-OC-Gaming-Gr_3561243.html' - } - ], - linksBuilder: { - builder: getProductLinksBuilder({ - productsSelector: '.products-right .p-list', - sitePrefix: 'https://www.box.co.uk', - titleSelector: '.p-list-section > h3 > a[href]' - }), - urls: [ - { - series: '3060ti', - url: 'https://www.box.co.uk/rtx-3060-ti-graphics-cards' - }, - { - series: '3070', - url: 'https://www.box.co.uk/rtx-3070-graphics-cards' - }, - { - series: '3080', - url: 'https://www.box.co.uk/rtx-3080-graphics-cards' - }, - { - series: '3090', - url: 'https://www.box.co.uk/rtx-3090-graphics-cards' - } - ] - }, - name: 'box', - waitUntil: 'domcontentloaded' + backoffStatusCodes: [403, 429, 503], + currency: '£', + labels: { + inStock: { + container: '#divBuyButton', + text: ['add to basket'], + }, + maxPrice: { + container: '.p-price', + euroFormat: false, // Note: Box uses non-euroFromat as price seperator + }, + outOfStock: { + container: '#divBuyButton', + text: ['request stock alert', 'coming soon'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.box.co.uk/Gigabyte-GeForce-RTX-2080-Super-8GB-Wind_2724554.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.box.co.uk/CFI-1015A-Sony-Playstation-5-Console_3199689.html', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.box.co.uk/CFI-1015B-Sony-PlayStation-5-Digital-Edition-Conso_3199692.html', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.box.co.uk/RRT-00007-Xbox-Series-X-Console_3201195.html', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.box.co.uk/RRS-00007-Xbox-Series-S-Console_3201197.html', + }, + { + brand: 'amd', + model: 'tuf oc', + series: 'rx6900xt', + url: + 'https://www.box.co.uk/90YV0GE0-M0NM00-ASUS-Radeon-RX-X6900XT-16GB-OC-Gaming-Gr_3561243.html', + }, + ], + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '.products-right .p-list', + sitePrefix: 'https://www.box.co.uk', + titleSelector: '.p-list-section > h3 > a[href]', + }), + urls: [ + { + series: '3060ti', + url: 'https://www.box.co.uk/rtx-3060-ti-graphics-cards', + }, + { + series: '3070', + url: 'https://www.box.co.uk/rtx-3070-graphics-cards', + }, + { + series: '3080', + url: 'https://www.box.co.uk/rtx-3080-graphics-cards', + }, + { + series: '3090', + url: 'https://www.box.co.uk/rtx-3090-graphics-cards', + }, + ], + }, + name: 'box', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/bpctech.ts b/src/store/model/bpctech.ts index 4182e9912d..37d9acc1e1 100644 --- a/src/store/model/bpctech.ts +++ b/src/store/model/bpctech.ts @@ -1,171 +1,171 @@ import {Store} from './store'; export const Bpctech: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: '.productStockStatus', - text: ['in stock'] - }, - maxPrice: { - container: 'div.price-box.price-final_price > span > span', - euroFormat: false - } - }, - links: [ - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.bpctech.com.au/tuf-rtx3080-10g-gaming-asus-geforce-rtx-3080-tuf-gaming-10gb-video-card.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.bpctech.com.au/tuf-rtx3080-o10g-gaming-asus-geforce-rtx-3080-tuf-gaming-oc-10gb-video-card.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.bpctech.com.au/rog-strix-rtx3080-o10g-gaming-asus-geforce-rtx-3080-rog-strix-oc-10gb-video-card.html' - }, - // { - // brand: 'colorful', - // model: 'igame advanced oc', - // series: '3080', - // url: 'https://www.bpctech.com.au/colorful-advancedoc10g-v-colorful-igame-geforce-rtx-3080-advanced-oc-10g-v-video-card.html' - // }, - // { - // brand: 'colorful', - // model: 'igame vulcan oc', - // series: '3080', - // url: 'https://www.bpctech.com.au/colorful-vulcanoc10g-v-colorful-igame-geforce-rtx-3080-vulcan-oc-10g-video-card.html' - // }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.bpctech.com.au/10g-p5-3897-kr-evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-video-card.html' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://www.bpctech.com.au/10g-p5-3881-kr-evga-geforce-rtx-3080-xc3-black-gaming-10gb-video-card.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.bpctech.com.au/10g-p5-3885-kr-evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-video-card.html' - }, - { - brand: 'galax', - model: 'sg oc', - series: '3080', - url: - 'https://www.bpctech.com.au/38nwm3md99nn-galax-geforce-rtx-3080-sg-1-click-oc-10gb-video-card.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.bpctech.com.au/gv-n3080vision-oc-10gd-gigabyte-geforce-rtx-3080-vision-oc-10gb-video-card.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.bpctech.com.au/gv-n3080gaming-oc-10gd-gigabyte-geforce-rtx-3080-gaming-oc-10gb-video-card.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.bpctech.com.au/gv-n3080aorus-m-10gd-gigabyte-geforce-rtx-3080-aorus-master-10g-video-card.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.bpctech.com.au/gv-n3080aorus-x-10gd-gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-video-card.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3080', - url: - 'https://www.bpctech.com.au/gv-n3080aorusx-w-10gd-gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10gb-video-card.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.bpctech.com.au/gv-n3080eagle-oc-10gd-gigabyte-geforce-rtx-3080-eagle-oc-10gb-video-card.html' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://www.bpctech.com.au/c30804-106xx-1810va36-inno3d-geforce-rtx-3080-ichill-x4-10gb-video-card.html' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://www.bpctech.com.au/c30803-106xx-1810va37-inno3d-geforce-rtx-3080-ichill-x3-10gb-video-card.html' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: - 'https://www.bpctech.com.au/n30802-106xx-1810va34-inno3d-geforce-rtx-3080-twin-x2-oc-10gb-video-card.html' - }, - { - brand: 'leadtek', - model: 'hurricane', - series: '3080', - url: - 'https://www.bpctech.com.au/rtx3080-hurricane-leadtek-geforce-rtx-3080-hurricane-10gb-video-card.html' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.bpctech.com.au/rtx3080-suprim-x-10g-msi-geforce-rtx-3080-suprim-x-10gb-video-card.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.bpctech.com.au/rtx3080-ventus-3x-10g-oc-msi-rtx-3080-ventus-3x-10g-oc-video-card.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.bpctech.com.au/rtx3080-gaming-x-trio-10g-msi-rtx-3080-gaming-x-trio-10g-video-card.html' - } - ], - name: 'bpctech' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: '.productStockStatus', + text: ['in stock'], + }, + maxPrice: { + container: 'div.price-box.price-final_price > span > span', + euroFormat: false, + }, + }, + links: [ + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.bpctech.com.au/tuf-rtx3080-10g-gaming-asus-geforce-rtx-3080-tuf-gaming-10gb-video-card.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.bpctech.com.au/tuf-rtx3080-o10g-gaming-asus-geforce-rtx-3080-tuf-gaming-oc-10gb-video-card.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.bpctech.com.au/rog-strix-rtx3080-o10g-gaming-asus-geforce-rtx-3080-rog-strix-oc-10gb-video-card.html', + }, + // { + // brand: 'colorful', + // model: 'igame advanced oc', + // series: '3080', + // url: 'https://www.bpctech.com.au/colorful-advancedoc10g-v-colorful-igame-geforce-rtx-3080-advanced-oc-10g-v-video-card.html' + // }, + // { + // brand: 'colorful', + // model: 'igame vulcan oc', + // series: '3080', + // url: 'https://www.bpctech.com.au/colorful-vulcanoc10g-v-colorful-igame-geforce-rtx-3080-vulcan-oc-10g-video-card.html' + // }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.bpctech.com.au/10g-p5-3897-kr-evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-video-card.html', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://www.bpctech.com.au/10g-p5-3881-kr-evga-geforce-rtx-3080-xc3-black-gaming-10gb-video-card.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.bpctech.com.au/10g-p5-3885-kr-evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-video-card.html', + }, + { + brand: 'galax', + model: 'sg oc', + series: '3080', + url: + 'https://www.bpctech.com.au/38nwm3md99nn-galax-geforce-rtx-3080-sg-1-click-oc-10gb-video-card.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.bpctech.com.au/gv-n3080vision-oc-10gd-gigabyte-geforce-rtx-3080-vision-oc-10gb-video-card.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.bpctech.com.au/gv-n3080gaming-oc-10gd-gigabyte-geforce-rtx-3080-gaming-oc-10gb-video-card.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.bpctech.com.au/gv-n3080aorus-m-10gd-gigabyte-geforce-rtx-3080-aorus-master-10g-video-card.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.bpctech.com.au/gv-n3080aorus-x-10gd-gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-video-card.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3080', + url: + 'https://www.bpctech.com.au/gv-n3080aorusx-w-10gd-gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10gb-video-card.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.bpctech.com.au/gv-n3080eagle-oc-10gd-gigabyte-geforce-rtx-3080-eagle-oc-10gb-video-card.html', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://www.bpctech.com.au/c30804-106xx-1810va36-inno3d-geforce-rtx-3080-ichill-x4-10gb-video-card.html', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://www.bpctech.com.au/c30803-106xx-1810va37-inno3d-geforce-rtx-3080-ichill-x3-10gb-video-card.html', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: + 'https://www.bpctech.com.au/n30802-106xx-1810va34-inno3d-geforce-rtx-3080-twin-x2-oc-10gb-video-card.html', + }, + { + brand: 'leadtek', + model: 'hurricane', + series: '3080', + url: + 'https://www.bpctech.com.au/rtx3080-hurricane-leadtek-geforce-rtx-3080-hurricane-10gb-video-card.html', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.bpctech.com.au/rtx3080-suprim-x-10g-msi-geforce-rtx-3080-suprim-x-10gb-video-card.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.bpctech.com.au/rtx3080-ventus-3x-10g-oc-msi-rtx-3080-ventus-3x-10g-oc-video-card.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.bpctech.com.au/rtx3080-gaming-x-trio-10g-msi-rtx-3080-gaming-x-trio-10g-video-card.html', + }, + ], + name: 'bpctech', }; diff --git a/src/store/model/bpmpower.ts b/src/store/model/bpmpower.ts index b57056fa17..7219535dff 100644 --- a/src/store/model/bpmpower.ts +++ b/src/store/model/bpmpower.ts @@ -1,43 +1,43 @@ import {Store} from './store'; export const BpmPower: Store = { - currency: '€', - labels: { - inStock: { - container: '.dispoSiProd >span', - text: ['Disponibile'] - }, - maxPrice: { - container: 'p.prezzoScheda:nth-child(1)', - euroFormat: true - }, - outOfStock: { - container: '.dispoSiProd >span', - text: ['Esaurito'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.bpm-power.com/it/online/audio/auricolari-audio/apple-airpods-2-2019-b1492931' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://www.bpm-power.com/it/online/componenti-pc/schede-video/nvidia-msi-rtx-3070-b1710142' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.bpm-power.com/it/online/componenti-pc/processori/cpu-amd-ryzen-7-b1710075' - } - ], - name: 'bpm-power' + currency: '€', + labels: { + inStock: { + container: '.dispoSiProd >span', + text: ['Disponibile'], + }, + maxPrice: { + container: 'p.prezzoScheda:nth-child(1)', + euroFormat: true, + }, + outOfStock: { + container: '.dispoSiProd >span', + text: ['Esaurito'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.bpm-power.com/it/online/audio/auricolari-audio/apple-airpods-2-2019-b1492931', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://www.bpm-power.com/it/online/componenti-pc/schede-video/nvidia-msi-rtx-3070-b1710142', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.bpm-power.com/it/online/componenti-pc/processori/cpu-amd-ryzen-7-b1710075', + }, + ], + name: 'bpm-power', }; diff --git a/src/store/model/canadacomputers.ts b/src/store/model/canadacomputers.ts index dd3c999c81..31fc515aee 100644 --- a/src/store/model/canadacomputers.ts +++ b/src/store/model/canadacomputers.ts @@ -1,600 +1,600 @@ import {Store} from './store'; export const CanadaComputers: Store = { - currency: '$', - labels: { - inStock: { - container: 'div[class="pi-prod-availability"]', - text: ['Online In Stock'] - }, - maxPrice: { - container: '.h2-big > strong:nth-child(1)', - euroFormat: false - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.canadacomputers.com/product_info.php?item_id=167320&cPath=27_1046_365&language=en' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183101&language=en' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183500&language=en' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183099&language=en' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183210&language=en' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183636&language=en' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183637&language=en' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184168&language=en' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184167&language=en' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183561&language=en' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185675&language=en' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183208&language=en' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183560&language=en' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183638&language=en' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183498&language=en' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183209&language=en' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183100&language=en' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183499&language=en' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=186197&language=en' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=186310&language=en' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181376&language=en' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181842&language=en' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181348&language=en' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181354&language=en' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181375&language=en' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181420&language=en' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184837&language=en' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181415&language=en' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181353&language=en' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181347&language=en' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=182754&language=en' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181797&language=en' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=182755&language=en' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183098&language=en' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183510&language=en' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184166&language=en' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181798&language=en' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=186309&language=en' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185084&language=en' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=186345&language=en' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=186344&language=en' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181841&language=en' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181854&language=en' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181413&language=en' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181419&language=en' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181351&language=en' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181350&language=en' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181349&language=en' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181853&language=en' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183096&language=en' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181352&language=en' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183097&language=en' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3090', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184164&language=en' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185086&language=en' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184759&language=en' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185087&language=en' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184760&language=en' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185751&language=en' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185752&language=en' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184431&language=en' - }, - { - brand: 'evga', - model: 'xc gaming', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185988&language=en' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185987&language=en' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185408&language=en' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185407&language=en' - }, - { - brand: 'gigabyte', - model: 'gaming oc pro', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185406&language=en' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185405&language=en' - }, - { - brand: 'asus', - model: 'ko', - series: '3060ti', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185168&language=en' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: 'rx6800', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=186527&language=en' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6800', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185755&language=en' - }, - { - brand: 'asus', - model: 'strix oc', - series: 'rx6800', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185459&language=en' - }, - { - brand: 'asus', - model: 'tuf oc', - series: 'rx6800', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185460&language=en' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: 'rx6800xt', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=186526&language=en' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6800xt', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185754&language=en' - }, - { - brand: 'sapphire', - model: 'nitro+ se', - series: 'rx6800xt', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185753&language=en' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800xt', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185891&language=en' - }, - { - brand: 'asus', - model: 'strix lc', - series: 'rx6800xt', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185458&language=en' - }, - { - brand: 'asus', - model: 'tuf oc', - series: 'rx6900xt', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=186610&language=en' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6900xt', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=186614&language=en' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183432&language=en' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183431&language=en' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183430&language=en' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183427&language=en' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.canadacomputers.com/product_info.php?cPath=13_1860_1862&item_id=184244&language=en' - } - ], - name: 'canadacomputers', - waitUntil: 'domcontentloaded' + currency: '$', + labels: { + inStock: { + container: 'div[class="pi-prod-availability"]', + text: ['Online In Stock'], + }, + maxPrice: { + container: '.h2-big > strong:nth-child(1)', + euroFormat: false, + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.canadacomputers.com/product_info.php?item_id=167320&cPath=27_1046_365&language=en', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183101&language=en', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183500&language=en', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183099&language=en', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183210&language=en', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183636&language=en', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183637&language=en', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184168&language=en', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184167&language=en', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183561&language=en', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185675&language=en', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183208&language=en', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183560&language=en', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183638&language=en', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183498&language=en', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183209&language=en', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183100&language=en', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183499&language=en', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=186197&language=en', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=186310&language=en', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181376&language=en', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181842&language=en', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181348&language=en', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181354&language=en', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181375&language=en', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181420&language=en', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184837&language=en', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181415&language=en', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181353&language=en', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181347&language=en', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=182754&language=en', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181797&language=en', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=182755&language=en', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183098&language=en', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183510&language=en', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184166&language=en', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181798&language=en', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=186309&language=en', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185084&language=en', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=186345&language=en', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=186344&language=en', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181841&language=en', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181854&language=en', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181413&language=en', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181419&language=en', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181351&language=en', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181350&language=en', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181349&language=en', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181853&language=en', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183096&language=en', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=181352&language=en', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=183097&language=en', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3090', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184164&language=en', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185086&language=en', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184759&language=en', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185087&language=en', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184760&language=en', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185751&language=en', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185752&language=en', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=184431&language=en', + }, + { + brand: 'evga', + model: 'xc gaming', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185988&language=en', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185987&language=en', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185408&language=en', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185407&language=en', + }, + { + brand: 'gigabyte', + model: 'gaming oc pro', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185406&language=en', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185405&language=en', + }, + { + brand: 'asus', + model: 'ko', + series: '3060ti', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_559&item_id=185168&language=en', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: 'rx6800', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=186527&language=en', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6800', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185755&language=en', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6800', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185459&language=en', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6800', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185460&language=en', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: 'rx6800xt', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=186526&language=en', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6800xt', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185754&language=en', + }, + { + brand: 'sapphire', + model: 'nitro+ se', + series: 'rx6800xt', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185753&language=en', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800xt', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185891&language=en', + }, + { + brand: 'asus', + model: 'strix lc', + series: 'rx6800xt', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=185458&language=en', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6900xt', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=186610&language=en', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6900xt', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=43_557_558&item_id=186614&language=en', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183432&language=en', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183431&language=en', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183430&language=en', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=4_64&item_id=183427&language=en', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.canadacomputers.com/product_info.php?cPath=13_1860_1862&item_id=184244&language=en', + }, + ], + name: 'canadacomputers', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/caseking.ts b/src/store/model/caseking.ts index 7ce4d24092..a395e7dc79 100644 --- a/src/store/model/caseking.ts +++ b/src/store/model/caseking.ts @@ -1,926 +1,926 @@ import {Store} from './store'; export const Caseking: Store = { - backoffStatusCodes: [403, 429], - currency: '€', - labels: { - inStock: { - container: '.delivery_container', - text: ['lagernd', 'im zulauf', 'ab'] - }, - maxPrice: { - container: '#buybox .article_details_price', - euroFormat: true - }, - outOfStock: { - container: '.delivery_container', - text: ['unbekannt'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.caseking.de/evga-geforce-rtx-2060-super-xc-ultra-gaming-8192-mb-gddr6-gcev-385.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3060ti', - url: - 'https://www.caseking.de/asus-geforce-rtx-3060-ti-rog-strix-o8g-8192-mb-gddr6-gcas-407.html' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3060ti', - url: - 'https://www.caseking.de/asus-geforce-rtx-3060-ti-dual-o8g-8192-mb-gddr6-gcas-410.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3060ti', - url: - 'https://www.caseking.de/asus-geforce-rtx-3060-ti-tuf-o8g-8192-mb-gddr6-gcas-412.html' - }, - { - brand: 'asus', - model: 'dual', - series: '3060ti', - url: - 'https://www.caseking.de/asus-geforce-rtx-3060-ti-dual-8g-8192-mb-gddr6-gcas-411.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3060ti', - url: - 'https://www.caseking.de/asus-geforce-rtx-3060-ti-tuf-8g-8192-mb-gddr6-gcas-408.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3060ti', - url: - 'https://www.caseking.de/asus-geforce-rtx-3060-ti-rog-strix-8g-8192-mb-gddr6-gcas-409.html' - }, - { - brand: 'evga', - model: 'xc gaming', - series: '3060ti', - url: - 'https://www.caseking.de/evga-geforce-rtx-3060-ti-xc-gaming-8192-mb-gddr6-gcev-431.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3060ti', - url: - 'https://www.caseking.de/evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-8192-mb-gddr6-gcev-403.html' - }, - { - brand: 'evga', - model: 'ftw3 black', - series: '3060ti', - url: - 'https://www.caseking.de/evga-geforce-rtx-3060-ti-ftw3-black-gaming-8192-mb-gddr6-gcev-430.html' - }, - { - brand: 'evga', - model: 'xc black', - series: '3060ti', - url: - 'https://www.caseking.de/evga-geforce-rtx-3060-ti-xc-black-gaming-8192-mb-gddr6-gcev-432.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3060ti', - url: - 'https://www.caseking.de/evga-geforce-rtx-3060-ti-ftw3-gaming-8192-mb-gddr6-gcev-429.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3060ti', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3060-ti-eagle-oc-8g-8192-mb-gddr6-gcgb-349.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3060ti', - url: - 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3060-ti-master-8g-8192-mb-gddr6-gcgb-346.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc pro', - series: '3060ti', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3060-ti-gaming-oc-pro-8g-8192-mb-gddr6-gcgb-347.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3060ti', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3060-ti-gaming-oc-8g-8192-mb-gddr6-gcgb-348.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3060ti', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3060-ti-eagle-8g-8192-mb-gddr6-gcgb-350.html' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3060ti', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3060-ti-twin-x2-oc-8192-mb-gddr6-gci3-180.html' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3060ti', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3060-ti-ichill-x3-8192-mb-gddr6-gci3-179.html' - }, - { - brand: 'inno3d', - model: 'twin x2', - series: '3060ti', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3060-ti-twin-x2-8192-mb-gddr6-gci3-181.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3060ti', - url: - 'https://www.caseking.de/msi-geforce-rtx-3060-ti-gaming-x-trio-8192-mb-gddr6-gcmc-255.html' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3060ti', - url: - 'https://www.caseking.de/msi-geforce-rtx-3060-ti-ventus-2x-oc-8192-mb-gddr6-gcmc-246.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3060ti', - url: - 'https://www.caseking.de/msi-geforce-rtx-3060-ti-ventus-3x-oc-8192-mb-gddr6-gcmc-245.html' - }, - { - brand: 'pny', - model: 'xlr8 epic x', - series: '3060ti', - url: - 'https://www.caseking.de/pny-geforce-rtx-3060-ti-xlr8-gaming-revel-epic-x-8192-mb-gddr6-gcpn-080.html' - }, - { - brand: 'pny', - model: 'xlr8 uprising', - series: '3060ti', - url: - 'https://www.caseking.de/pny-geforce-rtx-3060-ti-uprising-8g-8192-mb-gddr6-gcpn-079.html' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3060ti', - url: - 'https://www.caseking.de/zotac-gaming-geforce-rtx-3060-ti-twin-edge-8192-mb-gddr6-gczt-169.html' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3060ti', - url: - 'https://www.caseking.de/zotac-gaming-geforce-rtx-3060-ti-twin-edge-oc-8192-mb-gddr6-gczt-170.html' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: - 'https://www.caseking.de/asus-geforce-rtx-3070-dual-8g-8192-mb-gddr6-gcas-404.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: - 'https://www.caseking.de/asus-geforce-rtx-3070-tuf-o8g-8192-mb-gddr6-gcas-406.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://www.caseking.de/asus-geforce-rtx-3070-rog-strix-o8g-8192-mb-gddr6-gcas-403.html' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: - 'https://www.caseking.de/asus-geforce-rtx-3070-dual-o8g-8192-mb-gddr6-gcas-405.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: - 'https://www.caseking.de/asus-geforce-rtx-3070-rog-strix-8g-8192-mb-gddr6-gcas-415.html' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3070', - url: - 'https://www.caseking.de/evga-geforce-rtx-3070-xc3-black-gaming-8192-mb-gddr6-gcev-424.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3070', - url: - 'https://www.caseking.de/evga-geforce-rtx-3070-xc3-ultra-gaming-8192-mb-gddr6-gcev-426.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3070', - url: - 'https://www.caseking.de/evga-geforce-rtx-3070-ftw3-ultra-8192-mb-gddr6-gcev-428.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3070', - url: - 'https://www.caseking.de/evga-geforce-rtx-3070-xc3-8192-mb-gddr6-gcev-425.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3070', - url: - 'https://www.caseking.de/evga-geforce-rtx-3070-ftw3-8192-mb-gddr6-gcev-427.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3070-gaming-oc-8g-8192-mb-gddr6-gcgb-338.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3070', - url: - 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3070-master-8g-8192-mb-gddr6-gcgb-343.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3070', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3070-vision-oc-8g-8192-mb-gddr6-gcgb-344.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3070', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3070-eagle-8g-8192-mb-gddr6-gcgb-340.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3070-eagle-oc-8g-8192-mb-gddr6-gcgb-339.html' - }, - { - brand: 'inno3d', - model: 'twin x2', - series: '3070', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3070-twin-x2-8192-mb-gddr6-gci3-176.html' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3070', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3070-ichill-x3-8192-mb-gddr6-gci3-174.html' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3070', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3070-ichill-x4-8192-mb-gddr6-gci3-173.html' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3070', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3070-twin-x2-oc-8192-mb-gddr6-gci3-175.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: - 'https://www.caseking.de/msi-geforce-rtx-3070-gaming-x-trio-8192-mb-gddr6-gcmc-250.html' - }, - { - brand: 'msi', - model: 'suprim', - series: '3070', - url: - 'https://www.caseking.de/msi-geforce-rtx-3070-suprim-8g-8192-mb-gddr6-gcmc-256.html' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: - 'https://www.caseking.de/msi-geforce-rtx-3070-ventus-2x-oc-8192-mb-gddr6-gcmc-249.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://www.caseking.de/msi-geforce-rtx-3070-ventus-3x-oc-8192-mb-gddr6-gcmc-251.html' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3070', - url: - 'https://www.caseking.de/msi-geforce-rtx-3070-suprim-x-8g-8192-mb-gddr6-gcmc-254.html' - }, - { - brand: 'pny', - model: 'xlr8 epic x', - series: '3070', - url: - 'https://www.caseking.de/pny-geforce-rtx-3070-xlr8-gaming-revel-epic-x-rgb-8192-mb-gddr6-gcpn-078.html' - }, - { - brand: 'pny', - model: 'dual fan', - series: '3070', - url: - 'https://www.caseking.de/pny-geforce-rtx-3070-dual-fan-8192-mb-gddr6-gcpn-077.html' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://www.caseking.de/zotac-gaming-geforce-rtx-3070-twin-edge-8192-mb-gddr6-gczt-164.html' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.caseking.de/zotac-gaming-geforce-rtx-3070-twin-edge-oc-8192-mb-gddr6-gczt-168.html' - }, - { - brand: 'zotac', - model: 'twin edge oc white', - series: '3070', - url: - 'https://www.caseking.de/zotac-gaming-geforce-rtx-3070-twin-edge-oc-white-8192-mb-gddr6-gczt-171.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.caseking.de/asus-geforce-rtx-3080-rog-strix-10g-10240-mb-gddr6x-gcas-400.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.caseking.de/asus-geforce-rtx-3080-rog-strix-o10g-10240-mb-gddr6x-gcas-399.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-10g-10240-mb-gddr6x-gcas-394.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-o10g-10240-mb-gddr6x-gcas-396.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: - 'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-gaming-10240-mb-gddr6x-gcev-416.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-ultra-gaming-10240-mb-gddr6x-gcev-417.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-gaming-10240-mb-gddr6x-gcev-415.html' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-black-gaming-10240-mb-gddr6x-gcev-414.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-ultra-gaming-10240-mb-gddr6x-gcev-423.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-master-10g-10240-mb-gddr6x-gcgb-331.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3080-eagle-oc-10g-10240-mb-gddr6x-gcgb-326.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3080-gaming-oc-10g-10240-mb-gddr6x-gcgb-327.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3080-vision-oc-10g-10240-mb-gddr6x-gcgb-332.html' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x3-10240-mb-gddr6x-gci3-170.html' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x4-10240-mb-gddr6x-gci3-169.html' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3080-twin-x2-oc-10240-mb-gddr6x-gci3-171.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.caseking.de/msi-geforce-rtx-3080-gaming-x-trio-10g-10240-mb-gddr6x-gcmc-248.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.caseking.de/msi-geforce-rtx-3080-ventus-3x-10g-oc-10240-mb-gddr6x-gcmc-247.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.caseking.de/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10240-mb-gddr6x-gcpn-075.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.caseking.de/pny-geforce-rtx-3080-xlr8-gaming-revel-epic-x-rgb-10240-mb-gddr6x-gcpn-076.html' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: - 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-amp-holo-10240-mb-gddr6x-gczt-166.html' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-oc-10240-mb-gddr6x-gczt-167.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-10240-mb-gddr6x-gczt-163.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-xtreme-10g-10240-mb-gddr6x-gcgb-333.html' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.caseking.de/msi-geforce-rtx-3080-suprim-x-10g-10240-mb-gddr6x-gcmc-253.html' - }, - { - brand: 'asus', - model: 'ekwb', - series: '3080', - url: - 'https://www.caseking.de/asus-geforce-rtx-3080-ekwb-10g-10240-mb-gddr6x-gcas-413.html' - }, - { - brand: 'inno3d', - model: 'ichill frostbite', - series: '3080', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-frostbite-10240-mb-gddr6x-gci3-177.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-wb-10g-10240-mb-gddr6x-gcgb-352.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3080', - url: - 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10g-10240-mb-gddr6x-gcgb-351.html' - }, - { - brand: 'evga', - model: 'xc3 ultra hybrid', - series: '3080', - url: - 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-ultra-hybrid-gaming-10240-mb-gddr6x-gcev-435.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra hybrid', - series: '3080', - url: - 'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-ultra-hybrid-gaming-10240-mb-gddr6x-gcev-436.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3080-eagle-10g-10240-mb-gddr6x-gcgb-353.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: - 'https://www.caseking.de/asus-geforce-rtx-3090-rog-strix-24g-24576-mb-gddr6x-gcas-397.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.caseking.de/asus-geforce-rtx-3090-rog-strix-o24g-24576-mb-gddr6x-gcas-398.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.caseking.de/asus-geforce-rtx-3090-tuf-gaming-24g-24576-mb-gddr6x-gcas-393.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.caseking.de/asus-geforce-rtx-3090-tuf-gaming-o24g-24576-mb-gddr6x-gcas-395.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3090', - url: - 'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-gaming-24576-mb-gddr6x-gcev-421.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3090', - url: - 'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-ultra-gaming-24576-mb-gddr6x-gcev-422.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3090', - url: - 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-gaming-24576-mb-gddr6x-gcev-419.html' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3090', - url: - 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-black-gaming-24576-mb-gddr6x-gcev-418.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: - 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-ultra-gaming-24576-mb-gddr6x-gcev-420.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3090-eagle-oc-24g-24576-mb-gddr6x-gcgb-329.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3090-gaming-oc-24g-24576-mb-gddr6x-gcgb-328.html' - }, - { - brand: 'inno3d', - model: 'gaming x3', - series: '3090', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3090-gaming-x3-24576-mb-gddr6x-gci3-172.html' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3090', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-x3-24576-mb-gddr6x-gci3-168.html' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3090', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-x4-24576-mb-gddr6x-gci3-167.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.caseking.de/msi-geforce-rtx-3090-gaming-x-trio-24g-24576-mb-gddr6x-gcmc-244.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3090', - url: - 'https://www.caseking.de/pny-geforce-rtx-3090-xlr8-gaming-epic-x-rgb-24576-mb-gddr6x-gcpn-073.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3090', - url: - 'https://www.caseking.de/pny-geforce-rtx-3090-xlr8-gaming-revel-epic-x-rgb-24576-mb-gddr6x-gcpn-074.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.caseking.de/zotac-gaming-geforce-rtx-3090-trinity-24576-mb-gddr6x-gczt-162.html' - }, - { - brand: 'asus', - model: 'ekwb', - series: '3090', - url: - 'https://www.caseking.de/asus-geforce-rtx-3090-ekwb-24g-24576-mb-gddr6x-gcas-414.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.caseking.de/msi-geforce-rtx-3090-ventus-3x-24g-oc-24576-mb-gddr6x-gcmc-243.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3090', - url: - 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3090-xtreme-waterforce-wb-24g-24576-mb-gddr6x-gcgb-355.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3090', - url: - 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3090-xtreme-waterforce-24g-24576-mb-gddr6x-gcgb-354.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: - 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3090-xtreme-24g-24576-mb-gddr6x-gcgb-335.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra hybrid', - series: '3090', - url: - 'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-ultra-hybrid-gaming-24576-mb-gddr6x-gcev-434.html' - }, - { - brand: 'evga', - model: 'xc3 ultra hybrid', - series: '3090', - url: - 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-ultra-hybrid-gaming-24576-mb-gddr6x-gcev-433.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: - 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3090-master-24g-24576-mb-gddr6x-gcgb-334.html' - }, - { - brand: 'inno3d', - model: 'ichill frostbite', - series: '3090', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-frostbite-24576-mb-gddr6x-gci3-178.html' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3090', - url: - 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-frostbite-24576-mb-gddr6x-gci3-178.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3090', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3090-vision-oc-24g-24576-mb-gddr6x-gcgb-341.html' - }, - { - brand: 'gigabyte', - model: 'turbo', - series: '3090', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3090-turbo-24g-24576-mb-gddr6x-gcgb-330.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3090', - url: - 'https://www.caseking.de/gigabyte-geforce-rtx-3090-eagle-24g-24576-mb-gddr6x-gcgb-342.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.caseking.de/amd-ryzen-5-5600x-3-7-ghz-vermeer-am4-mit-amd-wraith-stealth-kuehler-hpam-202.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.caseking.de/amd-ryzen-7-5800x-3-8-ghz-vermeer-am4-boxed-ohne-kuehler-hpam-203.html' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.caseking.de/amd-ryzen-9-5900x-3-7-ghz-vermeer-am4-boxed-ohne-kuehler-hpam-204.html' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.caseking.de/amd-ryzen-9-5950x-3-4-ghz-vermeer-am4-boxed-ohne-kuehler-hpam-205.html' - }, - { - brand: 'sapphire', - model: 'nitro oc se', - series: 'rx6800xt', - url: - 'https://www.caseking.de/sapphire-nitro-radeon-rx-6800-xt-oc-16g-16384-mb-gddr6-gcsp-215.html' - }, - { - brand: 'sapphire', - model: 'nitro oc', - series: 'rx6800xt', - url: - 'https://www.caseking.de/sapphire-nitro-radeon-rx-6800-xt-oc-se-16g-16384-mb-gddr6-gcsp-214.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800xt', - url: - 'https://www.caseking.de/gigabyte-radeon-rx-6800-xt-gaming-oc-16g-16384-mb-gddr6-gcgb-356.html' - }, - { - brand: 'gigabyte', - model: 'gaming', - series: 'rx6800xt', - url: - 'https://www.caseking.de/gigabyte-radeon-rx-6800-xt-16g-16384-mb-gddr6-gcgb-357.html' - }, - { - brand: 'asus', - model: 'strix lc', - series: 'rx6800xt', - url: - 'https://www.caseking.de/asus-radeon-rx-6800-xt-rog-strix-lc-o16g-16384-mb-gddr6-gcas-416.html' - }, - { - brand: 'asus', - model: 'tuf', - series: 'rx6800xt', - url: - 'https://www.caseking.de/asus-radeon-rx-6800-xt-tuf-o16g-16384-mb-gddr6-gcas-417.html' - } - ], - name: 'caseking' + backoffStatusCodes: [403, 429], + currency: '€', + labels: { + inStock: { + container: '.delivery_container', + text: ['lagernd', 'im zulauf', 'ab'], + }, + maxPrice: { + container: '#buybox .article_details_price', + euroFormat: true, + }, + outOfStock: { + container: '.delivery_container', + text: ['unbekannt'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.caseking.de/evga-geforce-rtx-2060-super-xc-ultra-gaming-8192-mb-gddr6-gcev-385.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3060ti', + url: + 'https://www.caseking.de/asus-geforce-rtx-3060-ti-rog-strix-o8g-8192-mb-gddr6-gcas-407.html', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3060ti', + url: + 'https://www.caseking.de/asus-geforce-rtx-3060-ti-dual-o8g-8192-mb-gddr6-gcas-410.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060ti', + url: + 'https://www.caseking.de/asus-geforce-rtx-3060-ti-tuf-o8g-8192-mb-gddr6-gcas-412.html', + }, + { + brand: 'asus', + model: 'dual', + series: '3060ti', + url: + 'https://www.caseking.de/asus-geforce-rtx-3060-ti-dual-8g-8192-mb-gddr6-gcas-411.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3060ti', + url: + 'https://www.caseking.de/asus-geforce-rtx-3060-ti-tuf-8g-8192-mb-gddr6-gcas-408.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3060ti', + url: + 'https://www.caseking.de/asus-geforce-rtx-3060-ti-rog-strix-8g-8192-mb-gddr6-gcas-409.html', + }, + { + brand: 'evga', + model: 'xc gaming', + series: '3060ti', + url: + 'https://www.caseking.de/evga-geforce-rtx-3060-ti-xc-gaming-8192-mb-gddr6-gcev-431.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3060ti', + url: + 'https://www.caseking.de/evga-geforce-rtx-3060-ti-ftw3-ultra-gaming-8192-mb-gddr6-gcev-403.html', + }, + { + brand: 'evga', + model: 'ftw3 black', + series: '3060ti', + url: + 'https://www.caseking.de/evga-geforce-rtx-3060-ti-ftw3-black-gaming-8192-mb-gddr6-gcev-430.html', + }, + { + brand: 'evga', + model: 'xc black', + series: '3060ti', + url: + 'https://www.caseking.de/evga-geforce-rtx-3060-ti-xc-black-gaming-8192-mb-gddr6-gcev-432.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3060ti', + url: + 'https://www.caseking.de/evga-geforce-rtx-3060-ti-ftw3-gaming-8192-mb-gddr6-gcev-429.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3060ti', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3060-ti-eagle-oc-8g-8192-mb-gddr6-gcgb-349.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3060ti', + url: + 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3060-ti-master-8g-8192-mb-gddr6-gcgb-346.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc pro', + series: '3060ti', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3060-ti-gaming-oc-pro-8g-8192-mb-gddr6-gcgb-347.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3060ti', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3060-ti-gaming-oc-8g-8192-mb-gddr6-gcgb-348.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3060ti', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3060-ti-eagle-8g-8192-mb-gddr6-gcgb-350.html', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3060ti', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3060-ti-twin-x2-oc-8192-mb-gddr6-gci3-180.html', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3060ti', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3060-ti-ichill-x3-8192-mb-gddr6-gci3-179.html', + }, + { + brand: 'inno3d', + model: 'twin x2', + series: '3060ti', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3060-ti-twin-x2-8192-mb-gddr6-gci3-181.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060ti', + url: + 'https://www.caseking.de/msi-geforce-rtx-3060-ti-gaming-x-trio-8192-mb-gddr6-gcmc-255.html', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: + 'https://www.caseking.de/msi-geforce-rtx-3060-ti-ventus-2x-oc-8192-mb-gddr6-gcmc-246.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3060ti', + url: + 'https://www.caseking.de/msi-geforce-rtx-3060-ti-ventus-3x-oc-8192-mb-gddr6-gcmc-245.html', + }, + { + brand: 'pny', + model: 'xlr8 epic x', + series: '3060ti', + url: + 'https://www.caseking.de/pny-geforce-rtx-3060-ti-xlr8-gaming-revel-epic-x-8192-mb-gddr6-gcpn-080.html', + }, + { + brand: 'pny', + model: 'xlr8 uprising', + series: '3060ti', + url: + 'https://www.caseking.de/pny-geforce-rtx-3060-ti-uprising-8g-8192-mb-gddr6-gcpn-079.html', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3060ti', + url: + 'https://www.caseking.de/zotac-gaming-geforce-rtx-3060-ti-twin-edge-8192-mb-gddr6-gczt-169.html', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3060ti', + url: + 'https://www.caseking.de/zotac-gaming-geforce-rtx-3060-ti-twin-edge-oc-8192-mb-gddr6-gczt-170.html', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: + 'https://www.caseking.de/asus-geforce-rtx-3070-dual-8g-8192-mb-gddr6-gcas-404.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: + 'https://www.caseking.de/asus-geforce-rtx-3070-tuf-o8g-8192-mb-gddr6-gcas-406.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://www.caseking.de/asus-geforce-rtx-3070-rog-strix-o8g-8192-mb-gddr6-gcas-403.html', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: + 'https://www.caseking.de/asus-geforce-rtx-3070-dual-o8g-8192-mb-gddr6-gcas-405.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: + 'https://www.caseking.de/asus-geforce-rtx-3070-rog-strix-8g-8192-mb-gddr6-gcas-415.html', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3070', + url: + 'https://www.caseking.de/evga-geforce-rtx-3070-xc3-black-gaming-8192-mb-gddr6-gcev-424.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3070', + url: + 'https://www.caseking.de/evga-geforce-rtx-3070-xc3-ultra-gaming-8192-mb-gddr6-gcev-426.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3070', + url: + 'https://www.caseking.de/evga-geforce-rtx-3070-ftw3-ultra-8192-mb-gddr6-gcev-428.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3070', + url: + 'https://www.caseking.de/evga-geforce-rtx-3070-xc3-8192-mb-gddr6-gcev-425.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3070', + url: + 'https://www.caseking.de/evga-geforce-rtx-3070-ftw3-8192-mb-gddr6-gcev-427.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3070-gaming-oc-8g-8192-mb-gddr6-gcgb-338.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3070', + url: + 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3070-master-8g-8192-mb-gddr6-gcgb-343.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3070', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3070-vision-oc-8g-8192-mb-gddr6-gcgb-344.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3070', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3070-eagle-8g-8192-mb-gddr6-gcgb-340.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3070-eagle-oc-8g-8192-mb-gddr6-gcgb-339.html', + }, + { + brand: 'inno3d', + model: 'twin x2', + series: '3070', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3070-twin-x2-8192-mb-gddr6-gci3-176.html', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3070', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3070-ichill-x3-8192-mb-gddr6-gci3-174.html', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3070', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3070-ichill-x4-8192-mb-gddr6-gci3-173.html', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3070', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3070-twin-x2-oc-8192-mb-gddr6-gci3-175.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: + 'https://www.caseking.de/msi-geforce-rtx-3070-gaming-x-trio-8192-mb-gddr6-gcmc-250.html', + }, + { + brand: 'msi', + model: 'suprim', + series: '3070', + url: + 'https://www.caseking.de/msi-geforce-rtx-3070-suprim-8g-8192-mb-gddr6-gcmc-256.html', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: + 'https://www.caseking.de/msi-geforce-rtx-3070-ventus-2x-oc-8192-mb-gddr6-gcmc-249.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://www.caseking.de/msi-geforce-rtx-3070-ventus-3x-oc-8192-mb-gddr6-gcmc-251.html', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3070', + url: + 'https://www.caseking.de/msi-geforce-rtx-3070-suprim-x-8g-8192-mb-gddr6-gcmc-254.html', + }, + { + brand: 'pny', + model: 'xlr8 epic x', + series: '3070', + url: + 'https://www.caseking.de/pny-geforce-rtx-3070-xlr8-gaming-revel-epic-x-rgb-8192-mb-gddr6-gcpn-078.html', + }, + { + brand: 'pny', + model: 'dual fan', + series: '3070', + url: + 'https://www.caseking.de/pny-geforce-rtx-3070-dual-fan-8192-mb-gddr6-gcpn-077.html', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://www.caseking.de/zotac-gaming-geforce-rtx-3070-twin-edge-8192-mb-gddr6-gczt-164.html', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.caseking.de/zotac-gaming-geforce-rtx-3070-twin-edge-oc-8192-mb-gddr6-gczt-168.html', + }, + { + brand: 'zotac', + model: 'twin edge oc white', + series: '3070', + url: + 'https://www.caseking.de/zotac-gaming-geforce-rtx-3070-twin-edge-oc-white-8192-mb-gddr6-gczt-171.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.caseking.de/asus-geforce-rtx-3080-rog-strix-10g-10240-mb-gddr6x-gcas-400.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.caseking.de/asus-geforce-rtx-3080-rog-strix-o10g-10240-mb-gddr6x-gcas-399.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-10g-10240-mb-gddr6x-gcas-394.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.caseking.de/asus-geforce-rtx-3080-tuf-gaming-o10g-10240-mb-gddr6x-gcas-396.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: + 'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-gaming-10240-mb-gddr6x-gcev-416.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-ultra-gaming-10240-mb-gddr6x-gcev-417.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-gaming-10240-mb-gddr6x-gcev-415.html', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-black-gaming-10240-mb-gddr6x-gcev-414.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-ultra-gaming-10240-mb-gddr6x-gcev-423.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-master-10g-10240-mb-gddr6x-gcgb-331.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3080-eagle-oc-10g-10240-mb-gddr6x-gcgb-326.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3080-gaming-oc-10g-10240-mb-gddr6x-gcgb-327.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3080-vision-oc-10g-10240-mb-gddr6x-gcgb-332.html', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x3-10240-mb-gddr6x-gci3-170.html', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-x4-10240-mb-gddr6x-gci3-169.html', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3080-twin-x2-oc-10240-mb-gddr6x-gci3-171.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.caseking.de/msi-geforce-rtx-3080-gaming-x-trio-10g-10240-mb-gddr6x-gcmc-248.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.caseking.de/msi-geforce-rtx-3080-ventus-3x-10g-oc-10240-mb-gddr6x-gcmc-247.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.caseking.de/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10240-mb-gddr6x-gcpn-075.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.caseking.de/pny-geforce-rtx-3080-xlr8-gaming-revel-epic-x-rgb-10240-mb-gddr6x-gcpn-076.html', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: + 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-amp-holo-10240-mb-gddr6x-gczt-166.html', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-oc-10240-mb-gddr6x-gczt-167.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.caseking.de/zotac-gaming-geforce-rtx-3080-trinity-10240-mb-gddr6x-gczt-163.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-xtreme-10g-10240-mb-gddr6x-gcgb-333.html', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.caseking.de/msi-geforce-rtx-3080-suprim-x-10g-10240-mb-gddr6x-gcmc-253.html', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3080', + url: + 'https://www.caseking.de/asus-geforce-rtx-3080-ekwb-10g-10240-mb-gddr6x-gcas-413.html', + }, + { + brand: 'inno3d', + model: 'ichill frostbite', + series: '3080', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3080-ichill-frostbite-10240-mb-gddr6x-gci3-177.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-wb-10g-10240-mb-gddr6x-gcgb-352.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3080', + url: + 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10g-10240-mb-gddr6x-gcgb-351.html', + }, + { + brand: 'evga', + model: 'xc3 ultra hybrid', + series: '3080', + url: + 'https://www.caseking.de/evga-geforce-rtx-3080-xc3-ultra-hybrid-gaming-10240-mb-gddr6x-gcev-435.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra hybrid', + series: '3080', + url: + 'https://www.caseking.de/evga-geforce-rtx-3080-ftw3-ultra-hybrid-gaming-10240-mb-gddr6x-gcev-436.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3080-eagle-10g-10240-mb-gddr6x-gcgb-353.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: + 'https://www.caseking.de/asus-geforce-rtx-3090-rog-strix-24g-24576-mb-gddr6x-gcas-397.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.caseking.de/asus-geforce-rtx-3090-rog-strix-o24g-24576-mb-gddr6x-gcas-398.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.caseking.de/asus-geforce-rtx-3090-tuf-gaming-24g-24576-mb-gddr6x-gcas-393.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.caseking.de/asus-geforce-rtx-3090-tuf-gaming-o24g-24576-mb-gddr6x-gcas-395.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: + 'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-gaming-24576-mb-gddr6x-gcev-421.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: + 'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-ultra-gaming-24576-mb-gddr6x-gcev-422.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: + 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-gaming-24576-mb-gddr6x-gcev-419.html', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3090', + url: + 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-black-gaming-24576-mb-gddr6x-gcev-418.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: + 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-ultra-gaming-24576-mb-gddr6x-gcev-420.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3090-eagle-oc-24g-24576-mb-gddr6x-gcgb-329.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3090-gaming-oc-24g-24576-mb-gddr6x-gcgb-328.html', + }, + { + brand: 'inno3d', + model: 'gaming x3', + series: '3090', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3090-gaming-x3-24576-mb-gddr6x-gci3-172.html', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3090', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-x3-24576-mb-gddr6x-gci3-168.html', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-x4-24576-mb-gddr6x-gci3-167.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.caseking.de/msi-geforce-rtx-3090-gaming-x-trio-24g-24576-mb-gddr6x-gcmc-244.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3090', + url: + 'https://www.caseking.de/pny-geforce-rtx-3090-xlr8-gaming-epic-x-rgb-24576-mb-gddr6x-gcpn-073.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3090', + url: + 'https://www.caseking.de/pny-geforce-rtx-3090-xlr8-gaming-revel-epic-x-rgb-24576-mb-gddr6x-gcpn-074.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.caseking.de/zotac-gaming-geforce-rtx-3090-trinity-24576-mb-gddr6x-gczt-162.html', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3090', + url: + 'https://www.caseking.de/asus-geforce-rtx-3090-ekwb-24g-24576-mb-gddr6x-gcas-414.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.caseking.de/msi-geforce-rtx-3090-ventus-3x-24g-oc-24576-mb-gddr6x-gcmc-243.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3090', + url: + 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3090-xtreme-waterforce-wb-24g-24576-mb-gddr6x-gcgb-355.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3090', + url: + 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3090-xtreme-waterforce-24g-24576-mb-gddr6x-gcgb-354.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: + 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3090-xtreme-24g-24576-mb-gddr6x-gcgb-335.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra hybrid', + series: '3090', + url: + 'https://www.caseking.de/evga-geforce-rtx-3090-ftw3-ultra-hybrid-gaming-24576-mb-gddr6x-gcev-434.html', + }, + { + brand: 'evga', + model: 'xc3 ultra hybrid', + series: '3090', + url: + 'https://www.caseking.de/evga-geforce-rtx-3090-xc3-ultra-hybrid-gaming-24576-mb-gddr6x-gcev-433.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: + 'https://www.caseking.de/gigabyte-aorus-geforce-rtx-3090-master-24g-24576-mb-gddr6x-gcgb-334.html', + }, + { + brand: 'inno3d', + model: 'ichill frostbite', + series: '3090', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-frostbite-24576-mb-gddr6x-gci3-178.html', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3090', + url: + 'https://www.caseking.de/inno3d-geforce-rtx-3090-ichill-frostbite-24576-mb-gddr6x-gci3-178.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3090', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3090-vision-oc-24g-24576-mb-gddr6x-gcgb-341.html', + }, + { + brand: 'gigabyte', + model: 'turbo', + series: '3090', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3090-turbo-24g-24576-mb-gddr6x-gcgb-330.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3090', + url: + 'https://www.caseking.de/gigabyte-geforce-rtx-3090-eagle-24g-24576-mb-gddr6x-gcgb-342.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.caseking.de/amd-ryzen-5-5600x-3-7-ghz-vermeer-am4-mit-amd-wraith-stealth-kuehler-hpam-202.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.caseking.de/amd-ryzen-7-5800x-3-8-ghz-vermeer-am4-boxed-ohne-kuehler-hpam-203.html', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.caseking.de/amd-ryzen-9-5900x-3-7-ghz-vermeer-am4-boxed-ohne-kuehler-hpam-204.html', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.caseking.de/amd-ryzen-9-5950x-3-4-ghz-vermeer-am4-boxed-ohne-kuehler-hpam-205.html', + }, + { + brand: 'sapphire', + model: 'nitro oc se', + series: 'rx6800xt', + url: + 'https://www.caseking.de/sapphire-nitro-radeon-rx-6800-xt-oc-16g-16384-mb-gddr6-gcsp-215.html', + }, + { + brand: 'sapphire', + model: 'nitro oc', + series: 'rx6800xt', + url: + 'https://www.caseking.de/sapphire-nitro-radeon-rx-6800-xt-oc-se-16g-16384-mb-gddr6-gcsp-214.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800xt', + url: + 'https://www.caseking.de/gigabyte-radeon-rx-6800-xt-gaming-oc-16g-16384-mb-gddr6-gcgb-356.html', + }, + { + brand: 'gigabyte', + model: 'gaming', + series: 'rx6800xt', + url: + 'https://www.caseking.de/gigabyte-radeon-rx-6800-xt-16g-16384-mb-gddr6-gcgb-357.html', + }, + { + brand: 'asus', + model: 'strix lc', + series: 'rx6800xt', + url: + 'https://www.caseking.de/asus-radeon-rx-6800-xt-rog-strix-lc-o16g-16384-mb-gddr6-gcas-416.html', + }, + { + brand: 'asus', + model: 'tuf', + series: 'rx6800xt', + url: + 'https://www.caseking.de/asus-radeon-rx-6800-xt-tuf-o16g-16384-mb-gddr6-gcas-417.html', + }, + ], + name: 'caseking', }; diff --git a/src/store/model/ccl.ts b/src/store/model/ccl.ts index 4ac9f1cae4..0aeb03a517 100644 --- a/src/store/model/ccl.ts +++ b/src/store/model/ccl.ts @@ -2,104 +2,104 @@ import {Store} from './store'; import {getProductLinksBuilder} from './helpers/card'; export const Ccl: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '£', - labels: { - inStock: { - container: '#pnlAddToBasket', - text: ['add to basket'] - }, - maxPrice: { - container: '#pnlPriceText > p', - euroFormat: false // Note: CCL uses non-euroFromat as price seperator - }, - outOfStock: { - container: '#pnlSoldOut', - text: ['sold out', 'coming soon'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.cclonline.com/product/296443/RTX-2060-SUPER-VENTUS-GP-OC/Graphics-Cards/MSI-GeForce-RTX-2060-SUPER-VENTUS-GP-OC-8GB-Overclocked-Graphics-Card/VGA5671/' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.cclonline.com/product/331765/100-100000065BOX/CPU-Processors/AMD-Ryzen-5-5600X-3-7GHz-Hexa-Core-Processor-with-6-Cores-12-Threads-65W-TDP-35MB-Cache-4-6GHz-Turbo-Wraith-Stealth-Cooler/CPU0679/' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.cclonline.com/product/331766/100-100000063WOF/CPU-Processors/AMD-Ryzen-7-5800X-3-8GHz-Octa-Core-Processor-with-8-Cores-16-Threads-105W-TDP-36MB-Cache-4-7GHz-Turbo-No-Cooler/CPU0680/' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.cclonline.com/product/331767/100-100000061WOF/CPU-Processors/AMD-Ryzen-9-5900X-3-7GHz-Dodeca-Core-Processor-with-12-Cores-24-Threads-105W-TDP-70MB-Cache-4-8GHz-Turbo-No-Cooler/CPU0681/' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.cclonline.com/product/331768/100-100000059WOF/CPU-Processors/AMD-Ryzen-9-5950X-3-4GHz-Hexadeca-Core-Processor-with-16-Cores-32-Threads-105W-TDP-72MB-Cache-4-9GHz-Turbo-No-Cooler/CPU0682/' - } - ], - linksBuilder: { - builder: getProductLinksBuilder({ - productsSelector: '.productListingContainerOuter .productList', - sitePrefix: 'https://www.cclonline.com', - titleAttribute: 'title', - titleSelector: '.productList_Detail a[title]' - }), - urls: [ - { - series: '3060ti', - url: - 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3060-Ti-Graphics-Cards/' - }, - { - series: '3070', - url: - 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3070-Graphics-Cards/' - }, - { - series: '3080', - url: - 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3080-Graphics-Cards/' - }, - { - series: '3090', - url: - 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3090-Graphics-Cards/' - }, - { - series: 'rx6800', - url: - 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/AMD-Radeon-RX-6800-Graphics-Cards/' - }, - { - series: 'rx6800xt', - url: - 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/AMD-Radeon-RX-6800-XT-Graphics-Cards/' - }, - { - series: 'rx6900xt', - url: - 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/attributeslist/1268064/' - } - ] - }, - name: 'ccl', - waitUntil: 'domcontentloaded' + backoffStatusCodes: [403, 429, 503], + currency: '£', + labels: { + inStock: { + container: '#pnlAddToBasket', + text: ['add to basket'], + }, + maxPrice: { + container: '#pnlPriceText > p', + euroFormat: false, // Note: CCL uses non-euroFromat as price seperator + }, + outOfStock: { + container: '#pnlSoldOut', + text: ['sold out', 'coming soon'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.cclonline.com/product/296443/RTX-2060-SUPER-VENTUS-GP-OC/Graphics-Cards/MSI-GeForce-RTX-2060-SUPER-VENTUS-GP-OC-8GB-Overclocked-Graphics-Card/VGA5671/', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.cclonline.com/product/331765/100-100000065BOX/CPU-Processors/AMD-Ryzen-5-5600X-3-7GHz-Hexa-Core-Processor-with-6-Cores-12-Threads-65W-TDP-35MB-Cache-4-6GHz-Turbo-Wraith-Stealth-Cooler/CPU0679/', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.cclonline.com/product/331766/100-100000063WOF/CPU-Processors/AMD-Ryzen-7-5800X-3-8GHz-Octa-Core-Processor-with-8-Cores-16-Threads-105W-TDP-36MB-Cache-4-7GHz-Turbo-No-Cooler/CPU0680/', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.cclonline.com/product/331767/100-100000061WOF/CPU-Processors/AMD-Ryzen-9-5900X-3-7GHz-Dodeca-Core-Processor-with-12-Cores-24-Threads-105W-TDP-70MB-Cache-4-8GHz-Turbo-No-Cooler/CPU0681/', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.cclonline.com/product/331768/100-100000059WOF/CPU-Processors/AMD-Ryzen-9-5950X-3-4GHz-Hexadeca-Core-Processor-with-16-Cores-32-Threads-105W-TDP-72MB-Cache-4-9GHz-Turbo-No-Cooler/CPU0682/', + }, + ], + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '.productListingContainerOuter .productList', + sitePrefix: 'https://www.cclonline.com', + titleAttribute: 'title', + titleSelector: '.productList_Detail a[title]', + }), + urls: [ + { + series: '3060ti', + url: + 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3060-Ti-Graphics-Cards/', + }, + { + series: '3070', + url: + 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3070-Graphics-Cards/', + }, + { + series: '3080', + url: + 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3080-Graphics-Cards/', + }, + { + series: '3090', + url: + 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/GeForce-RTX-3090-Graphics-Cards/', + }, + { + series: 'rx6800', + url: + 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/AMD-Radeon-RX-6800-Graphics-Cards/', + }, + { + series: 'rx6800xt', + url: + 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/AMD-Radeon-RX-6800-XT-Graphics-Cards/', + }, + { + series: 'rx6900xt', + url: + 'https://www.cclonline.com/category/430/PC-Components/Graphics-Cards/attributeslist/1268064/', + }, + ], + }, + name: 'ccl', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/centrecom.ts b/src/store/model/centrecom.ts index e4f56bb737..09768ee4ad 100644 --- a/src/store/model/centrecom.ts +++ b/src/store/model/centrecom.ts @@ -1,88 +1,86 @@ import {Store} from './store'; export const Centrecom: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: - '.prod_stores_stock > li:nth-child(1) > span:nth-child(2)', - text: ['In Stock'] - }, - maxPrice: { - container: 'div.prod_price_current.product-price > span', - euroFormat: false - }, - outOfStock: { - container: - '.prod_stores_stock > li:nth-child(1) > span:nth-child(2)', - text: ['Sold Out'] - } - }, - links: [ - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.centrecom.com.au/asus-geforce-rtx-3080-tuf-oc-10gb-gaming-graphics-card' - }, - { - brand: 'galax', - model: 'sg oc', - series: '3080', - url: - 'https://www.centrecom.com.au/galax-geforce-rtx-3080-sg-1-click-oc-graphics-card' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.centrecom.com.au/gigabyte-aorus-geforce-rtx-3080-master-graphics-card' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.centrecom.com.au/gigabyte-geforce-rtx-3080-aorus-extreme-10gb-gddr6x-graphics-card' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.centrecom.com.au/gigabyte-geforce-rtx-3080-eagle-oc-10g-graphics-card' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.centrecom.com.au/gigabyte-geforce-rtx-3080-gaming-oc-10g-graphics-card' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.centrecom.com.au/msi-geforce-rtx-3080-gaming-x-trio-10g-graphics-card' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.centrecom.com.au/msi-geforce-rtx-3080-suprim-x-10g-graphics-card' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.centrecom.com.au/msi-geforce-rtx-3080-ventus-3x-oc-10gb-graphics-card' - } - ], - name: 'centrecom' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: '.prod_stores_stock > li:nth-child(1) > span:nth-child(2)', + text: ['In Stock'], + }, + maxPrice: { + container: 'div.prod_price_current.product-price > span', + euroFormat: false, + }, + outOfStock: { + container: '.prod_stores_stock > li:nth-child(1) > span:nth-child(2)', + text: ['Sold Out'], + }, + }, + links: [ + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.centrecom.com.au/asus-geforce-rtx-3080-tuf-oc-10gb-gaming-graphics-card', + }, + { + brand: 'galax', + model: 'sg oc', + series: '3080', + url: + 'https://www.centrecom.com.au/galax-geforce-rtx-3080-sg-1-click-oc-graphics-card', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.centrecom.com.au/gigabyte-aorus-geforce-rtx-3080-master-graphics-card', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.centrecom.com.au/gigabyte-geforce-rtx-3080-aorus-extreme-10gb-gddr6x-graphics-card', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.centrecom.com.au/gigabyte-geforce-rtx-3080-eagle-oc-10g-graphics-card', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.centrecom.com.au/gigabyte-geforce-rtx-3080-gaming-oc-10g-graphics-card', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.centrecom.com.au/msi-geforce-rtx-3080-gaming-x-trio-10g-graphics-card', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.centrecom.com.au/msi-geforce-rtx-3080-suprim-x-10g-graphics-card', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.centrecom.com.au/msi-geforce-rtx-3080-ventus-3x-oc-10gb-graphics-card', + }, + ], + name: 'centrecom', }; diff --git a/src/store/model/comet.ts b/src/store/model/comet.ts index 5ada944006..ff72ebce4e 100644 --- a/src/store/model/comet.ts +++ b/src/store/model/comet.ts @@ -1,41 +1,41 @@ import {Store} from './store'; export const Comet: Store = { - currency: '€', - labels: { - inStock: { - container: '.caption', - text: ['Aggiungi al carrello'] - } - }, - links: [ - { - brand: 'sony', - cartUrl: 'https://www.comet.it/cart/insert/PSX01802A/online', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.comet.it/ps5/sony-playstation-5' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.comet.it/ps5/sony-playstation-5-digital-edition' - }, - { - brand: 'microsoft', - cartUrl: 'https://www.comet.it/cart/insert/MIS01077A/online', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.comet.it/xbox-serie-x/xbox-series-x' - }, - { - brand: 'microsoft', - cartUrl: 'https://www.comet.it/cart/insert/MIS010761/online', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.comet.it/xbox-serie-x/xbox-series-s' - } - ], - name: 'comet' + currency: '€', + labels: { + inStock: { + container: '.caption', + text: ['Aggiungi al carrello'], + }, + }, + links: [ + { + brand: 'sony', + cartUrl: 'https://www.comet.it/cart/insert/PSX01802A/online', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.comet.it/ps5/sony-playstation-5', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.comet.it/ps5/sony-playstation-5-digital-edition', + }, + { + brand: 'microsoft', + cartUrl: 'https://www.comet.it/cart/insert/MIS01077A/online', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.comet.it/xbox-serie-x/xbox-series-x', + }, + { + brand: 'microsoft', + cartUrl: 'https://www.comet.it/cart/insert/MIS010761/online', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.comet.it/xbox-serie-x/xbox-series-s', + }, + ], + name: 'comet', }; diff --git a/src/store/model/computeralliance.ts b/src/store/model/computeralliance.ts index a518746651..ed30e1c694 100644 --- a/src/store/model/computeralliance.ts +++ b/src/store/model/computeralliance.ts @@ -1,298 +1,298 @@ import {Store} from './store'; export const ComputerAlliance: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: - '#main > div.col-md-12 > div:nth-child(1) > div.col-sm-7.product-information > div:nth-child(5) > div > ul > li:nth-child(1) > a', - text: ['In Stock'] - }, - maxPrice: { - container: 'span.price', - euroFormat: false - }, - outOfStock: { - container: - '#main > div.col-md-12 > div:nth-child(1) > div.col-sm-7.product-information > div:nth-child(5) > div > ul > li:nth-child(1) > a', - text: ['Out of Stock'] - } - }, - links: [ - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.computeralliance.com.au/asus-rtx3080-10gb-tuf-gaming-pcie-video-card-tuf-rtx3080-10g-gaming' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.computeralliance.com.au/asus-rtx3080-10gb-tuf-oc-gaming-pcie-video-card-tuf-rtx3080-o10g-gaming' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.computeralliance.com.au/asus-rtx3080-10gb-rog-strix-oc-gaming-pcie-video-card-rog-strix-rtx3080-o10g-gaming' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.computeralliance.com.au/evga-rtx3080-10gb-ftw3-ultra-gaming-pcie-video-card-10g-p5-3897-kr' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.computeralliance.com.au/evga-rtx3080-10gb-xc3-ultra-gaming-pcie-video-card-10g-p5-3885-kr' - }, - { - brand: 'galax', - model: 'sg oc', - series: '3080', - url: - 'https://www.computeralliance.com.au/galax-rtx3080-10gb-sg-1-click-oc-pcie-video-card-38nwm3md99nn' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.computeralliance.com.au/gigabyte-rtx3080-10gb-aorus-master-pcie-video-card-gv-n3080aorus-m-10gd' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.computeralliance.com.au/gigabyte-rtx3080-10gb-aorus-xtreme-pcie-video-card-gv-n3080aorus-x-10gd' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.computeralliance.com.au/gigabyte-rtx3080-10gb-eagle-oc-pcie-video-card-gv-n3080eagle-oc-10gd' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.computeralliance.com.au/gigabyte-rtx3080-10gb-gaming-oc-pcie-video-card-gv-n3080gaming-oc-10gd' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.computeralliance.com.au/gigabyte-rtx3080-10gb-vision-oc-pcie-video-card-gv-n3080vision-oc-10gd' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://www.computeralliance.com.au/inno3d-geforce-rtx-3080-ichill-x4-10gb-video-card-c30804-106xx-1810va36' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.computeralliance.com.au/msi-rtx3080-10gb-gaming-x-trio-pcie-video-card' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.computeralliance.com.au/msi-rtx3080-10gb-suprim-x-pcie-video-card' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.computeralliance.com.au/msi-rtx3080-10gb-ventus-3x-oc-pcie-video-card' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.computeralliance.com.au/asus-rtx3090-24gb-tuf-gaming-pcie-video-card-tuf-rtx3090-24g-gaming' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.computeralliance.com.au/asus-rtx3090-24gb-tuf-gaming-pcie-oc-video-card-tuf-rtx3090-o24g-gaming' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.computeralliance.com.au/asus-rtx3090-24gb-rog-strix-oc-pcie-video-card-rog-strix-rtx3090-o24g-gaming' - }, - { - brand: 'galax', - model: 'sg oc', - series: '3090', - url: - 'https://www.computeralliance.com.au/galax-rtx3090-24gb-sg-1-click-oc-pcie-video-card-39nsm5md1gna' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: - 'https://www.computeralliance.com.au/gigabyte-rtx3090-24gb-aorus-master-pcie-video-card-gv-n3090aorus-m-24gd' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: - 'https://www.computeralliance.com.au/gigabyte-rtx3090-24gb-aorus-xtreme-pcie-video-card-gv-n3090aorus-x-24gd' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: - 'https://www.computeralliance.com.au/gigabyte-rtx3090-24gb-eagle-oc-pcie-video-card-gv-n3090eagle-oc-24gd' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.computeralliance.com.au/gigabyte-rtx3090-24gb-gaming-oc-pcie-video-card-gv-n3090gaming-oc-24gd' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3090', - url: - 'https://www.computeralliance.com.au/gigabyte-rtx3090-24gb-vision-oc-pcie-video-card-gv-n3090vision-oc-24gd' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3090', - url: - 'https://www.computeralliance.com.au/inno3d-geforce-rtx-3090-ichill-x4-24gb-video-card-c30904-246xx-1880va36' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.computeralliance.com.au/msi-rtx3090-24gb-ventus-3x-oc-pcie-video-card' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.computeralliance.com.au/msi-rtx3090-24gb-gaming-x-trio-pcie-video-card' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3090', - url: - 'https://www.computeralliance.com.au/msi-rtx3090-24gb-suprim-x-pcie-video-card' - }, - { - brand: 'asrock', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.computeralliance.com.au/asrock-rx6800-16gb-pcie-video-card' - }, - { - brand: 'asus', - model: 'strix lc', - series: 'rx6800xt', - url: - 'https://www.computeralliance.com.au/asus-rx6800xt-16gb-rog-strix-liquid-cooled-oc-gaming-pcie-video-card' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800', - url: - 'https://www.computeralliance.com.au/gigabyte-rx6800-16gb-gaming-oc-pcie-video-card-gv-r68gaming-oc-16gd' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800xt', - url: - 'https://www.computeralliance.com.au/gigabyte-rx6800xt-16gb-gaming-oc-pcie-video-card-gv-r68xtgaming-oc-16gd' - }, - { - brand: 'msi', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.computeralliance.com.au/msi-rx6800-16gb-pcie-video-card' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: 'rx6800xt', - url: - 'https://www.computeralliance.com.au/msi-rx6800xt-16gb-gaming-x-trio-pcie-video-card' - }, - { - brand: 'asus', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.computeralliance.com.au/asus-rx6900xt-16gb-pcie-video-card-rx6900xt-16g' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.computeralliance.com.au/amd-am4-ryzen-9-5950x-16-core-4.9ghz-cpu-no-heatsink-100-100000059wof' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.computeralliance.com.au/amd-am4-ryzen-9-5900x-12-core-4.8ghz-cpu-no-heatsink-100-100000061wof' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.computeralliance.com.au/amd-am4-ryzen-7-5800x-8-core-4.7ghz-cpu-(no-heatsink)-100-100000063wof' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.computeralliance.com.au/amd-am4-ryzen-5-5600x-6-core-4.6ghz-cpu-100-100000065box' - } - ], - name: 'computeralliance' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: + '#main > div.col-md-12 > div:nth-child(1) > div.col-sm-7.product-information > div:nth-child(5) > div > ul > li:nth-child(1) > a', + text: ['In Stock'], + }, + maxPrice: { + container: 'span.price', + euroFormat: false, + }, + outOfStock: { + container: + '#main > div.col-md-12 > div:nth-child(1) > div.col-sm-7.product-information > div:nth-child(5) > div > ul > li:nth-child(1) > a', + text: ['Out of Stock'], + }, + }, + links: [ + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.computeralliance.com.au/asus-rtx3080-10gb-tuf-gaming-pcie-video-card-tuf-rtx3080-10g-gaming', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.computeralliance.com.au/asus-rtx3080-10gb-tuf-oc-gaming-pcie-video-card-tuf-rtx3080-o10g-gaming', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.computeralliance.com.au/asus-rtx3080-10gb-rog-strix-oc-gaming-pcie-video-card-rog-strix-rtx3080-o10g-gaming', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.computeralliance.com.au/evga-rtx3080-10gb-ftw3-ultra-gaming-pcie-video-card-10g-p5-3897-kr', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.computeralliance.com.au/evga-rtx3080-10gb-xc3-ultra-gaming-pcie-video-card-10g-p5-3885-kr', + }, + { + brand: 'galax', + model: 'sg oc', + series: '3080', + url: + 'https://www.computeralliance.com.au/galax-rtx3080-10gb-sg-1-click-oc-pcie-video-card-38nwm3md99nn', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.computeralliance.com.au/gigabyte-rtx3080-10gb-aorus-master-pcie-video-card-gv-n3080aorus-m-10gd', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.computeralliance.com.au/gigabyte-rtx3080-10gb-aorus-xtreme-pcie-video-card-gv-n3080aorus-x-10gd', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.computeralliance.com.au/gigabyte-rtx3080-10gb-eagle-oc-pcie-video-card-gv-n3080eagle-oc-10gd', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.computeralliance.com.au/gigabyte-rtx3080-10gb-gaming-oc-pcie-video-card-gv-n3080gaming-oc-10gd', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.computeralliance.com.au/gigabyte-rtx3080-10gb-vision-oc-pcie-video-card-gv-n3080vision-oc-10gd', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://www.computeralliance.com.au/inno3d-geforce-rtx-3080-ichill-x4-10gb-video-card-c30804-106xx-1810va36', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.computeralliance.com.au/msi-rtx3080-10gb-gaming-x-trio-pcie-video-card', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.computeralliance.com.au/msi-rtx3080-10gb-suprim-x-pcie-video-card', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.computeralliance.com.au/msi-rtx3080-10gb-ventus-3x-oc-pcie-video-card', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.computeralliance.com.au/asus-rtx3090-24gb-tuf-gaming-pcie-video-card-tuf-rtx3090-24g-gaming', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.computeralliance.com.au/asus-rtx3090-24gb-tuf-gaming-pcie-oc-video-card-tuf-rtx3090-o24g-gaming', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.computeralliance.com.au/asus-rtx3090-24gb-rog-strix-oc-pcie-video-card-rog-strix-rtx3090-o24g-gaming', + }, + { + brand: 'galax', + model: 'sg oc', + series: '3090', + url: + 'https://www.computeralliance.com.au/galax-rtx3090-24gb-sg-1-click-oc-pcie-video-card-39nsm5md1gna', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: + 'https://www.computeralliance.com.au/gigabyte-rtx3090-24gb-aorus-master-pcie-video-card-gv-n3090aorus-m-24gd', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: + 'https://www.computeralliance.com.au/gigabyte-rtx3090-24gb-aorus-xtreme-pcie-video-card-gv-n3090aorus-x-24gd', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: + 'https://www.computeralliance.com.au/gigabyte-rtx3090-24gb-eagle-oc-pcie-video-card-gv-n3090eagle-oc-24gd', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.computeralliance.com.au/gigabyte-rtx3090-24gb-gaming-oc-pcie-video-card-gv-n3090gaming-oc-24gd', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3090', + url: + 'https://www.computeralliance.com.au/gigabyte-rtx3090-24gb-vision-oc-pcie-video-card-gv-n3090vision-oc-24gd', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: + 'https://www.computeralliance.com.au/inno3d-geforce-rtx-3090-ichill-x4-24gb-video-card-c30904-246xx-1880va36', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.computeralliance.com.au/msi-rtx3090-24gb-ventus-3x-oc-pcie-video-card', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.computeralliance.com.au/msi-rtx3090-24gb-gaming-x-trio-pcie-video-card', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3090', + url: + 'https://www.computeralliance.com.au/msi-rtx3090-24gb-suprim-x-pcie-video-card', + }, + { + brand: 'asrock', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.computeralliance.com.au/asrock-rx6800-16gb-pcie-video-card', + }, + { + brand: 'asus', + model: 'strix lc', + series: 'rx6800xt', + url: + 'https://www.computeralliance.com.au/asus-rx6800xt-16gb-rog-strix-liquid-cooled-oc-gaming-pcie-video-card', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800', + url: + 'https://www.computeralliance.com.au/gigabyte-rx6800-16gb-gaming-oc-pcie-video-card-gv-r68gaming-oc-16gd', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800xt', + url: + 'https://www.computeralliance.com.au/gigabyte-rx6800xt-16gb-gaming-oc-pcie-video-card-gv-r68xtgaming-oc-16gd', + }, + { + brand: 'msi', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.computeralliance.com.au/msi-rx6800-16gb-pcie-video-card', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: 'rx6800xt', + url: + 'https://www.computeralliance.com.au/msi-rx6800xt-16gb-gaming-x-trio-pcie-video-card', + }, + { + brand: 'asus', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.computeralliance.com.au/asus-rx6900xt-16gb-pcie-video-card-rx6900xt-16g', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.computeralliance.com.au/amd-am4-ryzen-9-5950x-16-core-4.9ghz-cpu-no-heatsink-100-100000059wof', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.computeralliance.com.au/amd-am4-ryzen-9-5900x-12-core-4.8ghz-cpu-no-heatsink-100-100000061wof', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.computeralliance.com.au/amd-am4-ryzen-7-5800x-8-core-4.7ghz-cpu-(no-heatsink)-100-100000063wof', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.computeralliance.com.au/amd-am4-ryzen-5-5600x-6-core-4.6ghz-cpu-100-100000065box', + }, + ], + name: 'computeralliance', }; diff --git a/src/store/model/computeruniverse.ts b/src/store/model/computeruniverse.ts index 65d78bc3ef..0012a95cf5 100644 --- a/src/store/model/computeruniverse.ts +++ b/src/store/model/computeruniverse.ts @@ -1,785 +1,781 @@ import {Store} from './store'; export const Computeruniverse: Store = { - currency: '€', - labels: { - inStock: { - container: '.availability', - text: [ - 'bestellartikel', - 'auf lager und sofort lieferbar', - 'kurzfristig verfügbar' - ] - }, - maxPrice: { - container: '.product-price', - euroFormat: true - }, - outOfStock: { - container: '.availability', - text: [ - 'nicht verfügbar', - 'liefertermin hat erhebliche schwankungen' - ] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.computeruniverse.net/de/gainward-geforce-gtx-1660-super-ghost-6-gb-high-end-grafikkarte' - }, - { - brand: 'asus', - model: 'dual', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/asus-geforce-rtx3060-ti-dual-8-gb' - }, - { - brand: 'palit', - model: 'dual', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/palit-geforce-rtx3060-ti-dual-8-gb' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/inno3d-geforce-rtx-3060-ti-ichill-x3-8-gb-oc' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/msi-geforce-rtx3060-ti-ventus-2x-oc-8-gb-oc' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/msi-geforce-rtx3060-ti-gaming-x-trio-8-gb-oc' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx-3060-ti-gaming-oc-8-gb-oc' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3060-ti-eagle-oc-8-gb-oc' - }, - { - brand: 'evga', - model: 'xc gaming', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3060-ti-xc-gaming-8-gb' - }, - { - brand: 'gainward', - model: 'phoenix', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/gainward-geforce-rtx3060-ti-phoenix-8-gb' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/inno3d-geforce-rtx-3060-ti-twin-x2-oc-8-gb-oc' - }, - { - brand: 'gainward', - model: 'ghost oc', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/gainward-geforce-rtx-3060-ti-ghost-oc-8-gb-oc' - }, - { - brand: 'palit', - model: 'dual oc', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/palit-geforce-rtx-3060-ti-dual-oc-8-gb-oc' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx-3060-ti-twin-edge-oc-8-gb-oc' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3060-ti-twin-edge-8-gb' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3060-ti-ftw3-ultra-gaming-8-gb-oc' - }, - { - brand: 'gainward', - model: 'phantom gs', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/gainward-geforce-rtx3060-ti-phoenix-gs-8-gb-oc' - }, - { - brand: 'pny', - model: 'uprising', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/pny-geforce-rtx3060-ti-uprising-x8g-8-gb' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3060-ti-gaming-oc-8-gb-oc' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3060-ti-eagle-8-gb' - }, - { - brand: 'gigabyte', - model: 'gaming oc pro', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3060-ti-gaming-oc-pro-8-gb-oc' - }, - { - brand: 'inno3d', - model: 'twin x2', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/inno3d-geforce-rtx-3060-ti-twin-x2-8-gb' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3060-ti-gaming-oc-tuf-o8g-gaming-8-gb' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/asus-geforce-rtx3060-ti-dual-oc-o8g-dual-o8g-8-gb' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/msi-geforce-rtx3060-ti-ventus-3x-oc-8-gb-oc' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/gigabyte-aorus-geforce-rtx3060-ti-master-8-gb' - }, - { - brand: 'pny', - model: 'xlr8 gaming', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/pny-geforce-rtx3060-ti-xlr8-gaming-8-gb' - }, - { - brand: 'evga', - model: 'xc black', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3060-ti-xc-black-gaming-8-gb' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3060-ti-ftw3-gaming-8-gb' - }, - { - brand: 'evga', - model: 'ftw3 black', - series: '3060ti', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3060-ti-ftw3-black-gaming-8-gb' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: - 'https://www.computeruniverse.net/de/asus-geforce-rtx3070-dual-rtx3070-8g-8-gb-enthusiast-grafikkarte' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: - 'https://www.computeruniverse.net/de/asus-geforce-rtx3070-dual-oc-dual-rtx3070-o8g-8-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: - 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3070-gaming-8-gb-enthusiast-grafikkarte' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3070-gaming-oc-8-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3070', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3070-xc3-black' - }, - { - brand: 'gainward', - model: 'phoenix', - series: '3070', - url: - 'https://www.computeruniverse.net/de/gainward-geforce-rtx3070-phoenix-8-gb-enthusiast-grafikkarte' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3070', - url: - 'https://www.computeruniverse.net/de/gainward-geforce-rtx3070-phoenix-gs-8-gb-enthusiast-grafikkarte' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3070', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-eagle-8-gb-enthusiast-grafikkarte' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-eagle-oc-8-gb-enthusiast-grafikkarte' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-gaming-oc-8-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3070', - url: - 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3070-ichill-x3' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3070', - url: - 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3070-ichill-x4' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: - 'https://www.computeruniverse.net/de/msi-geforce-rtx3070-gaming-x-trio-8-gb-enthusiast-grafikkarte' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: - 'https://www.computeruniverse.net/de/msi-geforce-rtx3070-ventus-2x-oc-8-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://www.computeruniverse.net/de/msi-geforce-rtx3070-ventus-3x-oc-8-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3070', - url: - 'https://www.computeruniverse.net/de/palit-geforce-rtx3070-gaming-pro-8-gb' - }, - { - brand: 'pny', - model: 'dual fan', - series: '3070', - url: - 'https://www.computeruniverse.net/de/pny-geforce-rtx3070-m-dual-8-gb' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3070', - url: - 'https://www.computeruniverse.net/de/pny-geforce-rtx3070-xlr8-gaming-epic-x-rgb-p-8-gb-enthusiast-grafikkarte' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3070-twin-edge-oc-8-gb-oc' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3080-gaming-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3080-gaming-oc-10-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3080-gaming-tuf-rtx3080-10g-gaming-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3080-gaming-oc-tuf-rtx3080-o10g-gaming-10-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-ftw3-10-gb-high-end-grafikkarte' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-ultra-ftw3-10-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-black-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-ultra-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'gainward', - model: 'phoenix', - series: '3080', - url: - 'https://www.computeruniverse.net/de/gainward-geforce-rtx3080-phoenix-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3080', - url: - 'https://www.computeruniverse.net/de/gainward-geforce-rtx3080-phoenix-gs-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.computeruniverse.net/de/gigabyte-aorus-geforce-rtx3080-master-10-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-eagle-oc-10-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-gaming-oc-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-vision-oc-10-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-ichill-x3-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-ichill-x4-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: - 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-twin-x2-oc-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'kfa2', - model: 'sg oc', - series: '3080', - url: - 'https://www.computeruniverse.net/de/kfa-geforce-rtx3080-sg-oc-10-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.computeruniverse.net/de/msi-geforce-rtx3080-gaming-x-trio-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.computeruniverse.net/de/msi-geforce-rtx3080-ventus-3x-oc-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3080', - url: - 'https://www.computeruniverse.net/de/palit-geforce-rtx3080-gamingpro-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'palit', - model: 'gaming pro oc', - series: '3080', - url: - 'https://www.computeruniverse.net/de/palit-geforce-rtx3080-gamingpro-oc-10-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.computeruniverse.net/de/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-p-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.computeruniverse.net/de/pny-geforce-rtx3080-xlr8-gaming-epic-x-rgb-m-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: - 'https://www.computeruniverse.net/de/zotac-geforce-rtx3080-amp-holo-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'zotac', - model: 'amp extreme holo', - series: '3080', - url: - 'https://www.computeruniverse.net/de/zotac-geforce-rtx3080-amp-extreme-holo-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3080-trinity-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3080-trinity-oc-10-gb-enthusiast-grafikkarte' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: - 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3090-gaming-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3090-gaming-oc-24-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3090-gaming-tuf-rtx3090-24g-gaming-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3090-gaming-oc-tuf-rtx3090-o24g-gaming-24-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3090', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-ftw3-gaming-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3090', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-ftw3-ultra-gaming-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'evga', - model: 'xc3', - series: '3090', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-gaming-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3090', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-black-gaming-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: - 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-ultra-gaming-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'gainward', - model: 'phoenix', - series: '3090', - url: - 'https://www.computeruniverse.net/de/gainward-geforce-rtx3090-phoenix-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'gainward', - model: 'phoenix gs oc', - series: '3090', - url: - 'https://www.computeruniverse.net/de/gainward-geforce-rtx3090-phoenix-gs-24-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: - 'https://www.computeruniverse.net/de/gigabyte-aorus-geforce-rtx3090-master-24gb' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3090-eagle-oc-24-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3090-gaming-oc-24-gb-oc' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3090', - url: - 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3090-ichill-x3-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3090', - url: - 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3090-ichill-x4-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'kfa2', - model: 'sg oc', - series: '3090', - url: - 'https://www.computeruniverse.net/de/kfa-geforce-rtx3090-sg-oc-24-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.computeruniverse.net/de/msi-geforce-rtx3090-gaming-x-trio-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.computeruniverse.net/de/msi-geforce-rtx3090-ventus-3x-oc-24-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3090', - url: - 'https://www.computeruniverse.net/de/palit-geforce-rtx3090-gamingpro-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'palit', - model: 'gaming pro oc', - series: '3090', - url: - 'https://www.computeruniverse.net/de/palit-geforce-rtx3090-gamingpro-oc-24-gb-oc-enthusiast-grafikkarte' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3090', - url: - 'https://www.computeruniverse.net/de/pny-geforce-rtx3090-xlr8-gaming-epic-x-rgb-m-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3090', - url: - 'https://www.computeruniverse.net/de/pny-geforce-rtx3090-xlr8-gaming-epic-x-rgb-p-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx-3090-trinity-24-gb-enthusiast-grafikkarte' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.computeruniverse.net/de/amd-ryzen-5-5600x-boxed-mit-wraith-stealth-kuehler' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.computeruniverse.net/de/amd-ryzen-7-5800x-box-ohne-kuehler' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.computeruniverse.net/de/amd-ryzen-9-5900x-box-ohne-kuehler' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.computeruniverse.net/de/amd-ryzen-9-5950x-box-ohne-kuehler' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.computeruniverse.net/de/sony-playstation-5-weiss-schwarz-825gb-ssd' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.computeruniverse.net/de/sony-playstation-5-digital-edition-weiss-schwarz-825gb-ssd' - } - ], - name: 'computeruniverse' + currency: '€', + labels: { + inStock: { + container: '.availability', + text: [ + 'bestellartikel', + 'auf lager und sofort lieferbar', + 'kurzfristig verfügbar', + ], + }, + maxPrice: { + container: '.product-price', + euroFormat: true, + }, + outOfStock: { + container: '.availability', + text: ['nicht verfügbar', 'liefertermin hat erhebliche schwankungen'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.computeruniverse.net/de/gainward-geforce-gtx-1660-super-ghost-6-gb-high-end-grafikkarte', + }, + { + brand: 'asus', + model: 'dual', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/asus-geforce-rtx3060-ti-dual-8-gb', + }, + { + brand: 'palit', + model: 'dual', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/palit-geforce-rtx3060-ti-dual-8-gb', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/inno3d-geforce-rtx-3060-ti-ichill-x3-8-gb-oc', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/msi-geforce-rtx3060-ti-ventus-2x-oc-8-gb-oc', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/msi-geforce-rtx3060-ti-gaming-x-trio-8-gb-oc', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx-3060-ti-gaming-oc-8-gb-oc', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3060-ti-eagle-oc-8-gb-oc', + }, + { + brand: 'evga', + model: 'xc gaming', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3060-ti-xc-gaming-8-gb', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/gainward-geforce-rtx3060-ti-phoenix-8-gb', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/inno3d-geforce-rtx-3060-ti-twin-x2-oc-8-gb-oc', + }, + { + brand: 'gainward', + model: 'ghost oc', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/gainward-geforce-rtx-3060-ti-ghost-oc-8-gb-oc', + }, + { + brand: 'palit', + model: 'dual oc', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/palit-geforce-rtx-3060-ti-dual-oc-8-gb-oc', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx-3060-ti-twin-edge-oc-8-gb-oc', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3060-ti-twin-edge-8-gb', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3060-ti-ftw3-ultra-gaming-8-gb-oc', + }, + { + brand: 'gainward', + model: 'phantom gs', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/gainward-geforce-rtx3060-ti-phoenix-gs-8-gb-oc', + }, + { + brand: 'pny', + model: 'uprising', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/pny-geforce-rtx3060-ti-uprising-x8g-8-gb', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3060-ti-gaming-oc-8-gb-oc', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3060-ti-eagle-8-gb', + }, + { + brand: 'gigabyte', + model: 'gaming oc pro', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3060-ti-gaming-oc-pro-8-gb-oc', + }, + { + brand: 'inno3d', + model: 'twin x2', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/inno3d-geforce-rtx-3060-ti-twin-x2-8-gb', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3060-ti-gaming-oc-tuf-o8g-gaming-8-gb', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/asus-geforce-rtx3060-ti-dual-oc-o8g-dual-o8g-8-gb', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/msi-geforce-rtx3060-ti-ventus-3x-oc-8-gb-oc', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/gigabyte-aorus-geforce-rtx3060-ti-master-8-gb', + }, + { + brand: 'pny', + model: 'xlr8 gaming', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/pny-geforce-rtx3060-ti-xlr8-gaming-8-gb', + }, + { + brand: 'evga', + model: 'xc black', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3060-ti-xc-black-gaming-8-gb', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3060-ti-ftw3-gaming-8-gb', + }, + { + brand: 'evga', + model: 'ftw3 black', + series: '3060ti', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3060-ti-ftw3-black-gaming-8-gb', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: + 'https://www.computeruniverse.net/de/asus-geforce-rtx3070-dual-rtx3070-8g-8-gb-enthusiast-grafikkarte', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: + 'https://www.computeruniverse.net/de/asus-geforce-rtx3070-dual-oc-dual-rtx3070-o8g-8-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: + 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3070-gaming-8-gb-enthusiast-grafikkarte', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3070-gaming-oc-8-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3070', + url: 'https://www.computeruniverse.net/de/evga-geforce-rtx3070-xc3-black', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3070', + url: + 'https://www.computeruniverse.net/de/gainward-geforce-rtx3070-phoenix-8-gb-enthusiast-grafikkarte', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3070', + url: + 'https://www.computeruniverse.net/de/gainward-geforce-rtx3070-phoenix-gs-8-gb-enthusiast-grafikkarte', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3070', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-eagle-8-gb-enthusiast-grafikkarte', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-eagle-oc-8-gb-enthusiast-grafikkarte', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3070-gaming-oc-8-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3070', + url: + 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3070-ichill-x3', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3070', + url: + 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3070-ichill-x4', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: + 'https://www.computeruniverse.net/de/msi-geforce-rtx3070-gaming-x-trio-8-gb-enthusiast-grafikkarte', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: + 'https://www.computeruniverse.net/de/msi-geforce-rtx3070-ventus-2x-oc-8-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://www.computeruniverse.net/de/msi-geforce-rtx3070-ventus-3x-oc-8-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3070', + url: + 'https://www.computeruniverse.net/de/palit-geforce-rtx3070-gaming-pro-8-gb', + }, + { + brand: 'pny', + model: 'dual fan', + series: '3070', + url: + 'https://www.computeruniverse.net/de/pny-geforce-rtx3070-m-dual-8-gb', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3070', + url: + 'https://www.computeruniverse.net/de/pny-geforce-rtx3070-xlr8-gaming-epic-x-rgb-p-8-gb-enthusiast-grafikkarte', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3070-twin-edge-oc-8-gb-oc', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3080-gaming-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3080-gaming-oc-10-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3080-gaming-tuf-rtx3080-10g-gaming-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3080-gaming-oc-tuf-rtx3080-o10g-gaming-10-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-ftw3-10-gb-high-end-grafikkarte', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-ultra-ftw3-10-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-black-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3080-xc3-ultra-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3080', + url: + 'https://www.computeruniverse.net/de/gainward-geforce-rtx3080-phoenix-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3080', + url: + 'https://www.computeruniverse.net/de/gainward-geforce-rtx3080-phoenix-gs-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.computeruniverse.net/de/gigabyte-aorus-geforce-rtx3080-master-10-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-eagle-oc-10-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-gaming-oc-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3080-vision-oc-10-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-ichill-x3-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-ichill-x4-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: + 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3080-twin-x2-oc-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'kfa2', + model: 'sg oc', + series: '3080', + url: + 'https://www.computeruniverse.net/de/kfa-geforce-rtx3080-sg-oc-10-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.computeruniverse.net/de/msi-geforce-rtx3080-gaming-x-trio-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.computeruniverse.net/de/msi-geforce-rtx3080-ventus-3x-oc-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3080', + url: + 'https://www.computeruniverse.net/de/palit-geforce-rtx3080-gamingpro-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3080', + url: + 'https://www.computeruniverse.net/de/palit-geforce-rtx3080-gamingpro-oc-10-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.computeruniverse.net/de/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-p-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.computeruniverse.net/de/pny-geforce-rtx3080-xlr8-gaming-epic-x-rgb-m-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: + 'https://www.computeruniverse.net/de/zotac-geforce-rtx3080-amp-holo-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'zotac', + model: 'amp extreme holo', + series: '3080', + url: + 'https://www.computeruniverse.net/de/zotac-geforce-rtx3080-amp-extreme-holo-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3080-trinity-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx3080-trinity-oc-10-gb-enthusiast-grafikkarte', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: + 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3090-gaming-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.computeruniverse.net/de/asus-rog-strix-geforce-rtx3090-gaming-oc-24-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3090-gaming-tuf-rtx3090-24g-gaming-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.computeruniverse.net/de/asus-tuf-geforce-rtx3090-gaming-oc-tuf-rtx3090-o24g-gaming-24-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-ftw3-gaming-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-ftw3-ultra-gaming-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-gaming-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3090', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-black-gaming-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: + 'https://www.computeruniverse.net/de/evga-geforce-rtx3090-xc3-ultra-gaming-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3090', + url: + 'https://www.computeruniverse.net/de/gainward-geforce-rtx3090-phoenix-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'gainward', + model: 'phoenix gs oc', + series: '3090', + url: + 'https://www.computeruniverse.net/de/gainward-geforce-rtx3090-phoenix-gs-24-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: + 'https://www.computeruniverse.net/de/gigabyte-aorus-geforce-rtx3090-master-24gb', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3090-eagle-oc-24-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.computeruniverse.net/de/gigabyte-geforce-rtx3090-gaming-oc-24-gb-oc', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3090', + url: + 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3090-ichill-x3-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: + 'https://www.computeruniverse.net/de/inno3d-geforce-rtx3090-ichill-x4-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'kfa2', + model: 'sg oc', + series: '3090', + url: + 'https://www.computeruniverse.net/de/kfa-geforce-rtx3090-sg-oc-24-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.computeruniverse.net/de/msi-geforce-rtx3090-gaming-x-trio-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.computeruniverse.net/de/msi-geforce-rtx3090-ventus-3x-oc-24-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3090', + url: + 'https://www.computeruniverse.net/de/palit-geforce-rtx3090-gamingpro-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3090', + url: + 'https://www.computeruniverse.net/de/palit-geforce-rtx3090-gamingpro-oc-24-gb-oc-enthusiast-grafikkarte', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3090', + url: + 'https://www.computeruniverse.net/de/pny-geforce-rtx3090-xlr8-gaming-epic-x-rgb-m-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3090', + url: + 'https://www.computeruniverse.net/de/pny-geforce-rtx3090-xlr8-gaming-epic-x-rgb-p-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx-3090-trinity-24-gb-enthusiast-grafikkarte', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.computeruniverse.net/de/amd-ryzen-5-5600x-boxed-mit-wraith-stealth-kuehler', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.computeruniverse.net/de/amd-ryzen-7-5800x-box-ohne-kuehler', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.computeruniverse.net/de/amd-ryzen-9-5900x-box-ohne-kuehler', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.computeruniverse.net/de/amd-ryzen-9-5950x-box-ohne-kuehler', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.computeruniverse.net/de/sony-playstation-5-weiss-schwarz-825gb-ssd', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.computeruniverse.net/de/sony-playstation-5-digital-edition-weiss-schwarz-825gb-ssd', + }, + ], + name: 'computeruniverse', }; diff --git a/src/store/model/coolblue.ts b/src/store/model/coolblue.ts index 983c6b7b3c..5df07e4ddb 100644 --- a/src/store/model/coolblue.ts +++ b/src/store/model/coolblue.ts @@ -1,124 +1,124 @@ import {Store} from './store'; export const Coolblue: Store = { - currency: '€', - labels: { - inStock: { - container: '.product-order', - text: ['bestel snel', 'morgen in huis'] - }, - maxPrice: { - container: '.js-order-block .sales-price__current', - euroFormat: true - }, - outOfStock: { - container: '.product-order', - text: ['binnenkort leverbaar', 'tijdelijk uitverkocht'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.coolblue.nl/product/826844/' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.coolblue.nl/product/868737/' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.coolblue.nl/product/868741/' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.coolblue.nl/product/868726/' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.coolblue.nl/product/868736/' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.coolblue.nl/product/868740/' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.coolblue.nl/product/868733/' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.coolblue.nl/product/868731/' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: 'https://www.coolblue.nl/product/868732/' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: 'https://www.coolblue.nl/product/868738/' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: 'https://www.coolblue.nl/product/868739/' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: 'https://www.coolblue.nl/product/868730/' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: 'https://www.coolblue.nl/product/868727/' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: 'https://www.coolblue.nl/product/868728/' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: 'https://www.coolblue.nl/product/868729/' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: 'https://www.coolblue.nl/product/868734/' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: 'https://www.coolblue.nl/product/868735/' - } - ], - name: 'coolblue' + currency: '€', + labels: { + inStock: { + container: '.product-order', + text: ['bestel snel', 'morgen in huis'], + }, + maxPrice: { + container: '.js-order-block .sales-price__current', + euroFormat: true, + }, + outOfStock: { + container: '.product-order', + text: ['binnenkort leverbaar', 'tijdelijk uitverkocht'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.coolblue.nl/product/826844/', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.coolblue.nl/product/868737/', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.coolblue.nl/product/868741/', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.coolblue.nl/product/868726/', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.coolblue.nl/product/868736/', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.coolblue.nl/product/868740/', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.coolblue.nl/product/868733/', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.coolblue.nl/product/868731/', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.coolblue.nl/product/868732/', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.coolblue.nl/product/868738/', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.coolblue.nl/product/868739/', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.coolblue.nl/product/868730/', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.coolblue.nl/product/868727/', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.coolblue.nl/product/868728/', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: 'https://www.coolblue.nl/product/868729/', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: 'https://www.coolblue.nl/product/868734/', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: 'https://www.coolblue.nl/product/868735/', + }, + ], + name: 'coolblue', }; diff --git a/src/store/model/coolmod.ts b/src/store/model/coolmod.ts index ea1b5fc98a..bd7171e571 100644 --- a/src/store/model/coolmod.ts +++ b/src/store/model/coolmod.ts @@ -1,295 +1,295 @@ import {Store} from './store'; export const Coolmod: Store = { - currency: '€', - labels: { - inStock: { - container: '.product-availability', - text: ['Envío'] - }, - maxPrice: { - container: '.text-price-total', - euroFormat: true - }, - outOfStock: { - container: '.product-availability', - text: ['Sin Stock'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.coolmod.com/kfa2-geforce-rtx-2060-super-1-click-oc-8gb-gddr6-tarjeta-grafica-precio' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-eagle-oc-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.coolmod.com/msi-geforce-rtx-3080-ventus-3x-oc-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.coolmod.com/asus-geforce-tuf-rtx-3080-gaming-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-gaming-oc-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.coolmod.com/msi-geforce-rtx-3080-gaming-x-trio-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.coolmod.com/asus-geforce-tuf-rtx-3080-oc-gaming-10gb-gddr6x-tarjeta-grfica-precio' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3080-oc-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3080-trinity-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3080-10gb-gddr6x-tarjeta-grfica-precio' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3080-trinity-oc-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-vision-oc-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-gaming-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.coolmod.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3080-master-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: - 'https://www.coolmod.com/evga-geforce-rtx-3080-ftw3-gaming-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.coolmod.com/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.coolmod.com/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'kfa2', - model: 'sg oc', - series: '3080', - url: - 'https://www.coolmod.com/kfa2-geforce-rtx-3080-sg-1-click-oc-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://www.coolmod.com/inno3d-geforce-rtx-3080-ichill-x4-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://www.coolmod.com/inno3d-geforce-rtx-3080-ichill-x3-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: - 'https://www.coolmod.com/inno3d-geforce-rtx-3080-twin-x2-oc-10gb-gddr6x-tarjeta-grafica-precio' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.coolmod.com/amd-ryzen-5-5600x-46ghz-socket-am4-boxed-procesador-precio' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.coolmod.com/amd-ryzen-7-5800x-47ghz-socket-am4-boxed-procesador-precio' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.coolmod.com/amd-ryzen-9-5900x-48ghz-socket-am4-boxed-procesador-precio' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.coolmod.com/amd-ryzen-9-5950x-49ghz-socket-am4-boxed-procesador-precio' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: - 'https://www.coolmod.com/asus-dual-geforce-rtx-3070-8gb-gddr6-tarjeta-grafica-precio' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: - 'https://www.coolmod.com/msi-geforce-rtx-3070-gaming-x-trio-8gb-gddr6-tarjeta-grafica-precio' - }, - { - brand: 'msi', - model: 'ventus 2x', - series: '3070', - url: - 'https://www.coolmod.com/msi-geforce-rtx-3070-ventus-2x-oc-8gb-gddr6-tarjeta-grafica-precio' - }, - { - brand: 'evga', - model: 'xc3', - series: '3070', - url: - 'https://www.coolmod.com/evga-geforce-rtx-3070-xc3-black-gaming-8gb-gddr6-tarjeta-grafica-precio' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: - 'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3070-gaming-8gb-gddr6-tarjeta-grafica-precio' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3070', - url: - 'https://www.coolmod.com/gigabyte-geforce-rtx-3070-eagle-8gb-gddr6-tarjeta-grafica-precio' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3070', - url: - 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3070-master-8gb-gddr6-tarjeta-grafica-precio' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3070', - url: - 'https://www.coolmod.com/pny-geforce-rtx-3070-xlr8-gaming-epic-x-rgb-8gb-gddr6-tarjeta-grafica-precio' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3070-twin-edge-8gb-gddr6-tarjeta-grafica-precio' - }, - { - brand: 'kfa2', - model: 'sg oc', - series: '3070', - url: - 'https://www.coolmod.com/kfa2-geforce-rtx-3070-sg-1-click-oc-8gb-gddr6-tarjeta-grafica-precio' - } - ], - name: 'coolmod' + currency: '€', + labels: { + inStock: { + container: '.product-availability', + text: ['Envío'], + }, + maxPrice: { + container: '.text-price-total', + euroFormat: true, + }, + outOfStock: { + container: '.product-availability', + text: ['Sin Stock'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.coolmod.com/kfa2-geforce-rtx-2060-super-1-click-oc-8gb-gddr6-tarjeta-grafica-precio', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-eagle-oc-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.coolmod.com/msi-geforce-rtx-3080-ventus-3x-oc-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.coolmod.com/asus-geforce-tuf-rtx-3080-gaming-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-gaming-oc-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.coolmod.com/msi-geforce-rtx-3080-gaming-x-trio-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.coolmod.com/asus-geforce-tuf-rtx-3080-oc-gaming-10gb-gddr6x-tarjeta-grfica-precio', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3080-oc-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3080-trinity-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3080-10gb-gddr6x-tarjeta-grfica-precio', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3080-trinity-oc-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-vision-oc-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.coolmod.com/evga-geforce-rtx-3080-xc3-gaming-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.coolmod.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3080-master-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: + 'https://www.coolmod.com/evga-geforce-rtx-3080-ftw3-gaming-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.coolmod.com/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.coolmod.com/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'kfa2', + model: 'sg oc', + series: '3080', + url: + 'https://www.coolmod.com/kfa2-geforce-rtx-3080-sg-1-click-oc-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://www.coolmod.com/inno3d-geforce-rtx-3080-ichill-x4-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://www.coolmod.com/inno3d-geforce-rtx-3080-ichill-x3-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: + 'https://www.coolmod.com/inno3d-geforce-rtx-3080-twin-x2-oc-10gb-gddr6x-tarjeta-grafica-precio', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.coolmod.com/amd-ryzen-5-5600x-46ghz-socket-am4-boxed-procesador-precio', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.coolmod.com/amd-ryzen-7-5800x-47ghz-socket-am4-boxed-procesador-precio', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.coolmod.com/amd-ryzen-9-5900x-48ghz-socket-am4-boxed-procesador-precio', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.coolmod.com/amd-ryzen-9-5950x-49ghz-socket-am4-boxed-procesador-precio', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: + 'https://www.coolmod.com/asus-dual-geforce-rtx-3070-8gb-gddr6-tarjeta-grafica-precio', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: + 'https://www.coolmod.com/msi-geforce-rtx-3070-gaming-x-trio-8gb-gddr6-tarjeta-grafica-precio', + }, + { + brand: 'msi', + model: 'ventus 2x', + series: '3070', + url: + 'https://www.coolmod.com/msi-geforce-rtx-3070-ventus-2x-oc-8gb-gddr6-tarjeta-grafica-precio', + }, + { + brand: 'evga', + model: 'xc3', + series: '3070', + url: + 'https://www.coolmod.com/evga-geforce-rtx-3070-xc3-black-gaming-8gb-gddr6-tarjeta-grafica-precio', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: + 'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3070-gaming-8gb-gddr6-tarjeta-grafica-precio', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3070', + url: + 'https://www.coolmod.com/gigabyte-geforce-rtx-3070-eagle-8gb-gddr6-tarjeta-grafica-precio', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3070', + url: + 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3070-master-8gb-gddr6-tarjeta-grafica-precio', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3070', + url: + 'https://www.coolmod.com/pny-geforce-rtx-3070-xlr8-gaming-epic-x-rgb-8gb-gddr6-tarjeta-grafica-precio', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3070-twin-edge-8gb-gddr6-tarjeta-grafica-precio', + }, + { + brand: 'kfa2', + model: 'sg oc', + series: '3070', + url: + 'https://www.coolmod.com/kfa2-geforce-rtx-3070-sg-1-click-oc-8gb-gddr6-tarjeta-grafica-precio', + }, + ], + name: 'coolmod', }; diff --git a/src/store/model/corsair.ts b/src/store/model/corsair.ts index 0f19717bef..e646f6a6c4 100644 --- a/src/store/model/corsair.ts +++ b/src/store/model/corsair.ts @@ -1,39 +1,39 @@ import {Store} from './store'; export const Corsair: Store = { - currency: '$', - labels: { - inStock: { - container: '.add_to_cart_form', - text: ['add to cart'] - }, - maxPrice: { - container: '.product-price', - euroFormat: false - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.corsair.com/us/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020181-NA' - }, - { - brand: 'corsair', - model: '750 platinum', - series: 'sf', - url: - 'https://www.corsair.com/us/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020186-NA' - }, - { - brand: 'corsair', - model: '600 platinum', - series: 'sf', - url: - 'https://www.corsair.com/us/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020182-NA' - } - ], - name: 'corsair' + currency: '$', + labels: { + inStock: { + container: '.add_to_cart_form', + text: ['add to cart'], + }, + maxPrice: { + container: '.product-price', + euroFormat: false, + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.corsair.com/us/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020181-NA', + }, + { + brand: 'corsair', + model: '750 platinum', + series: 'sf', + url: + 'https://www.corsair.com/us/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020186-NA', + }, + { + brand: 'corsair', + model: '600 platinum', + series: 'sf', + url: + 'https://www.corsair.com/us/en/Categories/Products/Power-Supply-Units/Power-Supply-Units-Advanced/SF-Series/p/CP-9020182-NA', + }, + ], + name: 'corsair', }; diff --git a/src/store/model/cpl.ts b/src/store/model/cpl.ts index 277892eba2..6a30fad81d 100644 --- a/src/store/model/cpl.ts +++ b/src/store/model/cpl.ts @@ -1,154 +1,154 @@ import {Store} from './store'; export const Cpl: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: - 'div.product-stock > table > tbody > tr:nth-child(1) > td.stock-value', - text: ['In Stock'] - }, - outOfStock: { - container: - 'div.product-stock > table > tbody > tr:nth-child(1) > td.stock-value', - text: ['Pre Order'] - } - }, - links: [ - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/asus-rog-strix-rtx3080-10g-gaming-graphics-card.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/asus-tuf-rtx3080-10g-gaming-graphics-card.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/asus-tuf-rtx3080-o10g-gaming-graphics-card.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/evga-geforce-rtx-3080-ftw3-gaming-10g-p5-3895-kr-10gb-gddr6x-icx3-technology-argb-led-metal-backplate-hdmi-dpx3.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/evga-geforce-rtx-3080-ftw3-ultra-gaming-10g-p5-3897-kr-10gb-gddr6x-icx3-technology-argb-led-metal-backplate-hdmi-dpx3.html' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/evga-geforce-rtx-3080-xc3-black-gaming-10g-p5-3881-kr-10gb-gddr6x-icx3-cooling-argb-led-hdmi-dpx3.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/evga-geforce-rtx-3080-xc3-gaming-10g-p5-3883-kr-10gb-gddr6x-icx3-cooling-argb-led-metal-backplate-hdmi-dpx3.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/evga-geforce-rtx-3080-xc3-ultra-gaming-10g-p5-3885-kr-10gb-gddr6x-icx3-cooling-argb-led-metal-backplate-hdmi-dpx3.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/gigabyte-gv-n3080aorus-m-10gd-aorus-geforce-rtx-3080-master-10gb.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/gigabyte-aorus-geforce-rtx-3080-xtreme-10g.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/gigabyte-geforce-rtx-3080-eagle-oc-10gb-graphics-card-gv-n3080eagle-oc-10gd.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/gigabyte-gv-n3080gaming-oc-10gd-graphics-card.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/gigabyte-gv-n3080vision-oc-10gd-geforce-rtx-3080-vision-oc-10gb.html' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/inno3d-c30803-106xx-1810va37-geforce-rtx-3080-ichill-x3-10g.html' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/inno3d-c30804-106xx-1810va36-geforce-rtx-3080-ichill-x4-10g.html' - }, - { - brand: 'leadtek', - model: 'hurricane', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/leadtek-12789000110-geforce-rtx-3080-hurricane.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/msi-rtx-3080-gaming-x-trio-10g-graphics-card.html' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/msi-geforce-rtx-3080-suprim-x-10g-graphics-card.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/msi-rtx-3080-ventus-3x-10g-oc-graphics-card.html' - } - ], - name: 'cpl' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: + 'div.product-stock > table > tbody > tr:nth-child(1) > td.stock-value', + text: ['In Stock'], + }, + outOfStock: { + container: + 'div.product-stock > table > tbody > tr:nth-child(1) > td.stock-value', + text: ['Pre Order'], + }, + }, + links: [ + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/asus-rog-strix-rtx3080-10g-gaming-graphics-card.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/asus-tuf-rtx3080-10g-gaming-graphics-card.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/asus-tuf-rtx3080-o10g-gaming-graphics-card.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/evga-geforce-rtx-3080-ftw3-gaming-10g-p5-3895-kr-10gb-gddr6x-icx3-technology-argb-led-metal-backplate-hdmi-dpx3.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/evga-geforce-rtx-3080-ftw3-ultra-gaming-10g-p5-3897-kr-10gb-gddr6x-icx3-technology-argb-led-metal-backplate-hdmi-dpx3.html', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/evga-geforce-rtx-3080-xc3-black-gaming-10g-p5-3881-kr-10gb-gddr6x-icx3-cooling-argb-led-hdmi-dpx3.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/evga-geforce-rtx-3080-xc3-gaming-10g-p5-3883-kr-10gb-gddr6x-icx3-cooling-argb-led-metal-backplate-hdmi-dpx3.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/evga-geforce-rtx-3080-xc3-ultra-gaming-10g-p5-3885-kr-10gb-gddr6x-icx3-cooling-argb-led-metal-backplate-hdmi-dpx3.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/gigabyte-gv-n3080aorus-m-10gd-aorus-geforce-rtx-3080-master-10gb.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/gigabyte-aorus-geforce-rtx-3080-xtreme-10g.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/gigabyte-geforce-rtx-3080-eagle-oc-10gb-graphics-card-gv-n3080eagle-oc-10gd.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/gigabyte-gv-n3080gaming-oc-10gd-graphics-card.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/gigabyte-gv-n3080vision-oc-10gd-geforce-rtx-3080-vision-oc-10gb.html', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/inno3d-c30803-106xx-1810va37-geforce-rtx-3080-ichill-x3-10g.html', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/inno3d-c30804-106xx-1810va36-geforce-rtx-3080-ichill-x4-10g.html', + }, + { + brand: 'leadtek', + model: 'hurricane', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/leadtek-12789000110-geforce-rtx-3080-hurricane.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/msi-rtx-3080-gaming-x-trio-10g-graphics-card.html', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/msi-geforce-rtx-3080-suprim-x-10g-graphics-card.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://cplonline.com.au/graphics-cards/geforce-rtx-3080/msi-rtx-3080-ventus-3x-10g-oc-graphics-card.html', + }, + ], + name: 'cpl', }; diff --git a/src/store/model/currys.ts b/src/store/model/currys.ts index c0cf405c51..6b67c6f637 100644 --- a/src/store/model/currys.ts +++ b/src/store/model/currys.ts @@ -2,117 +2,116 @@ import {Store} from './store'; import {getProductLinksBuilder} from './helpers/card'; export const Currys: Store = { - currency: '£', - labels: { - inStock: { - container: '#product-actions button', - text: ['add to basket'] - }, - maxPrice: { - container: - '#product-actions span[class*="ProductPriceBlock__Price"]', - euroFormat: false // Note: Currys uses non-euroFromat as price seperator - }, - outOfStock: { - container: '#product-actions .unavailable', - text: ['not available for delivery'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/graphics-cards/msi-geforce-rtx-2060-8-gb-super-ventus-gp-oc-graphics-card-10196803-pdt.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-5-5600x-processor-10216691-pdt.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-7-5800x-processor-10216690-pdt.html' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-9-5900x-processor-10216689-pdt.html' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-9-5950x-processor-10216688-pdt.html' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.currys.co.uk/gbuk/gaming/console-gaming/consoles/sony-playstation-5-825-gb-10203370-pdt.html' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.currys.co.uk/gbuk/playstation-5-sony-1714-commercial.html' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.currys.co.uk/gbuk/gaming/console-gaming/consoles/microsoft-xbox-series-x-1-tb-10203371-pdt.html' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: - 'https://www.currys.co.uk/gbuk/gaming/console-gaming/consoles/microsoft-xbox-series-s-512-gb-ssd-10205195-pdt.html' - } - ], - linksBuilder: { - builder: getProductLinksBuilder({ - productsSelector: '.resultList .product', - sitePrefix: 'https://www.currys.co.uk', - titleSelector: '.productTitle', - urlSelector: 'a[href]' - }), - urls: [ - { - series: '3060ti', - url: - 'https://www.currys.co.uk/gbuk/rtx-3060-ti/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313952/xx-criteria.html' - }, - { - series: '3070', - url: - 'https://www.currys.co.uk/gbuk/rtx-3070/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313849/xx-criteria.html' - }, - { - series: '3080', - url: - 'https://www.currys.co.uk/gbuk/rtx-3080/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313767/xx-criteria.html' - }, - { - series: '3090', - url: - 'https://www.currys.co.uk/gbuk/rtx-3090/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313725/xx-criteria.html' - } - ] - }, - name: 'currys', - waitUntil: 'domcontentloaded' + currency: '£', + labels: { + inStock: { + container: '#product-actions button', + text: ['add to basket'], + }, + maxPrice: { + container: '#product-actions span[class*="ProductPriceBlock__Price"]', + euroFormat: false, // Note: Currys uses non-euroFromat as price seperator + }, + outOfStock: { + container: '#product-actions .unavailable', + text: ['not available for delivery'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/graphics-cards/msi-geforce-rtx-2060-8-gb-super-ventus-gp-oc-graphics-card-10196803-pdt.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-5-5600x-processor-10216691-pdt.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-7-5800x-processor-10216690-pdt.html', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-9-5900x-processor-10216689-pdt.html', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.currys.co.uk/gbuk/computing-accessories/components-upgrades/processors/amd-ryzen-9-5950x-processor-10216688-pdt.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.currys.co.uk/gbuk/gaming/console-gaming/consoles/sony-playstation-5-825-gb-10203370-pdt.html', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.currys.co.uk/gbuk/playstation-5-sony-1714-commercial.html', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.currys.co.uk/gbuk/gaming/console-gaming/consoles/microsoft-xbox-series-x-1-tb-10203371-pdt.html', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: + 'https://www.currys.co.uk/gbuk/gaming/console-gaming/consoles/microsoft-xbox-series-s-512-gb-ssd-10205195-pdt.html', + }, + ], + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '.resultList .product', + sitePrefix: 'https://www.currys.co.uk', + titleSelector: '.productTitle', + urlSelector: 'a[href]', + }), + urls: [ + { + series: '3060ti', + url: + 'https://www.currys.co.uk/gbuk/rtx-3060-ti/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313952/xx-criteria.html', + }, + { + series: '3070', + url: + 'https://www.currys.co.uk/gbuk/rtx-3070/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313849/xx-criteria.html', + }, + { + series: '3080', + url: + 'https://www.currys.co.uk/gbuk/rtx-3080/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313767/xx-criteria.html', + }, + { + series: '3090', + url: + 'https://www.currys.co.uk/gbuk/rtx-3090/components-upgrades/graphics-cards/324_3091_30343_xx_ba00013562-bv00313725/xx-criteria.html', + }, + ], + }, + name: 'currys', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/cyberport.ts b/src/store/model/cyberport.ts index eb28185088..363767cb81 100644 --- a/src/store/model/cyberport.ts +++ b/src/store/model/cyberport.ts @@ -1,124 +1,124 @@ import {Store} from './store'; export const Cyberport: Store = { - currency: '€', - labels: { - inStock: { - container: '.tooltipAvailabilityParent', - text: ['sofort verfügbar'] - }, - maxPrice: { - container: '#productDetailOverview .price', - euroFormat: true - }, - outOfStock: { - container: '.tooltipAvailabilityParent', - text: ['noch nicht verfügbar'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.cyberport.de?DEEP=2E12-3KL' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: 'https://www.cyberport.de?DEEP=2E07-51S' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.cyberport.de?DEEP=2E07-51T' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.cyberport.de?DEEP=2E07-51L' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.cyberport.de?DEEP=2E07-51N' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://www.cyberport.de?DEEP=2E21-537' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.cyberport.de?DEEP=2E21-52Y' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: 'https://www.cyberport.de?DEEP=2e21-532' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.cyberport.de?DEEP=2E21-52Z' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.cyberport.de?DEEP=2E12-3L6' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.cyberport.de?DEEP=2E12-3L7c' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: 'https://www.cyberport.de?DEEP=2E13-1H4' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: 'https://www.cyberport.de?DEEP=2E13-1H7' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.cyberport.de?DEEP=2001-71p' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.cyberport.de/?DEEP=2001-71n' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.cyberport.de?DEEP=2001-71m' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.cyberport.de?DEEP=2001-71l' - } - ], - name: 'cyberport' + currency: '€', + labels: { + inStock: { + container: '.tooltipAvailabilityParent', + text: ['sofort verfügbar'], + }, + maxPrice: { + container: '#productDetailOverview .price', + euroFormat: true, + }, + outOfStock: { + container: '.tooltipAvailabilityParent', + text: ['noch nicht verfügbar'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.cyberport.de?DEEP=2E12-3KL', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E07-51S', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E07-51T', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E07-51L', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E07-51N', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E21-537', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E21-52Y', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.cyberport.de?DEEP=2e21-532', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E21-52Z', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E12-3L6', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E12-3L7c', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E13-1H4', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: 'https://www.cyberport.de?DEEP=2E13-1H7', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.cyberport.de?DEEP=2001-71p', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.cyberport.de/?DEEP=2001-71n', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.cyberport.de?DEEP=2001-71m', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.cyberport.de?DEEP=2001-71l', + }, + ], + name: 'cyberport', }; diff --git a/src/store/model/dcomp.ts b/src/store/model/dcomp.ts index 095b148ac6..6c8d66a369 100644 --- a/src/store/model/dcomp.ts +++ b/src/store/model/dcomp.ts @@ -1,221 +1,221 @@ import {Store} from './store'; export const Dcomp: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: '#cart-info > button.btn.addToCart', - text: ['Add to', ''] - }, - maxPrice: { - container: '#prodprice', - euroFormat: false - }, - outOfStock: { - container: '#cart-info > button.btn.notifyMe', - text: ['Notify Me'] - } - }, - links: [ - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3172' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3205' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3206' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3183' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3310' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3307' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3308' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3136' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3135' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3166' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3199' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3306' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://dcomp.com.au/productdetail/3141' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3226' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3281' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3309' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3263' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3388' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3417' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3234' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3158' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3235' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3168' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3167' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3090', - url: 'https://dcomp.com.au/productdetail/3300' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800', - url: 'https://dcomp.com.au/productdetail/3358' - }, - { - brand: 'msi', - model: 'amd reference', - series: 'rx6800', - url: 'https://dcomp.com.au/productdetail/3386' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800xt', - url: 'https://dcomp.com.au/productdetail/3421' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: 'rx6800xt', - url: 'https://dcomp.com.au/productdetail/3387' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6900xt', - url: 'https://dcomp.com.au/productdetail/3422' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://dcomp.com.au/productdetail/3270' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://dcomp.com.au/productdetail/3289' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: 'https://dcomp.com.au/productdetail/3265' - } - ], - name: 'dcomp' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: '#cart-info > button.btn.addToCart', + text: ['Add to', ''], + }, + maxPrice: { + container: '#prodprice', + euroFormat: false, + }, + outOfStock: { + container: '#cart-info > button.btn.notifyMe', + text: ['Notify Me'], + }, + }, + links: [ + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3172', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3205', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3206', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3183', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3310', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3307', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3308', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3136', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3135', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3166', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3199', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3306', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://dcomp.com.au/productdetail/3141', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3226', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3281', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3309', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3263', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3388', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3417', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3234', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3158', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3235', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3168', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3167', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3090', + url: 'https://dcomp.com.au/productdetail/3300', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800', + url: 'https://dcomp.com.au/productdetail/3358', + }, + { + brand: 'msi', + model: 'amd reference', + series: 'rx6800', + url: 'https://dcomp.com.au/productdetail/3386', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800xt', + url: 'https://dcomp.com.au/productdetail/3421', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: 'rx6800xt', + url: 'https://dcomp.com.au/productdetail/3387', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6900xt', + url: 'https://dcomp.com.au/productdetail/3422', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://dcomp.com.au/productdetail/3270', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://dcomp.com.au/productdetail/3289', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: 'https://dcomp.com.au/productdetail/3265', + }, + ], + name: 'dcomp', }; diff --git a/src/store/model/drako.ts b/src/store/model/drako.ts index e6eea4a0df..889a3e4c82 100644 --- a/src/store/model/drako.ts +++ b/src/store/model/drako.ts @@ -1,274 +1,273 @@ import {Store} from './store'; export const Drako: Store = { - currency: '€', - labels: { - inStock: [ - { - container: - '#bottom_left_panel > div:nth-child(9) > div:nth-child(2)', - text: ['ordinabile'] - } - ], - maxPrice: { - container: '.price', - euroFormat: true - } - }, - links: [ - { - brand: 'test:brand', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=22674&action=add_product', - model: 'test:model', - series: 'test:series', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=22674' - }, - { - brand: 'kfa2', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24303&action=add_product', - model: 'sg', - series: '3090', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24303' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24286&action=add_product', - model: 'gaming oc', - series: '3090', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24286' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24722&action=add_product', - model: 'strix oc', - series: '3090', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24722' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24288&action=add_product', - model: 'strix', - series: '3090', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24288' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24291&action=add_product', - model: 'tuf oc', - series: '3090', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24291' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24680&action=add_product', - model: 'ekwb', - series: '3090', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24680' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24290&action=add_product', - model: 'tuf', - series: '3090', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24290' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24666&action=add_product', - model: 'ekwb', - series: '3080', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24666' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24289&action=add_product', - model: 'strix oc', - series: '3080', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24289' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24723&action=add_product', - model: 'strix white', - series: '3080', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24723' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24287&action=add_product', - model: 'strix', - series: '3080', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24287' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24293&action=add_product', - model: 'tuf oc', - series: '3080', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24293' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24292&action=add_product', - model: 'tuf', - series: '3080', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24292' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24420&action=add_product', - model: 'dual', - series: '3070', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24420' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24422&action=add_product', - model: 'strix', - series: '3070', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24422' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24721&action=add_product', - model: 'tuf', - series: '3070', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24721' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24421&action=add_product', - model: 'tuf oc', - series: '3070', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24421' - }, - { - brand: 'gigabyte', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24426&action=add_product', - model: 'aorus master', - series: '3070', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24426' - }, - { - brand: 'gigabyte', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24423&action=add_product', - model: 'eagle oc', - series: '3070', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24423' - }, - { - brand: 'gigabyte', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24425&action=add_product', - model: 'gaming oc', - series: '3070', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24425' - }, - { - brand: 'gigabyte', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24424&action=add_product', - model: 'eagle', - series: '3070', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24424' - }, - { - brand: 'kfa2', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24292&action=add_product', - model: 'sg', - series: '3070', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24475' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24604&action=add_product', - model: 'strix', - series: 'rx6800', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24604' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24605&action=add_product', - model: 'tuf', - series: 'rx6800', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24605' - }, - { - brand: 'asus', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24606&action=add_product', - model: 'tuf oc', - series: 'rx6800', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24606' - }, - { - brand: 'gigabyte', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24606&action=add_product', - model: 'amd reference', - series: 'rx6800', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24606' - }, - { - brand: 'amd', - cartUrl: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24456&action=add_product', - model: '5600x', - series: 'ryzen5600', - url: - 'http://www.drako.it/drako_catalog/product_info.php?products_id=24456' - } - ], - name: 'drako', - successStatusCodes: [[0, 399], 404] + currency: '€', + labels: { + inStock: [ + { + container: '#bottom_left_panel > div:nth-child(9) > div:nth-child(2)', + text: ['ordinabile'], + }, + ], + maxPrice: { + container: '.price', + euroFormat: true, + }, + }, + links: [ + { + brand: 'test:brand', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=22674&action=add_product', + model: 'test:model', + series: 'test:series', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=22674', + }, + { + brand: 'kfa2', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24303&action=add_product', + model: 'sg', + series: '3090', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24303', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24286&action=add_product', + model: 'gaming oc', + series: '3090', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24286', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24722&action=add_product', + model: 'strix oc', + series: '3090', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24722', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24288&action=add_product', + model: 'strix', + series: '3090', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24288', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24291&action=add_product', + model: 'tuf oc', + series: '3090', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24291', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24680&action=add_product', + model: 'ekwb', + series: '3090', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24680', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24290&action=add_product', + model: 'tuf', + series: '3090', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24290', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24666&action=add_product', + model: 'ekwb', + series: '3080', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24666', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24289&action=add_product', + model: 'strix oc', + series: '3080', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24289', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24723&action=add_product', + model: 'strix white', + series: '3080', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24723', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24287&action=add_product', + model: 'strix', + series: '3080', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24287', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24293&action=add_product', + model: 'tuf oc', + series: '3080', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24293', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24292&action=add_product', + model: 'tuf', + series: '3080', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24292', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24420&action=add_product', + model: 'dual', + series: '3070', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24420', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24422&action=add_product', + model: 'strix', + series: '3070', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24422', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24721&action=add_product', + model: 'tuf', + series: '3070', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24721', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24421&action=add_product', + model: 'tuf oc', + series: '3070', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24421', + }, + { + brand: 'gigabyte', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24426&action=add_product', + model: 'aorus master', + series: '3070', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24426', + }, + { + brand: 'gigabyte', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24423&action=add_product', + model: 'eagle oc', + series: '3070', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24423', + }, + { + brand: 'gigabyte', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24425&action=add_product', + model: 'gaming oc', + series: '3070', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24425', + }, + { + brand: 'gigabyte', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24424&action=add_product', + model: 'eagle', + series: '3070', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24424', + }, + { + brand: 'kfa2', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24292&action=add_product', + model: 'sg', + series: '3070', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24475', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24604&action=add_product', + model: 'strix', + series: 'rx6800', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24604', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24605&action=add_product', + model: 'tuf', + series: 'rx6800', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24605', + }, + { + brand: 'asus', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24606&action=add_product', + model: 'tuf oc', + series: 'rx6800', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24606', + }, + { + brand: 'gigabyte', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24606&action=add_product', + model: 'amd reference', + series: 'rx6800', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24606', + }, + { + brand: 'amd', + cartUrl: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24456&action=add_product', + model: '5600x', + series: 'ryzen5600', + url: + 'http://www.drako.it/drako_catalog/product_info.php?products_id=24456', + }, + ], + name: 'drako', + successStatusCodes: [[0, 399], 404], }; diff --git a/src/store/model/ebgames.ts b/src/store/model/ebgames.ts index d41516b979..974a2a420f 100644 --- a/src/store/model/ebgames.ts +++ b/src/store/model/ebgames.ts @@ -1,50 +1,49 @@ import {Store} from './store'; export const EbGames: Store = { - currency: '$', - labels: { - maxPrice: { - container: '.singleVariantText .prodPriceCont' - }, - outOfStock: { - container: '#btnAddToCart[style*="display:none;"] ', - text: ['add to cart'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.ebgames.ca/Switch/Games/727918/mario-kart-8-deluxe' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.ebgames.ca/PS5/Games/877522' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.ebgames.ca/PS5/Games/877523' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.ebgames.ca/Xbox%20Series%20X/Games/877779/xbox-series-x' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: - 'https://www.ebgames.ca/Xbox%20Series%20X/Games/877780/xbox-series-s' - } - ], - name: 'ebgames' + currency: '$', + labels: { + maxPrice: { + container: '.singleVariantText .prodPriceCont', + }, + outOfStock: { + container: '#btnAddToCart[style*="display:none;"] ', + text: ['add to cart'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.ebgames.ca/Switch/Games/727918/mario-kart-8-deluxe', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.ebgames.ca/PS5/Games/877522', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.ebgames.ca/PS5/Games/877523', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.ebgames.ca/Xbox%20Series%20X/Games/877779/xbox-series-x', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: + 'https://www.ebgames.ca/Xbox%20Series%20X/Games/877780/xbox-series-s', + }, + ], + name: 'ebgames', }; diff --git a/src/store/model/ebuyer.ts b/src/store/model/ebuyer.ts index 46d2901bf5..8a244b2017 100644 --- a/src/store/model/ebuyer.ts +++ b/src/store/model/ebuyer.ts @@ -2,131 +2,130 @@ import {Store} from './store'; import {getProductLinksBuilder} from './helpers/card'; export const Ebuyer: Store = { - currency: '£', - labels: { - inStock: { - container: '.purchase-info__cta', - text: ['add to basket', 'pre-order'] - }, - maxPrice: { - container: '.purchase-info__price .price', - euroFormat: false // Note: ebuyer uses non-euroFromat as price seperator - }, - outOfStock: { - container: '.purchase-info', - text: ['coming soon'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.ebuyer.com/874209-gigabyte-geforce-rtx-2060-windforce-6gb-oc-graphics-card-gv-n2060wf2oc-6gd-v2' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.ebuyer.com/1133940-sony-playstation-5-console-cfi-1016a' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.ebuyer.com/1133942-sony-playstation-5-digital-edition-cfi-1016b-' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.ebuyer.com/1133948-xbox-series-x-console-rrt-00007' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: - 'https://www.ebuyer.com/1133947-xbox-series-s-all-digital-console-rrs-00007' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.ebuyer.com/1126988-amd-ryzen-5-5600x-am4-processor-100-100000065box' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.ebuyer.com/1126987-amd-ryzen-7-5800x-am4-processor-100-100000063wof' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.ebuyer.com/1126986-amd-ryzen-9-5900x-am4-processor-100-100000061wof' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.ebuyer.com/1126985-amd-ryzen-9-5950x-am4-processor-100-100000059wof' - } - ], - linksBuilder: { - builder: getProductLinksBuilder({ - productsSelector: '#list-view .listing-product', - sitePrefix: 'https://www.ebuyer.com', - titleSelector: '.listing-product-title', - urlSelector: 'a[href]' - }), - urls: [ - { - series: 'rx6800', - url: - 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-AMD/subcat/AMD-RX-6800' - }, - { - series: 'rx6800xt', - url: - 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-AMD/subcat/AMD-RX-6800-XT' - }, - { - series: 'rx6900xt', - url: - 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-AMD/subcat/AMD-RX-6900-XT' - }, - { - series: '3060ti', - url: - 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3060-Ti' - }, - { - series: '3070', - url: - 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3070' - }, - { - series: '3080', - url: - 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3080' - }, - { - series: '3090', - url: - 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3090' - } - ] - }, - name: 'ebuyer', - waitUntil: 'domcontentloaded' + currency: '£', + labels: { + inStock: { + container: '.purchase-info__cta', + text: ['add to basket', 'pre-order'], + }, + maxPrice: { + container: '.purchase-info__price .price', + euroFormat: false, // Note: ebuyer uses non-euroFromat as price seperator + }, + outOfStock: { + container: '.purchase-info', + text: ['coming soon'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.ebuyer.com/874209-gigabyte-geforce-rtx-2060-windforce-6gb-oc-graphics-card-gv-n2060wf2oc-6gd-v2', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.ebuyer.com/1133940-sony-playstation-5-console-cfi-1016a', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.ebuyer.com/1133942-sony-playstation-5-digital-edition-cfi-1016b-', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.ebuyer.com/1133948-xbox-series-x-console-rrt-00007', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: + 'https://www.ebuyer.com/1133947-xbox-series-s-all-digital-console-rrs-00007', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.ebuyer.com/1126988-amd-ryzen-5-5600x-am4-processor-100-100000065box', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.ebuyer.com/1126987-amd-ryzen-7-5800x-am4-processor-100-100000063wof', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.ebuyer.com/1126986-amd-ryzen-9-5900x-am4-processor-100-100000061wof', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.ebuyer.com/1126985-amd-ryzen-9-5950x-am4-processor-100-100000059wof', + }, + ], + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '#list-view .listing-product', + sitePrefix: 'https://www.ebuyer.com', + titleSelector: '.listing-product-title', + urlSelector: 'a[href]', + }), + urls: [ + { + series: 'rx6800', + url: + 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-AMD/subcat/AMD-RX-6800', + }, + { + series: 'rx6800xt', + url: + 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-AMD/subcat/AMD-RX-6800-XT', + }, + { + series: 'rx6900xt', + url: + 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-AMD/subcat/AMD-RX-6900-XT', + }, + { + series: '3060ti', + url: + 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3060-Ti', + }, + { + series: '3070', + url: + 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3070', + }, + { + series: '3080', + url: + 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3080', + }, + { + series: '3090', + url: + 'https://www.ebuyer.com/store/Components/cat/Graphics-Cards-Nvidia/subcat/GeForce-RTX-3090', + }, + ], + }, + name: 'ebuyer', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/elcorteingles.ts b/src/store/model/elcorteingles.ts index 5858c6e164..bf4a4fdd63 100644 --- a/src/store/model/elcorteingles.ts +++ b/src/store/model/elcorteingles.ts @@ -1,71 +1,70 @@ import {Store} from './store'; export const Elcorteingles: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '€', - labels: { - // Captcha: { - // container: 'body', - // text: [ - // 'geben sie die unten angezeigten zeichen ein', - // 'geben sie die zeichen unten ein' - // ] - // }, - inStock: [ - { - container: - '.product_detail-purchase.mb-2.c12 .js-add-cart-text', - text: ['a la cesta'] - } - ], - maxPrice: { - container: '.product_detail-buy-price-container .price._big', - euroFormat: true - }, - outOfStock: [ - { - container: - '.c12.mt-2.product_detail-add_to_cart.one_click_enabled .c12.button._normal.js-buy-button._sold_out.view-page._disabled', - text: ['Agotado'] - }, - { - container: - '.product_detail-purchase.mb-2.c12 .c12.button._normal.js-buy-button._sold_out.view-page._disabled', - text: ['No disponible'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.elcorteingles.es/moda/A26324406/' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.elcorteingles.es/videojuegos/A37046604' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.elcorteingles.es/videojuegos/A37046605' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.elcorteingles.es/videojuegos/A37047078' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.elcorteingles.es/videojuegos/A37047080' - } - ], - name: 'elcorteingles' + backoffStatusCodes: [403, 429, 503], + currency: '€', + labels: { + // Captcha: { + // container: 'body', + // text: [ + // 'geben sie die unten angezeigten zeichen ein', + // 'geben sie die zeichen unten ein' + // ] + // }, + inStock: [ + { + container: '.product_detail-purchase.mb-2.c12 .js-add-cart-text', + text: ['a la cesta'], + }, + ], + maxPrice: { + container: '.product_detail-buy-price-container .price._big', + euroFormat: true, + }, + outOfStock: [ + { + container: + '.c12.mt-2.product_detail-add_to_cart.one_click_enabled .c12.button._normal.js-buy-button._sold_out.view-page._disabled', + text: ['Agotado'], + }, + { + container: + '.product_detail-purchase.mb-2.c12 .c12.button._normal.js-buy-button._sold_out.view-page._disabled', + text: ['No disponible'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.elcorteingles.es/moda/A26324406/', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.elcorteingles.es/videojuegos/A37046604', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.elcorteingles.es/videojuegos/A37046605', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.elcorteingles.es/videojuegos/A37047078', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.elcorteingles.es/videojuegos/A37047080', + }, + ], + name: 'elcorteingles', }; diff --git a/src/store/model/eprice.ts b/src/store/model/eprice.ts index 85a145152e..0f1ee0cf73 100644 --- a/src/store/model/eprice.ts +++ b/src/store/model/eprice.ts @@ -1,88 +1,88 @@ import {Store} from './store'; export const Eprice: Store = { - currency: '€', - labels: { - inStock: { - container: '.topSideDx', - text: ['disponibile', 'pochi pezzi'] - }, - maxPrice: { - container: '#PrezzoClasic span[class*="big"]', - euroFormat: true - }, - outOfStock: { - container: '.dispo', - text: ['ESAURITO O FUORI PROD.'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.eprice.it/cuffie-con-microfono-APPLE/d-9030906' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.eprice.it/schede-video-MSI/d-14039974' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: 'https://www.eprice.it/schede-video-ASUS/d-14042082' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: 'https://www.eprice.it/schede-video-ASUS/d-14039878' - }, - { - brand: 'asus', - model: 'tuf', - series: '3070', - url: 'https://www.eprice.it/schede-video-ASUS/d-14039876' - }, - { - brand: 'msi', - model: 'gaming', - series: '3070', - url: 'https://www.eprice.it/schede-video-MSI/d-14039972' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.eprice.it/schede-video-MSI/d-14039974' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: 'https://www.eprice.it/schede-video-MSI/d-14039973' - }, - { - brand: 'zotac', - model: 'gaming', - series: '3070', - url: 'https://www.eprice.it/schede-video-ZOTAC/d-13979806' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.eprice.it/playstation-5-SONY/d-13981612' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.eprice.it/playstation-5-SONY/d-13981613' - } - ], - name: 'eprice' + currency: '€', + labels: { + inStock: { + container: '.topSideDx', + text: ['disponibile', 'pochi pezzi'], + }, + maxPrice: { + container: '#PrezzoClasic span[class*="big"]', + euroFormat: true, + }, + outOfStock: { + container: '.dispo', + text: ['ESAURITO O FUORI PROD.'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.eprice.it/cuffie-con-microfono-APPLE/d-9030906', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.eprice.it/schede-video-MSI/d-14039974', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: 'https://www.eprice.it/schede-video-ASUS/d-14042082', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: 'https://www.eprice.it/schede-video-ASUS/d-14039878', + }, + { + brand: 'asus', + model: 'tuf', + series: '3070', + url: 'https://www.eprice.it/schede-video-ASUS/d-14039876', + }, + { + brand: 'msi', + model: 'gaming', + series: '3070', + url: 'https://www.eprice.it/schede-video-MSI/d-14039972', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.eprice.it/schede-video-MSI/d-14039974', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.eprice.it/schede-video-MSI/d-14039973', + }, + { + brand: 'zotac', + model: 'gaming', + series: '3070', + url: 'https://www.eprice.it/schede-video-ZOTAC/d-13979806', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.eprice.it/playstation-5-SONY/d-13981612', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.eprice.it/playstation-5-SONY/d-13981613', + }, + ], + name: 'eprice', }; diff --git a/src/store/model/equippr.ts b/src/store/model/equippr.ts index 428d076899..315d69755f 100644 --- a/src/store/model/equippr.ts +++ b/src/store/model/equippr.ts @@ -1,106 +1,106 @@ import {Store} from './store'; export const Equippr: Store = { - currency: '€', - labels: { - inStock: { - container: 'buybox--button-container', - text: ['in den warenkorb'] - }, - maxPrice: { - container: '.product--price', - euroFormat: true - }, - outOfStock: { - container: '.product--buybox', - text: ['bald verfügbar'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.equippr.de/amd-ryzen-5-2600x-6x-3-60-ghz-box-yd260xbcafbox-2000034.html' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3060ti', - url: - 'https://www.equippr.de/asus-geforce-rtx-3060-ti-dual-8-gb-gddr6-retail-2066580.html' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3060ti', - url: - 'https://www.equippr.de/inno3d-geforce-rtx-3060-ti-ichill-x3-8-gb-gddr6-2066593.html' - }, - { - brand: 'gigabyte', - model: 'aorus', - series: '3060ti', - url: - 'https://www.equippr.de/gigabyte-geforce-rtx-3060-ti-aorus-8-gb-gddr6-retail-2066569.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3060ti', - url: - 'https://www.equippr.de/msi-geforce-rtx-3060-ti-gaming-x-trio-8-gb-gddr6-retail-2066573.html' - }, - { - brand: 'msi', - model: 'ventus 2x', - series: '3060ti', - url: - 'https://www.equippr.de/msi-geforce-rtx-3060-ti-ventus-2x-oc-8-gb-gddr6-retail-2066574.html' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.equippr.de/zotac-geforce-rtx-3070-twin-edge-oc-8-gb-gddr6-retail-2064130.html' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://www.equippr.de/zotac-geforce-rtx-3070-twin-edge-8-gb-gddr6-retail-2060897.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3070', - url: - 'https://www.equippr.de/gigabyte-geforce-rtx-3070-eagle-8-gb-gddr6-retail-2063884.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: - 'https://www.equippr.de/gigabyte-geforce-rtx-3070-eagle-oc-8-gb-gddr6-retail-2063882.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.equippr.de/evga-geforce-rtx-3080-xc3-ultra-gaming-10-gb-gddr6x-retail-2061393.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.equippr.de/evga-geforce-rtx-3080-xc3-gaming-10-gb-gddr6x-retail-2061391.html' - } - ], - name: 'equippr' + currency: '€', + labels: { + inStock: { + container: 'buybox--button-container', + text: ['in den warenkorb'], + }, + maxPrice: { + container: '.product--price', + euroFormat: true, + }, + outOfStock: { + container: '.product--buybox', + text: ['bald verfügbar'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.equippr.de/amd-ryzen-5-2600x-6x-3-60-ghz-box-yd260xbcafbox-2000034.html', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3060ti', + url: + 'https://www.equippr.de/asus-geforce-rtx-3060-ti-dual-8-gb-gddr6-retail-2066580.html', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3060ti', + url: + 'https://www.equippr.de/inno3d-geforce-rtx-3060-ti-ichill-x3-8-gb-gddr6-2066593.html', + }, + { + brand: 'gigabyte', + model: 'aorus', + series: '3060ti', + url: + 'https://www.equippr.de/gigabyte-geforce-rtx-3060-ti-aorus-8-gb-gddr6-retail-2066569.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060ti', + url: + 'https://www.equippr.de/msi-geforce-rtx-3060-ti-gaming-x-trio-8-gb-gddr6-retail-2066573.html', + }, + { + brand: 'msi', + model: 'ventus 2x', + series: '3060ti', + url: + 'https://www.equippr.de/msi-geforce-rtx-3060-ti-ventus-2x-oc-8-gb-gddr6-retail-2066574.html', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.equippr.de/zotac-geforce-rtx-3070-twin-edge-oc-8-gb-gddr6-retail-2064130.html', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://www.equippr.de/zotac-geforce-rtx-3070-twin-edge-8-gb-gddr6-retail-2060897.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3070', + url: + 'https://www.equippr.de/gigabyte-geforce-rtx-3070-eagle-8-gb-gddr6-retail-2063884.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: + 'https://www.equippr.de/gigabyte-geforce-rtx-3070-eagle-oc-8-gb-gddr6-retail-2063882.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.equippr.de/evga-geforce-rtx-3080-xc3-ultra-gaming-10-gb-gddr6x-retail-2061393.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.equippr.de/evga-geforce-rtx-3080-xc3-gaming-10-gb-gddr6x-retail-2061391.html', + }, + ], + name: 'equippr', }; diff --git a/src/store/model/euronics-de.ts b/src/store/model/euronics-de.ts index b0d06f4723..08195b7cac 100644 --- a/src/store/model/euronics-de.ts +++ b/src/store/model/euronics-de.ts @@ -1,61 +1,61 @@ import {Store} from './store'; export const EuronicsDE: Store = { - currency: '€', - labels: { - inStock: { - container: '.buy-btn--cart-text', - text: ['Warenkorb'] - }, - maxPrice: { - container: '.price--content', - euroFormat: true - }, - outOfStock: { - container: - '.product--buybox .alert.is--error.is--rounded .alert--content', - text: [ - 'Artikel steht derzeit nicht zur Verfügung', - 'Morgen im Laufe des Morgens und nur online unter' - ] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.euronics.de/telefon-und-navigation/festnetz/schnurlose-telefone/kx-tg6721gb-schnurlostelefon-mit-anrufbeantworter-schwarz-4051168442801' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: - 'https://www.euronics.de/spiele-und-konsolen-film-und-musik/spiele-und-konsolen/xbox-series-x/spielekonsole/xbox-series-s-512gb-konsole-4061856838076' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.euronics.de/spiele-und-konsolen-film-und-musik/spiele-und-konsolen/xbox-series-x/spielekonsole/xbox-series-x-1tb-konsole-4061856838045' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.euronics.de/spiele-und-konsolen-film-und-musik/spiele-und-konsolen/playstation-5/spielekonsole/playstation-5-digital-edition-konsole-4061856837833' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.euronics.de/spiele-und-konsolen-film-und-musik/spiele-und-konsolen/playstation-5/spielekonsole/playstation-5-konsole-4061856837826' - } - ], - name: 'euronics-de' + currency: '€', + labels: { + inStock: { + container: '.buy-btn--cart-text', + text: ['Warenkorb'], + }, + maxPrice: { + container: '.price--content', + euroFormat: true, + }, + outOfStock: { + container: + '.product--buybox .alert.is--error.is--rounded .alert--content', + text: [ + 'Artikel steht derzeit nicht zur Verfügung', + 'Morgen im Laufe des Morgens und nur online unter', + ], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.euronics.de/telefon-und-navigation/festnetz/schnurlose-telefone/kx-tg6721gb-schnurlostelefon-mit-anrufbeantworter-schwarz-4051168442801', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: + 'https://www.euronics.de/spiele-und-konsolen-film-und-musik/spiele-und-konsolen/xbox-series-x/spielekonsole/xbox-series-s-512gb-konsole-4061856838076', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.euronics.de/spiele-und-konsolen-film-und-musik/spiele-und-konsolen/xbox-series-x/spielekonsole/xbox-series-x-1tb-konsole-4061856838045', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.euronics.de/spiele-und-konsolen-film-und-musik/spiele-und-konsolen/playstation-5/spielekonsole/playstation-5-digital-edition-konsole-4061856837833', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.euronics.de/spiele-und-konsolen-film-und-musik/spiele-und-konsolen/playstation-5/spielekonsole/playstation-5-konsole-4061856837826', + }, + ], + name: 'euronics-de', }; diff --git a/src/store/model/euronics.ts b/src/store/model/euronics.ts index 54f71ff5c8..2a66e40da3 100644 --- a/src/store/model/euronics.ts +++ b/src/store/model/euronics.ts @@ -1,42 +1,42 @@ import {Store} from './store'; export const Euronics: Store = { - currency: '€', - labels: { - inStock: { - container: '.purchaseButtonsWidth', - text: ['Aggiungi al carrello'] - } - }, - links: [ - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.euronics.it/console/sony-computer/playstation-5/eProd202008906' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.euronics.it/console/sony-computer/playstation-5-digital-edition/eProd202008907' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.euronics.it/console/microsoft/xbox-series-x-1tb-it-italy-sxto/eProd202008981' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: - 'https://www.euronics.it/console/microsoft/xbox-series-s-512gb-it-italy-ltsn/eProd202008982' - } - ], - name: 'euronics' + currency: '€', + labels: { + inStock: { + container: '.purchaseButtonsWidth', + text: ['Aggiungi al carrello'], + }, + }, + links: [ + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.euronics.it/console/sony-computer/playstation-5/eProd202008906', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.euronics.it/console/sony-computer/playstation-5-digital-edition/eProd202008907', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.euronics.it/console/microsoft/xbox-series-x-1tb-it-italy-sxto/eProd202008981', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: + 'https://www.euronics.it/console/microsoft/xbox-series-s-512gb-it-italy-ltsn/eProd202008982', + }, + ], + name: 'euronics', }; diff --git a/src/store/model/evatech.ts b/src/store/model/evatech.ts index 6329c4ab09..ea6a9fd0f6 100644 --- a/src/store/model/evatech.ts +++ b/src/store/model/evatech.ts @@ -1,114 +1,113 @@ import {Store} from './store'; export const Evatech: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: '.product_detail_add_to_cart > span:nth-child(2)', - text: ['ADD TO CART'] - }, - maxPrice: { - container: '.product_detail_price', - euroFormat: false - }, - outOfStock: { - container: '.product_detail_add_to_cart > div:nth-child(2)', - text: ['SOLD OUT'] - } - }, - links: [ - { - brand: 'colorful', - model: 'igame ultra oc', - series: '3080', - url: - 'https://evatech.com.au/product/6511/colorful-igame-rtx-3080-ultra-oc-10g' - }, - { - brand: 'colorful', - model: 'igame advanced oc', - series: '3080', - url: - 'https://evatech.com.au/product/6507/colorful-igame-rtx-3080-advanced-oc-10g' - }, - { - brand: 'colorful', - model: 'igame vulcan oc', - series: '3080', - url: - 'https://evatech.com.au/product/6514/colorful-igame-rtx-3080-vulcan-oc-10g' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://evatech.com.au/product/6574/msi-geforce-rtx-3080-suprim-x-10g' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://evatech.com.au/product/6505/msi-rtx-3080-gamingx-trio-10g-oc' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://evatech.com.au/product/6494/msi-rtx-3080-ventus-3x-10g-oc' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://evatech.com.au/product/6496/zotac-rtx3080-trinity-10gb-gddr6x' - }, - { - brand: 'colorful', - model: 'igame advanced oc', - series: '3090', - url: - 'https://evatech.com.au/product/6513/colorful-igame-rtx-3090-advance-oc-24g' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://evatech.com.au/product/6524/msi-geforce-rtx-3090-ventus-3x-oc-24gb' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://evatech.com.au/product/6550/msi-rtx-3090-gaming-x-trio-24gb' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3090', - url: - 'https://evatech.com.au/product/6573/msi-geforce-rtx-3090-suprim-x-24g' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://evatech.com.au/product/6558/amd-ryzen-9-5900x-12core-24-thread-base37ghz-boost48ghz-preorder' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://evatech.com.au/product/6557/amd-ryzen-7-5800x-8core-16-thread-base38ghz-boost47ghz-preorder' - } - ], - name: 'evatech' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: '.product_detail_add_to_cart > span:nth-child(2)', + text: ['ADD TO CART'], + }, + maxPrice: { + container: '.product_detail_price', + euroFormat: false, + }, + outOfStock: { + container: '.product_detail_add_to_cart > div:nth-child(2)', + text: ['SOLD OUT'], + }, + }, + links: [ + { + brand: 'colorful', + model: 'igame ultra oc', + series: '3080', + url: + 'https://evatech.com.au/product/6511/colorful-igame-rtx-3080-ultra-oc-10g', + }, + { + brand: 'colorful', + model: 'igame advanced oc', + series: '3080', + url: + 'https://evatech.com.au/product/6507/colorful-igame-rtx-3080-advanced-oc-10g', + }, + { + brand: 'colorful', + model: 'igame vulcan oc', + series: '3080', + url: + 'https://evatech.com.au/product/6514/colorful-igame-rtx-3080-vulcan-oc-10g', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://evatech.com.au/product/6574/msi-geforce-rtx-3080-suprim-x-10g', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://evatech.com.au/product/6505/msi-rtx-3080-gamingx-trio-10g-oc', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://evatech.com.au/product/6494/msi-rtx-3080-ventus-3x-10g-oc', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://evatech.com.au/product/6496/zotac-rtx3080-trinity-10gb-gddr6x', + }, + { + brand: 'colorful', + model: 'igame advanced oc', + series: '3090', + url: + 'https://evatech.com.au/product/6513/colorful-igame-rtx-3090-advance-oc-24g', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://evatech.com.au/product/6524/msi-geforce-rtx-3090-ventus-3x-oc-24gb', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://evatech.com.au/product/6550/msi-rtx-3090-gaming-x-trio-24gb', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3090', + url: + 'https://evatech.com.au/product/6573/msi-geforce-rtx-3090-suprim-x-24g', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://evatech.com.au/product/6558/amd-ryzen-9-5900x-12core-24-thread-base37ghz-boost48ghz-preorder', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://evatech.com.au/product/6557/amd-ryzen-7-5800x-8core-16-thread-base38ghz-boost47ghz-preorder', + }, + ], + name: 'evatech', }; diff --git a/src/store/model/evga-eu.ts b/src/store/model/evga-eu.ts index 10987cebb0..8d22d7a9a3 100644 --- a/src/store/model/evga-eu.ts +++ b/src/store/model/evga-eu.ts @@ -1,74 +1,74 @@ import {Store} from './store'; export const EvgaEu: Store = { - currency: '€', - labels: { - inStock: { - container: '.product-buy-specs', - text: ['add to cart'] - } - }, - links: [ - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3895-KR' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3897-KR' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3883-KR' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3881-KR' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3885-KR' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3090', - url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3985-KR' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3090', - url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3987-KR' - }, - { - brand: 'evga', - model: 'xc3', - series: '3090', - url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3973-KR' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3090', - url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3971-KR' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3975-KR' - } - ], - name: 'evga-eu' + currency: '€', + labels: { + inStock: { + container: '.product-buy-specs', + text: ['add to cart'], + }, + }, + links: [ + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3895-KR', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3897-KR', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3883-KR', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3881-KR', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://eu.evga.com/products/product.aspx?pn=10G-P5-3885-KR', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3985-KR', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3987-KR', + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3973-KR', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3090', + url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3971-KR', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: 'https://eu.evga.com/products/product.aspx?pn=24G-P5-3975-KR', + }, + ], + name: 'evga-eu', }; diff --git a/src/store/model/evga.ts b/src/store/model/evga.ts index 5d366f5ee2..14832eaf06 100644 --- a/src/store/model/evga.ts +++ b/src/store/model/evga.ts @@ -1,122 +1,122 @@ import {Store} from './store'; export const Evga: Store = { - currency: '$', - labels: { - inStock: { - container: '.product-buy-specs', - text: ['add to cart'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.evga.com/products/product.aspx?pn=06G-P4-2065-KR' - }, - { - brand: 'evga', - model: 'xc gaming', - series: '3060ti', - url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3663-KR' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3060ti', - url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3665-KR' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3060ti', - url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3667-KR' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3070', - url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3751-KR' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3070', - url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3755-KR' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3070', - url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3767-KR' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3881-KR' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3897-KR' - }, - { - brand: 'evga', - model: 'ftw3 ultra hydro copper', - series: '3080', - url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3897-KR' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3895-KR' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3883-KR' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3885-KR' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3090', - url: 'https://www.evga.com/products/product.aspx?pn=24G-P5-3971-KR' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3090', - url: 'https://www.evga.com/products/product.aspx?pn=24G-P5-3987-KR' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3090', - url: 'https://www.evga.com/products/product.aspx?pn=24G-P5-3985-KR' - }, - { - brand: 'evga', - model: 'xc3', - series: '3090', - url: 'https://www.evga.com/products/product.aspx?pn=24G-P5-3973-KR' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: 'https://www.evga.com/products/product.aspx?pn=24G-P5-3975-KR' - } - ], - name: 'evga' + currency: '$', + labels: { + inStock: { + container: '.product-buy-specs', + text: ['add to cart'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.evga.com/products/product.aspx?pn=06G-P4-2065-KR', + }, + { + brand: 'evga', + model: 'xc gaming', + series: '3060ti', + url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3663-KR', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3060ti', + url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3665-KR', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3060ti', + url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3667-KR', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3070', + url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3751-KR', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3070', + url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3755-KR', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3070', + url: 'https://www.evga.com/products/product.aspx?pn=08G-P5-3767-KR', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3881-KR', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3897-KR', + }, + { + brand: 'evga', + model: 'ftw3 ultra hydro copper', + series: '3080', + url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3897-KR', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3895-KR', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3883-KR', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.evga.com/products/product.aspx?pn=10G-P5-3885-KR', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3090', + url: 'https://www.evga.com/products/product.aspx?pn=24G-P5-3971-KR', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: 'https://www.evga.com/products/product.aspx?pn=24G-P5-3987-KR', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: 'https://www.evga.com/products/product.aspx?pn=24G-P5-3985-KR', + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: 'https://www.evga.com/products/product.aspx?pn=24G-P5-3973-KR', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: 'https://www.evga.com/products/product.aspx?pn=24G-P5-3975-KR', + }, + ], + name: 'evga', }; diff --git a/src/store/model/expert.ts b/src/store/model/expert.ts index 92ddc9f01a..c49a7c5e45 100644 --- a/src/store/model/expert.ts +++ b/src/store/model/expert.ts @@ -1,59 +1,57 @@ import {Store} from './store'; export const Expert: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '€', - labels: { - inStock: [ - { - container: 'span.widget-ArticleStatus-buttonText', - text: ['In den Warenkorb'] - } - ], - maxPrice: { - container: - '.widget-Container-subContent .widget-ArticlePrice-price', - euroFormat: false - }, - outOfStock: [ - { - container: - 'span[style="font-size: 14pt;"] > span[style="color: #ff5e19;"]', - text: ['Das von Ihnen ausgewählte Produkt ist ausverkauft'] - }, - { - container: 'span.widget-ArticleStatus-statusPointText', - text: ['Artikel ist derzeit nicht verfügbar'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.expert.de/shop/11364114744-ps4-pro-1tb-jet-black.html' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.expert.de/shop/11364129744-playstation-r-5.html' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.expert.de/shop/11364133744-playstation-r-5-digital-edition.html' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.expert.de/shop/11350018530-xbox-series-s.html' - } - ], - name: 'expert' + backoffStatusCodes: [403, 429, 503], + currency: '€', + labels: { + inStock: [ + { + container: 'span.widget-ArticleStatus-buttonText', + text: ['In den Warenkorb'], + }, + ], + maxPrice: { + container: '.widget-Container-subContent .widget-ArticlePrice-price', + euroFormat: false, + }, + outOfStock: [ + { + container: + 'span[style="font-size: 14pt;"] > span[style="color: #ff5e19;"]', + text: ['Das von Ihnen ausgewählte Produkt ist ausverkauft'], + }, + { + container: 'span.widget-ArticleStatus-statusPointText', + text: ['Artikel ist derzeit nicht verfügbar'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.expert.de/shop/11364114744-ps4-pro-1tb-jet-black.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.expert.de/shop/11364129744-playstation-r-5.html', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.expert.de/shop/11364133744-playstation-r-5-digital-edition.html', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.expert.de/shop/11350018530-xbox-series-s.html', + }, + ], + name: 'expert', }; diff --git a/src/store/model/futurex.ts b/src/store/model/futurex.ts index cb7b634b63..53c68574d7 100644 --- a/src/store/model/futurex.ts +++ b/src/store/model/futurex.ts @@ -1,73 +1,73 @@ import {Store} from './store'; export const Futurex: Store = { - currency: '€', - labels: { - inStock: { - container: '.productPriceInner', - text: ['Auf Lager'] - }, - maxPrice: { - container: '.price', - euroFormat: true - }, - outOfStock: [ - { - container: '.notavail', - text: ['Aktuell nicht verfügbar'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.future-x.de/corsair-vengeance-lpx-ddr4-32-gb%3A-2-x-16-gb-dimm-288-pin-3200-mhz-pc4-25600-cl16-135-v-ungepuffert-nicht-ecc-schwarz-p-494897' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.future-x.de/asus-vga-10gb-rtx3080-tuf-gaming-oc-3xdp-2xhdmi-geforce-rtx-3080-grafikkarte-pci-express-10240-mb-displayport-eingang-p-8649614' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.future-x.de/asus-rog-strix-geforce-rtx-3080-10gb-grafikkarte-pci-express-10240-mb-displayport-eingang-p-8649611' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.future-x.de/msi-geforce-rtx-3080-gaming-x-tr-grafikkarte-10240-mb-p-8649610' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.future-x.de/msi-geforce-rtx-3080ventus-3x10g-oc-grafikkarte-10240-mb-p-8649609' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: - 'https://www.future-x.de/zotac-gaming-geforce-rtx-3080-amp-holo-memory-10gb-gddr6x-320-bit-p-8649625' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.equippr.de/zotac-geforce-rtx-3080-trinity-10-gb-gddr6x-retail-2060389.html' - } - ], - name: 'futurex' + currency: '€', + labels: { + inStock: { + container: '.productPriceInner', + text: ['Auf Lager'], + }, + maxPrice: { + container: '.price', + euroFormat: true, + }, + outOfStock: [ + { + container: '.notavail', + text: ['Aktuell nicht verfügbar'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.future-x.de/corsair-vengeance-lpx-ddr4-32-gb%3A-2-x-16-gb-dimm-288-pin-3200-mhz-pc4-25600-cl16-135-v-ungepuffert-nicht-ecc-schwarz-p-494897', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.future-x.de/asus-vga-10gb-rtx3080-tuf-gaming-oc-3xdp-2xhdmi-geforce-rtx-3080-grafikkarte-pci-express-10240-mb-displayport-eingang-p-8649614', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.future-x.de/asus-rog-strix-geforce-rtx-3080-10gb-grafikkarte-pci-express-10240-mb-displayport-eingang-p-8649611', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.future-x.de/msi-geforce-rtx-3080-gaming-x-tr-grafikkarte-10240-mb-p-8649610', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.future-x.de/msi-geforce-rtx-3080ventus-3x10g-oc-grafikkarte-10240-mb-p-8649609', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: + 'https://www.future-x.de/zotac-gaming-geforce-rtx-3080-amp-holo-memory-10gb-gddr6x-320-bit-p-8649625', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.equippr.de/zotac-geforce-rtx-3080-trinity-10-gb-gddr6x-retail-2060389.html', + }, + ], + name: 'futurex', }; diff --git a/src/store/model/galaxus.ts b/src/store/model/galaxus.ts index 34f49ce30a..4d8c793c8d 100644 --- a/src/store/model/galaxus.ts +++ b/src/store/model/galaxus.ts @@ -1,62 +1,60 @@ import {Store} from './store'; export const Galaxus: Store = { - currency: '€', - labels: { - inStock: { - container: '#addToCartButton:enabled', - text: ['In den Warenkorb'] - }, - maxPrice: { - container: '.productDetail .Z1d7', - euroFormat: true - }, - outOfStock: [ - { - container: '.availabilityText', - text: [ - 'aktuell nicht lieferbar und kein liefertermin vorhanden' - ] - }, - { - container: '.availabilityText', - text: [ - 'der liefertermin ist beim lieferanten in abklärung und wird aktualisiert.' - ] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.galaxus.de/de/product/11156643' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.galaxus.de/de/product/13987919' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.galaxus.de/de/product/13987918' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.galaxus.de/de/product/13987917' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.galaxus.de/de/product/13987916' - } - ], - name: 'galaxus' + currency: '€', + labels: { + inStock: { + container: '#addToCartButton:enabled', + text: ['In den Warenkorb'], + }, + maxPrice: { + container: '.productDetail .Z1d7', + euroFormat: true, + }, + outOfStock: [ + { + container: '.availabilityText', + text: ['aktuell nicht lieferbar und kein liefertermin vorhanden'], + }, + { + container: '.availabilityText', + text: [ + 'der liefertermin ist beim lieferanten in abklärung und wird aktualisiert.', + ], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.galaxus.de/de/product/11156643', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.galaxus.de/de/product/13987919', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.galaxus.de/de/product/13987918', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.galaxus.de/de/product/13987917', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.galaxus.de/de/product/13987916', + }, + ], + name: 'galaxus', }; diff --git a/src/store/model/game.ts b/src/store/model/game.ts index f03336eb9c..b9e54ee489 100644 --- a/src/store/model/game.ts +++ b/src/store/model/game.ts @@ -1,54 +1,53 @@ import {Store} from './store'; export const Game: Store = { - currency: '£', - labels: { - inStock: { - container: '.buyingOptions', - text: ['Pre-order Now', 'Buy New'] - }, - maxPrice: { - container: '.buyingOptions .btnPrice', - euroFormat: false - }, - outOfStock: { - container: '.buyingOptions', - text: ['out of stock'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.game.co.uk/en/ea-sports-fifa-21-500gb-ps4-bundle-2832947' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.game.co.uk/en/playstation-5-console-2826338' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.game.co.uk/en/playstation-5-digital-edition-2826341' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.game.co.uk/en/xbox-series-x-2831406' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.game.co.uk/en/xbox-series-x-2831406' - } - ], - name: 'game' + currency: '£', + labels: { + inStock: { + container: '.buyingOptions', + text: ['Pre-order Now', 'Buy New'], + }, + maxPrice: { + container: '.buyingOptions .btnPrice', + euroFormat: false, + }, + outOfStock: { + container: '.buyingOptions', + text: ['out of stock'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.game.co.uk/en/ea-sports-fifa-21-500gb-ps4-bundle-2832947', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.game.co.uk/en/playstation-5-console-2826338', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.game.co.uk/en/playstation-5-digital-edition-2826341', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.game.co.uk/en/xbox-series-x-2831406', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.game.co.uk/en/xbox-series-x-2831406', + }, + ], + name: 'game', }; diff --git a/src/store/model/gamestop-de.ts b/src/store/model/gamestop-de.ts index cad257ab1c..63a5513ab4 100644 --- a/src/store/model/gamestop-de.ts +++ b/src/store/model/gamestop-de.ts @@ -1,41 +1,41 @@ import {Store} from './store'; export const GamestopDE: Store = { - currency: '€', - labels: { - inStock: [ - { - container: '#btnAddToCart', - text: ['In den Warenkorb'] - }, - { - container: '#btnAddToCart', - text: ['Vorbestellen'] - } - ], - maxPrice: { - container: '.buySection .prodPriceCont', - euroFormat: true - }, - outOfStock: { - container: '.megaButton', - text: ['Nicht verfügbar'] - } - }, - links: [ - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.gamestop.de/PS5/Games/58665' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.gamestop.de/PS5/Games/60315' - } - ], - name: 'gamestop-de', - successStatusCodes: [[0, 399], 404] + currency: '€', + labels: { + inStock: [ + { + container: '#btnAddToCart', + text: ['In den Warenkorb'], + }, + { + container: '#btnAddToCart', + text: ['Vorbestellen'], + }, + ], + maxPrice: { + container: '.buySection .prodPriceCont', + euroFormat: true, + }, + outOfStock: { + container: '.megaButton', + text: ['Nicht verfügbar'], + }, + }, + links: [ + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.gamestop.de/PS5/Games/58665', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.gamestop.de/PS5/Games/60315', + }, + ], + name: 'gamestop-de', + successStatusCodes: [[0, 399], 404], }; diff --git a/src/store/model/gamestop-ie.ts b/src/store/model/gamestop-ie.ts index 91a44c8ca6..935528f122 100644 --- a/src/store/model/gamestop-ie.ts +++ b/src/store/model/gamestop-ie.ts @@ -1,31 +1,31 @@ import {Store} from './store'; export const GamestopIE: Store = { - currency: '€', - labels: { - inStock: { - container: '#btnAddToCart', - text: ['add to cart!'] - }, - maxPrice: { - container: 'span.pricetext' - } - }, - links: [ - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.gamestop.ie/Xbox%20Series/Games/73034/xbox-series-x-console' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.gamestop.ie/PlayStation%205/Games/72504/playstation-5-console' - } - ], - name: 'gamestop-ie' + currency: '€', + labels: { + inStock: { + container: '#btnAddToCart', + text: ['add to cart!'], + }, + maxPrice: { + container: 'span.pricetext', + }, + }, + links: [ + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.gamestop.ie/Xbox%20Series/Games/73034/xbox-series-x-console', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.gamestop.ie/PlayStation%205/Games/72504/playstation-5-console', + }, + ], + name: 'gamestop-ie', }; diff --git a/src/store/model/gamestop-it.ts b/src/store/model/gamestop-it.ts index 97c96b4bfc..cec223085c 100644 --- a/src/store/model/gamestop-it.ts +++ b/src/store/model/gamestop-it.ts @@ -1,34 +1,34 @@ import {Store} from './store'; export const GamestopIT: Store = { - currency: '€', - labels: { - inStock: { - container: '#btnAddToCart', - text: ['Aggiungi al Carrello'] - }, - maxPrice: { - container: '.buySection .prodPriceCont', - euroFormat: true - }, - outOfStock: { - container: '.megaButton .buyDisabled', - text: ['Esaurito'] - } - }, - links: [ - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.gamestop.it/XboxSeriesX/Games/132509' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.gamestop.it/XboxSeriesX/Games/128220' - } - ], - name: 'gamestop-it' + currency: '€', + labels: { + inStock: { + container: '#btnAddToCart', + text: ['Aggiungi al Carrello'], + }, + maxPrice: { + container: '.buySection .prodPriceCont', + euroFormat: true, + }, + outOfStock: { + container: '.megaButton .buyDisabled', + text: ['Esaurito'], + }, + }, + links: [ + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.gamestop.it/XboxSeriesX/Games/132509', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.gamestop.it/XboxSeriesX/Games/128220', + }, + ], + name: 'gamestop-it', }; diff --git a/src/store/model/gamestop.ts b/src/store/model/gamestop.ts index 67e8023e6b..b538276adc 100644 --- a/src/store/model/gamestop.ts +++ b/src/store/model/gamestop.ts @@ -1,71 +1,71 @@ import {Store} from './store'; export const Gamestop: Store = { - currency: '$', - labels: { - inStock: [ - { - container: '.add-to-cart', - text: ['add to cart'] - }, - { - container: '.add-to-cart', - text: ['Pre-Order'] - } - ], - maxPrice: { - container: '.primary-details-row .actual-price', - euroFormat: false - }, - outOfStock: { - container: '.add-to-cart', - text: ['not available'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.gamestop.com/nav-pc-hardware-desktops/products/clx-set-tgmsetgxe9600bm-gaming-desktop/11096665' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.gamestop.com/video-games/pc/components/graphics-cards/products/tuf-gaming-geforce-rtx-3080-graphics-card/11109446.html' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.gamestop.com/video-games/playstation-5/consoles/products/playstation-5/11108140' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.gamestop.com/video-games/playstation-5/consoles/products/playstation-5-digital-edition/11108141' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.gamestop.com/video-games/xbox-series-x/consoles/products/xbox-series-x/11108371.html?condition=New' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: - 'https://www.gamestop.com/video-games/xbox-series-x/consoles/products/xbox-series-s-digital-edition/11108372.html?condition=New' - } - ], - name: 'gamestop', - successStatusCodes: [[0, 399], 404] + currency: '$', + labels: { + inStock: [ + { + container: '.add-to-cart', + text: ['add to cart'], + }, + { + container: '.add-to-cart', + text: ['Pre-Order'], + }, + ], + maxPrice: { + container: '.primary-details-row .actual-price', + euroFormat: false, + }, + outOfStock: { + container: '.add-to-cart', + text: ['not available'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.gamestop.com/nav-pc-hardware-desktops/products/clx-set-tgmsetgxe9600bm-gaming-desktop/11096665', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.gamestop.com/video-games/pc/components/graphics-cards/products/tuf-gaming-geforce-rtx-3080-graphics-card/11109446.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.gamestop.com/video-games/playstation-5/consoles/products/playstation-5/11108140', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.gamestop.com/video-games/playstation-5/consoles/products/playstation-5-digital-edition/11108141', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.gamestop.com/video-games/xbox-series-x/consoles/products/xbox-series-x/11108371.html?condition=New', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: + 'https://www.gamestop.com/video-games/xbox-series-x/consoles/products/xbox-series-s-digital-edition/11108372.html?condition=New', + }, + ], + name: 'gamestop', + successStatusCodes: [[0, 399], 404], }; diff --git a/src/store/model/hardware-planet.ts b/src/store/model/hardware-planet.ts index aeb935cd6b..b7cb41b2a2 100644 --- a/src/store/model/hardware-planet.ts +++ b/src/store/model/hardware-planet.ts @@ -2,76 +2,76 @@ import {Store} from './store'; import {getProductLinksBuilder} from './helpers/card'; export const HardwarePlanet: Store = { - backoffStatusCodes: [404, 429, 503], - currency: '€', - labels: { - inStock: { - container: '.add >button.add-to-cart', - text: ['Aggiungi al carrello'] - }, - maxPrice: { - container: '.product-price', - euroFormat: true - }, - outOfStock: { - container: '#product-availability', - text: ['Non disponibile'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.hardware-planet.it/mouse/2929-vendita-mouse-logitech-mouse-m185-optical-swift-grey-910-002238-5099206027282.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.hardware-planet.it/cpu-socket-am4/74745-vendita-cpu-socket-am4-amd-cpu-am4-ryzen-5-5600x-box-wraith-stealth-cooler-100-100000065box.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.hardware-planet.it/cpu-socket-am4/74421-vendita-cpu-socket-am4-amd-cpu-am4-ryzen-7-5800x-4700ghz-wof-box-100-100000063wof-730143312714.html/' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.hardware-planet.it/cpu-socket-am4/74422-vendita-cpu-socket-am4-amd-cpu-am4-ryzen-9-5950x-4900-ghz-wof-box-100-100000059wof-730143312745.html' - } - ], - linksBuilder: { - builder: getProductLinksBuilder({ - productsSelector: '.js-product-miniature-wrapper', - sitePrefix: 'https://www.hardware-planet.it', - titleSelector: '.product-title > a' - }), - urls: [ - { - series: '3060ti', - url: - 'https://www.hardware-planet.it/module/iqitsearch/searchiqit?s=rtx+3060' - }, - { - series: '3070', - url: - 'https://www.hardware-planet.it/module/iqitsearch/searchiqit?s=rtx+3070' - }, - { - series: '3080', - url: - 'https://www.hardware-planet.it/module/iqitsearch/searchiqit?s=rtx+3080' - } - ] - }, - name: 'hardware-planet', - waitUntil: 'domcontentloaded' + backoffStatusCodes: [404, 429, 503], + currency: '€', + labels: { + inStock: { + container: '.add >button.add-to-cart', + text: ['Aggiungi al carrello'], + }, + maxPrice: { + container: '.product-price', + euroFormat: true, + }, + outOfStock: { + container: '#product-availability', + text: ['Non disponibile'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.hardware-planet.it/mouse/2929-vendita-mouse-logitech-mouse-m185-optical-swift-grey-910-002238-5099206027282.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.hardware-planet.it/cpu-socket-am4/74745-vendita-cpu-socket-am4-amd-cpu-am4-ryzen-5-5600x-box-wraith-stealth-cooler-100-100000065box.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.hardware-planet.it/cpu-socket-am4/74421-vendita-cpu-socket-am4-amd-cpu-am4-ryzen-7-5800x-4700ghz-wof-box-100-100000063wof-730143312714.html/', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.hardware-planet.it/cpu-socket-am4/74422-vendita-cpu-socket-am4-amd-cpu-am4-ryzen-9-5950x-4900-ghz-wof-box-100-100000059wof-730143312745.html', + }, + ], + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '.js-product-miniature-wrapper', + sitePrefix: 'https://www.hardware-planet.it', + titleSelector: '.product-title > a', + }), + urls: [ + { + series: '3060ti', + url: + 'https://www.hardware-planet.it/module/iqitsearch/searchiqit?s=rtx+3060', + }, + { + series: '3070', + url: + 'https://www.hardware-planet.it/module/iqitsearch/searchiqit?s=rtx+3070', + }, + { + series: '3080', + url: + 'https://www.hardware-planet.it/module/iqitsearch/searchiqit?s=rtx+3080', + }, + ], + }, + name: 'hardware-planet', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/harristechnology.ts b/src/store/model/harristechnology.ts index 4e6dc8a8a3..d82ef86802 100644 --- a/src/store/model/harristechnology.ts +++ b/src/store/model/harristechnology.ts @@ -1,56 +1,56 @@ import {Store} from './store'; export const HarrisTechnology: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: - '#content_tab-description > div.desc2 > p.product-availability', - text: ['in stock'] - }, - outOfStock: { - container: - '#content_tab-description > div.desc2 > p.product-availability', - text: ['Please call or e-mail us for availability'] - } - }, - links: [ - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.ht.com.au/part/BY216-Gigabyte-GeForce-RTX-3080-GAMING-OC-10GB-Video-Card/detail.hts' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.ht.com.au/part/BZ284-Gigabyte-nVidia-GeForce-RTX-3080-VISION-OC-10G-GDDR6X-1800-MHz-PCIE4.0x16-7680x432060Hz-3xDP-2xHDMI/detail.hts' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.ht.com.au/part/BZ346-Gigabyte-nVidia-GeForce-RTX-3080-MASTER-AORUS-10G-GDDR6X-1845-MHz-3xDP-3xHDMI/detail.hts' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.ht.com.au/part/BY193-MSI-GeForce-RTX-3080-GAMING-X-TRIO-10GB-Video-Card/detail.hts' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.ht.com.au/part/CA093-AMD-Ryzen-5-5600X-6-Core-3.7-GHz-Desktop-Processor-with-AM4-Socket-65W-Thermal-Design-Power/detail.hts' - } - ], - name: 'harristechnology' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: + '#content_tab-description > div.desc2 > p.product-availability', + text: ['in stock'], + }, + outOfStock: { + container: + '#content_tab-description > div.desc2 > p.product-availability', + text: ['Please call or e-mail us for availability'], + }, + }, + links: [ + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.ht.com.au/part/BY216-Gigabyte-GeForce-RTX-3080-GAMING-OC-10GB-Video-Card/detail.hts', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.ht.com.au/part/BZ284-Gigabyte-nVidia-GeForce-RTX-3080-VISION-OC-10G-GDDR6X-1800-MHz-PCIE4.0x16-7680x432060Hz-3xDP-2xHDMI/detail.hts', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.ht.com.au/part/BZ346-Gigabyte-nVidia-GeForce-RTX-3080-MASTER-AORUS-10G-GDDR6X-1845-MHz-3xDP-3xHDMI/detail.hts', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.ht.com.au/part/BY193-MSI-GeForce-RTX-3080-GAMING-X-TRIO-10GB-Video-Card/detail.hts', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.ht.com.au/part/CA093-AMD-Ryzen-5-5600X-6-Core-3.7-GHz-Desktop-Processor-with-AM4-Socket-65W-Thermal-Design-Power/detail.hts', + }, + ], + name: 'harristechnology', }; diff --git a/src/store/model/harveynorman-ie.ts b/src/store/model/harveynorman-ie.ts index 120791c240..13f1af5fa8 100644 --- a/src/store/model/harveynorman-ie.ts +++ b/src/store/model/harveynorman-ie.ts @@ -1,30 +1,30 @@ import {Store} from './store'; export const HarveyNormanIE: Store = { - currency: '€', - labels: { - inStock: { - container: 'input.btn-action', - text: ['add to cart'] - }, - maxPrice: { - container: '.price', - euroFormat: false - }, - outOfStock: { - container: '.product-highlight-text', - text: ['SOLD OUT! WATCH THIS SPACE FOR MORE INFORMATION'] - } - }, - links: [ - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.harveynorman.ie/gaming/xbox-series/microsoft-xbox-series-x-console-1tb.html' - } - ], - name: 'harveynorman-ie', - waitUntil: 'domcontentloaded' + currency: '€', + labels: { + inStock: { + container: 'input.btn-action', + text: ['add to cart'], + }, + maxPrice: { + container: '.price', + euroFormat: false, + }, + outOfStock: { + container: '.product-highlight-text', + text: ['SOLD OUT! WATCH THIS SPACE FOR MORE INFORMATION'], + }, + }, + links: [ + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.harveynorman.ie/gaming/xbox-series/microsoft-xbox-series-x-console-1tb.html', + }, + ], + name: 'harveynorman-ie', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/helpers/backoff.ts b/src/store/model/helpers/backoff.ts index 5a7d732bf2..32e4995fbc 100644 --- a/src/store/model/helpers/backoff.ts +++ b/src/store/model/helpers/backoff.ts @@ -4,58 +4,55 @@ import {delay, isStatusCodeInRange} from '../../../util'; import {config} from '../../../config'; type Backoff = { - count: number; - time: number; + count: number; + time: number; }; const stores: Record = {}; export async function processBackoffDelay( - store: Store, - link: Link, - statusCode: number + store: Store, + link: Link, + statusCode: number ): Promise { - /** - * We treat statusCode 0 as successful as some of the puppeteer plugins - * cause side-effects resulting in an empty response object even though - * the page renders fine and its content is accessible. - */ + /** + * We treat statusCode 0 as successful as some of the puppeteer plugins + * cause side-effects resulting in an empty response object even though + * the page renders fine and its content is accessible. + */ - let {backoffStatusCodes} = store; + let {backoffStatusCodes} = store; - if (!backoffStatusCodes) { - backoffStatusCodes = [403]; - } + if (!backoffStatusCodes) { + backoffStatusCodes = [403]; + } - const isBackoff = isStatusCodeInRange(statusCode, backoffStatusCodes); - let backoff = stores[store.name]; + const isBackoff = isStatusCodeInRange(statusCode, backoffStatusCodes); + let backoff = stores[store.name]; - if (!backoff) { - backoff = {count: 0, time: config.browser.minBackoff}; - stores[store.name] = backoff; - } + if (!backoff) { + backoff = {count: 0, time: config.browser.minBackoff}; + stores[store.name] = backoff; + } - if (!isBackoff) { - if (backoff.count > 0) { - backoff.count--; - backoff.time = Math.max( - backoff.time / 2, - config.browser.minBackoff - ); - } + if (!isBackoff) { + if (backoff.count > 0) { + backoff.count--; + backoff.time = Math.max(backoff.time / 2, config.browser.minBackoff); + } - return -1; - } + return -1; + } - const backoffTime = backoff.time; - logger.debug( - Print.backoff(link, store, {delay: backoffTime, statusCode}, true) - ); + const backoffTime = backoff.time; + logger.debug( + Print.backoff(link, store, {delay: backoffTime, statusCode}, true) + ); - await delay(backoff.time); + await delay(backoff.time); - backoff.count++; - backoff.time = Math.min(backoff.time * 2, config.browser.maxBackoff); + backoff.count++; + backoff.time = Math.min(backoff.time * 2, config.browser.maxBackoff); - return backoffTime; + return backoffTime; } diff --git a/src/store/model/helpers/card.ts b/src/store/model/helpers/card.ts index 0566f1e80b..106976e10f 100644 --- a/src/store/model/helpers/card.ts +++ b/src/store/model/helpers/card.ts @@ -2,136 +2,132 @@ import {Link, Model, Series} from '../store'; import {logger} from '../../../logger'; export interface Card { - brand: string; - model: Model; + brand: string; + model: Model; } interface LinksBuilderOptions { - productsSelector: string; - sitePrefix: string; - titleAttribute?: string; - titleSelector: string; - urlSelector?: string; + productsSelector: string; + sitePrefix: string; + titleAttribute?: string; + titleSelector: string; + urlSelector?: string; } const isPartialUrlRegExp = /^\/[^/]/i; export function getProductLinksBuilder(options: LinksBuilderOptions) { - /* eslint-disable unicorn/no-fn-reference-in-iterator */ - return (docElement: cheerio.Cheerio, series: Series): Link[] => { - const productElements = docElement.find(options.productsSelector); - const links: Link[] = []; - for (let i = 0; i < productElements.length; i++) { - const productElement = productElements.eq(i); - const titleElement = productElement - .find(options.titleSelector) - .first(); - - const title = options.titleAttribute - ? titleElement.attr()?.[options.titleAttribute] - : titleElement.text()?.replace(/\n/g, ' ').trim(); - - if (!title) { - continue; - } - - let urlElement = titleElement; - - if (options.urlSelector) { - urlElement = urlElement.find(options.urlSelector).first(); - } - - let url = urlElement.attr()?.href; - - if (!url) { - continue; - } - - if (isPartialUrlRegExp.exec(url)) { - url = options.sitePrefix + url; - } - - const card = parseCard(title); - - if (card) { - links.push({ - brand: card.brand as any, - model: card.model, - series, - url - }); - } else { - logger.error(`Failed to parse card: ${title}`, {url}); - } - } - - return links; - }; - /* eslint-enable unicorn/no-fn-reference-in-iterator */ + return (docElement: cheerio.Cheerio, series: Series): Link[] => { + const productElements = docElement.find(options.productsSelector); + const links: Link[] = []; + for (let i = 0; i < productElements.length; i++) { + const productElement = productElements.eq(i); + const titleElement = productElement.find(options.titleSelector).first(); + + const title = options.titleAttribute + ? titleElement.attr()?.[options.titleAttribute] + : titleElement.text()?.replace(/\n/g, ' ').trim(); + + if (!title) { + continue; + } + + let urlElement = titleElement; + + if (options.urlSelector) { + urlElement = urlElement.find(options.urlSelector).first(); + } + + let url = urlElement.attr()?.href; + + if (!url) { + continue; + } + + if (isPartialUrlRegExp.exec(url)) { + url = options.sitePrefix + url; + } + + const card = parseCard(title); + + if (card) { + links.push({ + brand: card.brand as any, + model: card.model, + series, + url, + }); + } else { + logger.error(`Failed to parse card: ${title}`, {url}); + } + } + + return links; + }; } export function parseCard(name: string): Card | null { - name = name.replace(/\w+-\w+-[^ ]+/g, ''); - name = name.replace(/\([^(]*\)/g, ''); - name = name.replace(/, .+$/, ''); - name = name.replace(/ with .+$/, ''); - name = name.replace(/pci-express/gi, ''); - name = name.replace(/ - .*$/g, ''); - - // Account for incorrect titles, e.g. MSIGeforce - name = name.replace(/geforce/i, ''); - - name = name.replace(/[^\w ]+/g, ''); - name = name.replace(/\bgraphics card\b/gi, ''); - name = name.replace(/\b(? { - if (word.toLowerCase() === 'oc') { - isOC = true; - return false; - } - - return ( - !word.match( - /^(nvidia|geforce|ge|force|rtx|amp[ae]re|graphics|card|gpu|pci-?e(xpress)?|ray-?tracing|ray|tracing|core|boost|epicx)$/i - ) && - !word.match(/^(\d+(?:gb?|mhz)?|gb|mhz|g?ddr(\d+x?)?)$/i) && - !word.match(/^(display ?port|hdmi|vga)$/i) - ); - }); - /* eslint-enable @typescript-eslint/prefer-regexp-exec */ - - if (isOC) model.push('oc'); - if (model.length === 0) return null; - - return { - brand: brand.toLowerCase(), - model: model - .join(' ') - .toLowerCase() - .replace(/ gaming\b/g, '') - .trim() as Model - }; + name = name.replace(/\w+-\w+-[^ ]+/g, ''); + name = name.replace(/\([^(]*\)/g, ''); + name = name.replace(/, .+$/, ''); + name = name.replace(/ with .+$/, ''); + name = name.replace(/pci-express/gi, ''); + name = name.replace(/ - .*$/g, ''); + + // Account for incorrect titles, e.g. MSIGeforce + name = name.replace(/geforce/i, ''); + + name = name.replace(/[^\w ]+/g, ''); + name = name.replace(/\bgraphics card\b/gi, ''); + name = name.replace(/\b(? { + if (word.toLowerCase() === 'oc') { + isOC = true; + return false; + } + + return ( + !word.match( + /^(nvidia|geforce|ge|force|rtx|amp[ae]re|graphics|card|gpu|pci-?e(xpress)?|ray-?tracing|ray|tracing|core|boost|epicx)$/i + ) && + !word.match(/^(\d+(?:gb?|mhz)?|gb|mhz|g?ddr(\d+x?)?)$/i) && + !word.match(/^(display ?port|hdmi|vga)$/i) + ); + }); + /* eslint-enable @typescript-eslint/prefer-regexp-exec */ + + if (isOC) model.push('oc'); + if (model.length === 0) return null; + + return { + brand: brand.toLowerCase(), + model: model + .join(' ') + .toLowerCase() + .replace(/ gaming\b/g, '') + .trim() as Model, + }; } diff --git a/src/store/model/helpers/nvidia-cart.ts b/src/store/model/helpers/nvidia-cart.ts index 96e6f0e3b1..a7b4c4723d 100644 --- a/src/store/model/helpers/nvidia-cart.ts +++ b/src/store/model/helpers/nvidia-cart.ts @@ -6,196 +6,187 @@ import {logger} from '../../../logger'; import open from 'open'; interface NvidiaSessionTokenJSON { - session_token: string; + session_token: string; } interface NvidiaAddToCardJSON { - location: string; + location: string; } export class NvidiaCart { - protected readonly browser: Browser; - protected isKeepAlive = false; - protected sessionToken: string | null = null; - - public constructor(browser: Browser) { - this.browser = browser; - } - - public keepAlive() { - if (this.isKeepAlive) { - return; - } - - const callback = async () => { - if (!this.isKeepAlive) { - return; - } - - await this.refreshSessionToken(); - - setTimeout(callback, config.nvidia.sessionTtl); - }; - - this.isKeepAlive = true; - - void callback(); - } - - public get fallbackCartUrl(): string { - return `https://www.nvidia.com/${this.regionInfo.siteLocale}/geforce/`; - } - - public get regionInfo(): NvidiaRegionInfo { - const country = config.store.country.toLowerCase(); - const regionInfo = regionInfos.get(country); - if (!regionInfo) { - throw new Error(`Unknown country ${country}`); - } - - return regionInfo; - } - - public get sessionUrl(): string { - return `https://store.nvidia.com/store/nvidia/SessionToken?format=json&locale=${this.regionInfo.drLocale}`; - } - - public async addToCard(productId: number, name: string): Promise { - let cartUrl: string | undefined; - logger.info( - `🚀🚀🚀 [nvidia] ${name}, starting auto add to cart 🚀🚀🚀` - ); - try { - logger.info(`🚀🚀🚀 [nvidia] ${name}, adding to cart 🚀🚀🚀`); - let lastError: Error | string | undefined; - - /* eslint-disable no-await-in-loop */ - for (let i = 0; i < config.nvidia.addToCardAttempts; i++) { - try { - cartUrl = await this.addToCartAndGetLocationRedirect( - productId - ); - - break; - } catch (error: unknown) { - logger.error( - `✖ [nvidia] ${name} could not automatically add to cart, attempt ${ - i + 1 - } of ${config.nvidia.addToCardAttempts}`, - error - ); - logger.debug(error); - - lastError = error as Error; - } - } - /* eslint-enable no-await-in-loop */ - - if (!cartUrl) { - // eslint-disable-next-line @typescript-eslint/no-throw-literal - throw lastError; - } - - logger.info( - `🚀🚀🚀 [nvidia] ${name}, opening checkout page 🚀🚀🚀` - ); - logger.info(cartUrl); - - await open(cartUrl); - } catch (error: unknown) { - logger.error( - `✖ [nvidia] ${name} could not automatically add to cart, opening page`, - error - ); - - cartUrl = this.fallbackCartUrl; - - await open(cartUrl); - } - - return cartUrl; - } - - public async getSessionToken(): Promise { - if (!this.sessionToken) { - await this.refreshSessionToken(); - } - - if (!this.sessionToken) { - throw new Error('Failed to create the session_token'); - } - - return this.sessionToken; - } - - public async refreshSessionToken(): Promise { - logger.debug('ℹ [nvidia] refreshing session token'); - try { - const result = await usingResponse( - this.browser, - this.sessionUrl, - async (response) => { - return response?.json() as - | NvidiaSessionTokenJSON - | undefined; - } - ); - if ( - typeof result !== 'object' || - result === null || - !('session_token' in result) - ) { - throw new Error('malformed response'); - } - - this.sessionToken = result.session_token; - logger.debug(`ℹ [nvidia] session_token=${result.session_token}`); - } catch (error: unknown) { - const message: string = - typeof error === 'object' - ? (error as Error).message - : (error as string); - logger.error(`✖ [nvidia] ${message}`); - } - } - - protected async addToCartAndGetLocationRedirect( - productId: number - ): Promise { - const url = - 'https://api-prod.nvidia.com/direct-sales-shop/DR/add-to-cart'; - const sessionToken = await this.getSessionToken(); - - logger.info(`ℹ [nvidia] session_token=${sessionToken}`); - - const locationData = await usingPage(this.browser, async (page) => { - page.removeAllListeners('request'); - - await page.setRequestInterception(true); - - page.on('request', (interceptedRequest) => { - void interceptedRequest.continue({ - headers: { - ...interceptedRequest.headers(), - 'content-type': 'application/json', - nvidia_shop_id: sessionToken - }, - method: 'POST', - postData: JSON.stringify({ - products: [{productId, quantity: 1}] - }) - }); - }); - - const response = await page.goto(url, {waitUntil: 'networkidle0'}); - - if (response === null) { - throw new Error('NvidiaAddToCartUnavailable'); - } - - return response.json() as Promise; - }); - - return locationData.location; - } + protected readonly browser: Browser; + protected isKeepAlive = false; + protected sessionToken: string | null = null; + + public constructor(browser: Browser) { + this.browser = browser; + } + + public keepAlive() { + if (this.isKeepAlive) { + return; + } + + const callback = async () => { + if (!this.isKeepAlive) { + return; + } + + await this.refreshSessionToken(); + + setTimeout(callback, config.nvidia.sessionTtl); + }; + + this.isKeepAlive = true; + + void callback(); + } + + public get fallbackCartUrl(): string { + return `https://www.nvidia.com/${this.regionInfo.siteLocale}/geforce/`; + } + + public get regionInfo(): NvidiaRegionInfo { + const country = config.store.country.toLowerCase(); + const regionInfo = regionInfos.get(country); + if (!regionInfo) { + throw new Error(`Unknown country ${country}`); + } + + return regionInfo; + } + + public get sessionUrl(): string { + return `https://store.nvidia.com/store/nvidia/SessionToken?format=json&locale=${this.regionInfo.drLocale}`; + } + + public async addToCard(productId: number, name: string): Promise { + let cartUrl: string | undefined; + logger.info(`🚀🚀🚀 [nvidia] ${name}, starting auto add to cart 🚀🚀🚀`); + try { + logger.info(`🚀🚀🚀 [nvidia] ${name}, adding to cart 🚀🚀🚀`); + let lastError: Error | string | undefined; + + /* eslint-disable no-await-in-loop */ + for (let i = 0; i < config.nvidia.addToCardAttempts; i++) { + try { + cartUrl = await this.addToCartAndGetLocationRedirect(productId); + + break; + } catch (error: unknown) { + logger.error( + `✖ [nvidia] ${name} could not automatically add to cart, attempt ${ + i + 1 + } of ${config.nvidia.addToCardAttempts}`, + error + ); + logger.debug(error); + + lastError = error as Error; + } + } + /* eslint-enable no-await-in-loop */ + + if (!cartUrl) { + // eslint-disable-next-line @typescript-eslint/no-throw-literal + throw lastError; + } + + logger.info(`🚀🚀🚀 [nvidia] ${name}, opening checkout page 🚀🚀🚀`); + logger.info(cartUrl); + + await open(cartUrl); + } catch (error: unknown) { + logger.error( + `✖ [nvidia] ${name} could not automatically add to cart, opening page`, + error + ); + + cartUrl = this.fallbackCartUrl; + + await open(cartUrl); + } + + return cartUrl; + } + + public async getSessionToken(): Promise { + if (!this.sessionToken) { + await this.refreshSessionToken(); + } + + if (!this.sessionToken) { + throw new Error('Failed to create the session_token.'); + } + + return this.sessionToken; + } + + public async refreshSessionToken(): Promise { + logger.debug('ℹ [nvidia] refreshing session token'); + try { + const result = await usingResponse( + this.browser, + this.sessionUrl, + async response => { + return response?.json() as NvidiaSessionTokenJSON | undefined; + } + ); + if ( + typeof result !== 'object' || + result === null || + !('session_token' in result) + ) { + throw new Error('malformed response'); + } + + this.sessionToken = result.session_token; + logger.debug(`ℹ [nvidia] session_token=${result.session_token}`); + } catch (error: unknown) { + const message: string = + typeof error === 'object' + ? (error as Error).message + : (error as string); + logger.error(`✖ [nvidia] ${message}`); + } + } + + protected async addToCartAndGetLocationRedirect( + productId: number + ): Promise { + const url = 'https://api-prod.nvidia.com/direct-sales-shop/DR/add-to-cart'; + const sessionToken = await this.getSessionToken(); + + logger.info(`ℹ [nvidia] session_token=${sessionToken}`); + + const locationData = await usingPage(this.browser, async page => { + page.removeAllListeners('request'); + + await page.setRequestInterception(true); + + page.on('request', interceptedRequest => { + void interceptedRequest.continue({ + headers: { + ...interceptedRequest.headers(), + 'content-type': 'application/json', + nvidia_shop_id: sessionToken, + }, + method: 'POST', + postData: JSON.stringify({ + products: [{productId, quantity: 1}], + }), + }); + }); + + const response = await page.goto(url, {waitUntil: 'networkidle0'}); + + if (response === null) { + throw new Error('NvidiaAddToCartUnavailable'); + } + + return response.json() as Promise; + }); + + return locationData.location; + } } diff --git a/src/store/model/helpers/nvidia.ts b/src/store/model/helpers/nvidia.ts index 4f500cd0ee..0fbe92f9d0 100644 --- a/src/store/model/helpers/nvidia.ts +++ b/src/store/model/helpers/nvidia.ts @@ -6,101 +6,98 @@ import {config} from '../../../config'; import {timestampUrlParameter} from '../../timestamp-url-parameter'; function getRegionInfo(): NvidiaRegionInfo { - let country = config.store.country.toLowerCase(); - if (!regionInfos.has(country)) { - country = 'usa'; - } + let country = config.store.country.toLowerCase(); + if (!regionInfos.has(country)) { + country = 'usa'; + } - const regionInfo = regionInfos.get(country); - if (!regionInfo) { - throw new Error( - `LogicException could not retrieve region info for ${country}` - ); - } + const regionInfo = regionInfos.get(country); + if (!regionInfo) { + throw new Error( + `LogicException could not retrieve region info for ${country}` + ); + } - return regionInfo; + return regionInfo; } function nvidiaStockUrl( - id: number, - drLocale: string, - currency: string + id: number, + drLocale: string, + currency: string ): string { - return ( - `https://api-prod.nvidia.com/direct-sales-shop/DR/products/${drLocale}/${currency}/${id}?` + - timestampUrlParameter().slice(1) - ); + return ( + `https://api-prod.nvidia.com/direct-sales-shop/DR/products/${drLocale}/${currency}/${id}?` + + timestampUrlParameter().slice(1) + ); } let cart: NvidiaCart; export function generateSetupAction() { - return async (browser: Browser) => { - cart = new NvidiaCart(browser); + return async (browser: Browser) => { + cart = new NvidiaCart(browser); - if (config.browser.open) { - cart.keepAlive(); - } - }; + if (config.browser.open) { + cart.keepAlive(); + } + }; } export function generateOpenCartAction(id: number, cardName: string) { - return async () => { - const url = await cart.addToCard(id, cardName); + return async () => { + const url = await cart.addToCard(id, cardName); - return url; - }; + return url; + }; } export function generateLinks(): Link[] { - const { - drLocale, - fe3080Id, - fe3090Id, - fe2060SuperId, - currency - } = getRegionInfo(); + const { + drLocale, + fe3080Id, + fe3090Id, + fe2060SuperId, + currency, + } = getRegionInfo(); - const links: Link[] = []; + const links: Link[] = []; - if (fe2060SuperId) { - links.push({ - brand: 'test:brand', - model: 'test:model', - openCartAction: generateOpenCartAction( - fe2060SuperId, - 'TEST CARD debug' - ), - series: 'test:series', - url: nvidiaStockUrl(fe2060SuperId, drLocale, currency) - }); - } + if (fe2060SuperId) { + links.push({ + brand: 'test:brand', + model: 'test:model', + openCartAction: generateOpenCartAction(fe2060SuperId, 'TEST CARD debug'), + series: 'test:series', + url: nvidiaStockUrl(fe2060SuperId, drLocale, currency), + }); + } - if (fe3080Id) { - links.push({ - brand: 'nvidia', - model: 'founders edition', - openCartAction: generateOpenCartAction( - fe3080Id, - 'nvidia founders edition 3080' - ), - series: '3080', - url: nvidiaStockUrl(fe3080Id, drLocale, currency) - }); - } + if (fe3080Id) { + links.push({ + brand: 'nvidia', + model: 'founders edition', + openCartAction: generateOpenCartAction( + fe3080Id, + 'nvidia founders edition 3080' + ), + series: '3080', + url: nvidiaStockUrl(fe3080Id, drLocale, currency), + }); + } - if (fe3090Id) { - links.push({ - brand: 'nvidia', - model: 'founders edition', - openCartAction: generateOpenCartAction( - fe3090Id, - 'nvidia founders edition 3090' - ), - series: '3090', - url: nvidiaStockUrl(fe3090Id, drLocale, currency) - }); - } + if (fe3090Id) { + links.push({ + brand: 'nvidia', + model: 'founders edition', + openCartAction: generateOpenCartAction( + fe3090Id, + 'nvidia founders edition 3090' + ), + series: '3090', + url: nvidiaStockUrl(fe3090Id, drLocale, currency), + }); + } - return links; + return links; } diff --git a/src/store/model/igame.ts b/src/store/model/igame.ts index c4b363858c..4696124781 100644 --- a/src/store/model/igame.ts +++ b/src/store/model/igame.ts @@ -1,96 +1,95 @@ import {Store} from './store'; export const Igamecomputer: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: - 'div.product-form__controls-group.product-form__controls-group--submit > div > button', - text: ['ADD TO CART'] - }, - maxPrice: { - container: - 'div.price__pricing-group > div.price__regular > dd > span', - euroFormat: false - }, - outOfStock: { - container: - '#product_form_6084255350971 > div.product-form__controls-group.product-form__controls-group--submit > div > button', - text: ['SOLD OUT'] - } - }, - links: [ - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.igamecomputer.com.au/products/a0068?_pos=5&_sid=42c0f4fc6&_ss=r' - }, - { - brand: 'colorful', - model: 'igame ultra oc', - series: '3080', - url: - 'https://www.igamecomputer.com.au/products/mc026?_pos=3&_sid=42c0f4fc6&_ss=r' - }, - { - brand: 'colorful', - model: 'igame advanced', - series: '3080', - url: - 'https://www.igamecomputer.com.au/products/mc024?_pos=4&_sid=42c0f4fc6&_ss=r' - }, - { - brand: 'colorful', - model: 'igame advanced oc', - series: '3080', - url: - 'https://www.igamecomputer.com.au/products/mc025?_pos=2&_sid=42c0f4fc6&_ss=r' - }, - { - brand: 'colorful', - model: 'igame vulcan oc', - series: '3080', - url: - 'https://www.igamecomputer.com.au/products/mc023?_pos=1&_sid=42c0f4fc6&_ss=r' - }, - { - brand: 'colorful', - model: 'battle-ax', - series: '3090', - url: - 'https://www.igamecomputer.com.au/products/mc022?_pos=1&_sid=b07af5f7e&_ss=r' - }, - { - brand: 'colorful', - model: 'igame advanced oc', - series: '3090', - url: - 'https://www.igamecomputer.com.au/products/mc021?_pos=2&_sid=b07af5f7e&_ss=r' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.igamecomputer.com.au/products/a0126?_pos=1&_psq=5900x&_ss=e&_v=1.0' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.igamecomputer.com.au/products/a0125?_pos=1&_psq=5800x&_ss=e&_v=1.0' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.igamecomputer.com.au/products/a0124?_pos=1&_psq=5600x&_ss=e&_v=1.0' - } - ], - name: 'igame-computer' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: + 'div.product-form__controls-group.product-form__controls-group--submit > div > button', + text: ['ADD TO CART'], + }, + maxPrice: { + container: 'div.price__pricing-group > div.price__regular > dd > span', + euroFormat: false, + }, + outOfStock: { + container: + '#product_form_6084255350971 > div.product-form__controls-group.product-form__controls-group--submit > div > button', + text: ['SOLD OUT'], + }, + }, + links: [ + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.igamecomputer.com.au/products/a0068?_pos=5&_sid=42c0f4fc6&_ss=r', + }, + { + brand: 'colorful', + model: 'igame ultra oc', + series: '3080', + url: + 'https://www.igamecomputer.com.au/products/mc026?_pos=3&_sid=42c0f4fc6&_ss=r', + }, + { + brand: 'colorful', + model: 'igame advanced', + series: '3080', + url: + 'https://www.igamecomputer.com.au/products/mc024?_pos=4&_sid=42c0f4fc6&_ss=r', + }, + { + brand: 'colorful', + model: 'igame advanced oc', + series: '3080', + url: + 'https://www.igamecomputer.com.au/products/mc025?_pos=2&_sid=42c0f4fc6&_ss=r', + }, + { + brand: 'colorful', + model: 'igame vulcan oc', + series: '3080', + url: + 'https://www.igamecomputer.com.au/products/mc023?_pos=1&_sid=42c0f4fc6&_ss=r', + }, + { + brand: 'colorful', + model: 'battle-ax', + series: '3090', + url: + 'https://www.igamecomputer.com.au/products/mc022?_pos=1&_sid=b07af5f7e&_ss=r', + }, + { + brand: 'colorful', + model: 'igame advanced oc', + series: '3090', + url: + 'https://www.igamecomputer.com.au/products/mc021?_pos=2&_sid=b07af5f7e&_ss=r', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.igamecomputer.com.au/products/a0126?_pos=1&_psq=5900x&_ss=e&_v=1.0', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.igamecomputer.com.au/products/a0125?_pos=1&_psq=5800x&_ss=e&_v=1.0', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.igamecomputer.com.au/products/a0124?_pos=1&_psq=5600x&_ss=e&_v=1.0', + }, + ], + name: 'igame-computer', }; diff --git a/src/store/model/index.ts b/src/store/model/index.ts index b134a4f30e..a2e37e5a97 100644 --- a/src/store/model/index.ts +++ b/src/store/model/index.ts @@ -133,136 +133,136 @@ import {Zotac} from './zotac'; import {logger} from '../../logger'; export const storeList = new Map([ - [AComPC.name, AComPC], - [Adorama.name, Adorama], - [Allneeds.name, Allneeds], - [Akinformatica.name, Akinformatica], - [Alternate.name, Alternate], - [AlternateNL.name, AlternateNL], - [Amazon.name, Amazon], - [AmazonCa.name, AmazonCa], - [AmazonDe.name, AmazonDe], - [AmazonDeWarehouse.name, AmazonDeWarehouse], - [AmazonEs.name, AmazonEs], - [AmazonFr.name, AmazonFr], - [AmazonNl.name, AmazonNl], - [AmazonUk.name, AmazonUk], - [AmazonSg.name, AmazonSg], - [AmazonIt.name, AmazonIt], - [Amd.name, Amd], - [AmdCa.name, AmdCa], - [AmdDe.name, AmdDe], - [AmdIt.name, AmdIt], - [AmdUk.name, AmdUk], - [AntOnline.name, AntOnline], - [Argos.name, Argos], - [ArgosIE.name, Argos], - [Aria.name, Aria], - [Arlt.name, Arlt], - [Asus.name, Asus], - [AsusDe.name, AsusDe], - [Awd.name, Awd], - [Azerty.name, Azerty], - [BAndH.name, BAndH], - [BestBuy.name, BestBuy], - [BestBuyCa.name, BestBuyCa], - [Box.name, Box], - [Bpctech.name, Bpctech], - [BpmPower.name, BpmPower], - [Caseking.name, Caseking], - [CanadaComputers.name, CanadaComputers], - [Ccl.name, Ccl], - [Centrecom.name, Centrecom], - [Comet.name, Comet], - [ComputerAlliance.name, ComputerAlliance], - [Computeruniverse.name, Computeruniverse], - [Coolblue.name, Coolblue], - [Coolmod.name, Coolmod], - [Corsair.name, Corsair], - [Cpl.name, Cpl], - [Currys.name, Currys], - [Cyberport.name, Cyberport], - [Dcomp.name, Dcomp], - [Drako.name, Drako], - [EbGames.name, EbGames], - [Ebuyer.name, Ebuyer], - [Elcorteingles.name, Elcorteingles], - [Eprice.name, Eprice], - [Equippr.name, Equippr], - [Euronics.name, Euronics], - [EuronicsDE.name, EuronicsDE], - [Evatech.name, Evatech], - [Evga.name, Evga], - [EvgaEu.name, EvgaEu], - [Expert.name, Expert], - [Futurex.name, Futurex], - [Galaxus.name, Galaxus], - [Game.name, Game], - [Gamestop.name, Gamestop], - [GamestopDE.name, GamestopDE], - [GamestopIE.name, GamestopIE], - [GamestopIT.name, GamestopIT], - [HardwarePlanet.name, HardwarePlanet], - [HarrisTechnology.name, HarrisTechnology], - [HarveyNormanIE.name, HarveyNormanIE], - [Igamecomputer.name, Igamecomputer], - [JohnLewis.name, JohnLewis], - [Kabum.name, Kabum], - [LandmarkComputers.name, LandmarkComputers], - [Mediamarkt.name, Mediamarkt], - [Medimax.name, Medimax], - [Megekko.name, Megekko], - [MemoryExpress.name, MemoryExpress], - [MicroCenter.name, MicroCenter], - [Mindfactory.name, Mindfactory], - [Msy.name, Msy], - [Mwave.name, Mwave], - [Newegg.name, Newegg], - [NeweggCa.name, NeweggCa], - [NeweggSg.name, NeweggSg], - [Notebooksbilliger.name, Notebooksbilliger], - [Novatech.name, Novatech], - [Nvidia.name, Nvidia], - [NvidiaApi.name, NvidiaApi], - [OfficeDepot.name, OfficeDepot], - [Ollo.name, Ollo], - [Otto.name, Otto], - [Overclockers.name, Overclockers], - [PBTech.name, PBTech], - [PCByte.name, PCByte], - [Pccg.name, Pccg], - [PCKing.name, PCKing], - [PCComponentes.name, PCComponentes], - [PlayStation.name, PlayStation], - [Pny.name, Pny], - [ProshopDE.name, ProshopDE], - [ProshopDK.name, ProshopDK], - [Rosman.name, Rosman], - [RosmanMelb.name, RosmanMelb], - [Saturn.name, Saturn], - [SaveOnIt.name, SaveOnIt], - [Scan.name, Scan], - [Scorptec.name, Scorptec], - [ShopTo.name, ShopTo], - [SmythsToysIE.name, SmythsToysIE], - [SmythsToys.name, SmythsToys], - [Spielegrotte.name, Spielegrotte], - [StormComputers.name, StormComputers], - [Target.name, Target], - [TescoIE.name, TescoIE], - [TopAchat.name, TopAchat], - [ToysRUs.name, ToysRUs], - [Umart.name, Umart], - [Unieuro.name, Unieuro], - [Very.name, Very], - [VsGamers.name, VsGamers], - [Vuugo.name, Vuugo], - [Walmart.name, Walmart], - [WalmartCa.name, WalmartCa], - [WellsTechnology.name, WellsTechnology], - [Wipoid.name, Wipoid], - [Xbox.name, Xbox], - [Zotac.name, Zotac] + [AComPC.name, AComPC], + [Adorama.name, Adorama], + [Allneeds.name, Allneeds], + [Akinformatica.name, Akinformatica], + [Alternate.name, Alternate], + [AlternateNL.name, AlternateNL], + [Amazon.name, Amazon], + [AmazonCa.name, AmazonCa], + [AmazonDe.name, AmazonDe], + [AmazonDeWarehouse.name, AmazonDeWarehouse], + [AmazonEs.name, AmazonEs], + [AmazonFr.name, AmazonFr], + [AmazonNl.name, AmazonNl], + [AmazonUk.name, AmazonUk], + [AmazonSg.name, AmazonSg], + [AmazonIt.name, AmazonIt], + [Amd.name, Amd], + [AmdCa.name, AmdCa], + [AmdDe.name, AmdDe], + [AmdIt.name, AmdIt], + [AmdUk.name, AmdUk], + [AntOnline.name, AntOnline], + [Argos.name, Argos], + [ArgosIE.name, Argos], + [Aria.name, Aria], + [Arlt.name, Arlt], + [Asus.name, Asus], + [AsusDe.name, AsusDe], + [Awd.name, Awd], + [Azerty.name, Azerty], + [BAndH.name, BAndH], + [BestBuy.name, BestBuy], + [BestBuyCa.name, BestBuyCa], + [Box.name, Box], + [Bpctech.name, Bpctech], + [BpmPower.name, BpmPower], + [Caseking.name, Caseking], + [CanadaComputers.name, CanadaComputers], + [Ccl.name, Ccl], + [Centrecom.name, Centrecom], + [Comet.name, Comet], + [ComputerAlliance.name, ComputerAlliance], + [Computeruniverse.name, Computeruniverse], + [Coolblue.name, Coolblue], + [Coolmod.name, Coolmod], + [Corsair.name, Corsair], + [Cpl.name, Cpl], + [Currys.name, Currys], + [Cyberport.name, Cyberport], + [Dcomp.name, Dcomp], + [Drako.name, Drako], + [EbGames.name, EbGames], + [Ebuyer.name, Ebuyer], + [Elcorteingles.name, Elcorteingles], + [Eprice.name, Eprice], + [Equippr.name, Equippr], + [Euronics.name, Euronics], + [EuronicsDE.name, EuronicsDE], + [Evatech.name, Evatech], + [Evga.name, Evga], + [EvgaEu.name, EvgaEu], + [Expert.name, Expert], + [Futurex.name, Futurex], + [Galaxus.name, Galaxus], + [Game.name, Game], + [Gamestop.name, Gamestop], + [GamestopDE.name, GamestopDE], + [GamestopIE.name, GamestopIE], + [GamestopIT.name, GamestopIT], + [HardwarePlanet.name, HardwarePlanet], + [HarrisTechnology.name, HarrisTechnology], + [HarveyNormanIE.name, HarveyNormanIE], + [Igamecomputer.name, Igamecomputer], + [JohnLewis.name, JohnLewis], + [Kabum.name, Kabum], + [LandmarkComputers.name, LandmarkComputers], + [Mediamarkt.name, Mediamarkt], + [Medimax.name, Medimax], + [Megekko.name, Megekko], + [MemoryExpress.name, MemoryExpress], + [MicroCenter.name, MicroCenter], + [Mindfactory.name, Mindfactory], + [Msy.name, Msy], + [Mwave.name, Mwave], + [Newegg.name, Newegg], + [NeweggCa.name, NeweggCa], + [NeweggSg.name, NeweggSg], + [Notebooksbilliger.name, Notebooksbilliger], + [Novatech.name, Novatech], + [Nvidia.name, Nvidia], + [NvidiaApi.name, NvidiaApi], + [OfficeDepot.name, OfficeDepot], + [Ollo.name, Ollo], + [Otto.name, Otto], + [Overclockers.name, Overclockers], + [PBTech.name, PBTech], + [PCByte.name, PCByte], + [Pccg.name, Pccg], + [PCKing.name, PCKing], + [PCComponentes.name, PCComponentes], + [PlayStation.name, PlayStation], + [Pny.name, Pny], + [ProshopDE.name, ProshopDE], + [ProshopDK.name, ProshopDK], + [Rosman.name, Rosman], + [RosmanMelb.name, RosmanMelb], + [Saturn.name, Saturn], + [SaveOnIt.name, SaveOnIt], + [Scan.name, Scan], + [Scorptec.name, Scorptec], + [ShopTo.name, ShopTo], + [SmythsToysIE.name, SmythsToysIE], + [SmythsToys.name, SmythsToys], + [Spielegrotte.name, Spielegrotte], + [StormComputers.name, StormComputers], + [Target.name, Target], + [TescoIE.name, TescoIE], + [TopAchat.name, TopAchat], + [ToysRUs.name, ToysRUs], + [Umart.name, Umart], + [Unieuro.name, Unieuro], + [Very.name, Very], + [VsGamers.name, VsGamers], + [Vuugo.name, Vuugo], + [Walmart.name, Walmart], + [WalmartCa.name, WalmartCa], + [WellsTechnology.name, WellsTechnology], + [Wipoid.name, Wipoid], + [Xbox.name, Xbox], + [Zotac.name, Zotac], ]); const brands = new Set(); @@ -271,114 +271,110 @@ const series = new Set(); const stores = new Map(); function filterBrandsSeriesModels() { - brands.clear(); - series.clear(); - models.clear(); + brands.clear(); + series.clear(); + models.clear(); - for (const store of storeList.values()) { - for (const link of store.links) { - brands.add(link.brand); - series.add(link.series); - models.add(link.model); - } + for (const store of storeList.values()) { + for (const link of store.links) { + brands.add(link.brand); + series.add(link.series); + models.add(link.model); + } - if (store.minPageSleep === undefined) { - store.minPageSleep = defaultStoreData.minPageSleep; - } + if (store.minPageSleep === undefined) { + store.minPageSleep = defaultStoreData.minPageSleep; + } - if (store.maxPageSleep === undefined) { - store.maxPageSleep = defaultStoreData.maxPageSleep; - } - } + if (store.maxPageSleep === undefined) { + store.maxPageSleep = defaultStoreData.maxPageSleep; + } + } } function printConfig() { - if (config.store.stores.length > 0) { - logger.info( - `ℹ selected stores: ${config.store.stores - .map((store) => store.name) - .join(', ')}` - ); - } + if (config.store.stores.length > 0) { + logger.info( + `ℹ selected stores: ${config.store.stores + .map(store => store.name) + .join(', ')}` + ); + } - if (config.store.showOnlyBrands.length > 0) { - logger.info( - `ℹ selected brands: ${config.store.showOnlyBrands.join(', ')}` - ); - } + if (config.store.showOnlyBrands.length > 0) { + logger.info(`ℹ selected brands: ${config.store.showOnlyBrands.join(', ')}`); + } - if (config.store.showOnlyModels.length > 0) { - logger.info( - `ℹ selected models: ${config.store.showOnlyModels - .map((entry) => { - return entry.series - ? entry.name + ' (' + entry.series + ')' - : entry.name; - }) - .join(', ')}` - ); - } + if (config.store.showOnlyModels.length > 0) { + logger.info( + `ℹ selected models: ${config.store.showOnlyModels + .map(entry => { + return entry.series + ? entry.name + ' (' + entry.series + ')' + : entry.name; + }) + .join(', ')}` + ); + } - if (config.store.showOnlySeries.length > 0) { - logger.info( - `ℹ selected series: ${config.store.showOnlySeries.join(', ')}` - ); - } + if (config.store.showOnlySeries.length > 0) { + logger.info(`ℹ selected series: ${config.store.showOnlySeries.join(', ')}`); + } } function warnIfStoreDeprecated(store: Store) { - switch (store.name) { - case 'nvidia': - case 'nvidia-api': - if (config.store.country === 'usa') - logger.warn(`${store.name} is deprecated in favor of bestbuy`); - break; - case 'evga': - logger.warn( - `${store.name} is deprecated since they only support queuing` - ); - break; - default: - } + switch (store.name) { + case 'nvidia': + case 'nvidia-api': + if (config.store.country === 'usa') + logger.warn(`${store.name} is deprecated in favor of bestbuy`); + break; + case 'evga': + logger.warn( + `${store.name} is deprecated since they only support queuing` + ); + break; + default: + } } export function updateStores() { - stores.clear(); + stores.clear(); - for (const storeData of config.store.stores) { - const store = storeList.get(storeData.name); + for (const storeData of config.store.stores) { + const store = storeList.get(storeData.name); - if (store) { - warnIfStoreDeprecated(store); - stores.set(storeData.name, store); - store.minPageSleep = storeData.minPageSleep; - store.maxPageSleep = storeData.maxPageSleep; - store.proxyList = storeData.proxyList; - } else { - logger.warn(`No store named ${storeData.name}, skipping.`); - } - } + if (store) { + warnIfStoreDeprecated(store); + stores.set(storeData.name, store); + store.minPageSleep = storeData.minPageSleep; + store.maxPageSleep = storeData.maxPageSleep; + store.proxyList = storeData.proxyList; + } else { + logger.warn(`No store named ${storeData.name}, skipping.`); + } + } - filterBrandsSeriesModels(); - printConfig(); + filterBrandsSeriesModels(); + printConfig(); } updateStores(); export function getAllBrands() { - return [...brands]; + return [...brands]; } export function getAllSeries() { - return [...series]; + return [...series]; } export function getAllModels() { - return [...models]; + return [...models]; } export function getStores() { - return stores; + return stores; } export * from './store'; diff --git a/src/store/model/johnlewis.ts b/src/store/model/johnlewis.ts index cd2a0a4c77..2215ccebf1 100644 --- a/src/store/model/johnlewis.ts +++ b/src/store/model/johnlewis.ts @@ -1,28 +1,28 @@ import {Store} from './store'; export const JohnLewis: Store = { - currency: '£', - labels: { - inStock: { - container: '#button--add-to-basket', - text: ['Add to your basket'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.johnlewis.com/sony-playstation-5-dualsense-wireless-controller-white/p5192093' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.johnlewis.com/sony-playstation-5-console-with-dualsense-controller/white/p5115192' - } - ], - name: 'johnlewis' + currency: '£', + labels: { + inStock: { + container: '#button--add-to-basket', + text: ['Add to your basket'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.johnlewis.com/sony-playstation-5-dualsense-wireless-controller-white/p5192093', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.johnlewis.com/sony-playstation-5-console-with-dualsense-controller/white/p5115192', + }, + ], + name: 'johnlewis', }; diff --git a/src/store/model/kabum.ts b/src/store/model/kabum.ts index 00ff314fe1..917958f381 100644 --- a/src/store/model/kabum.ts +++ b/src/store/model/kabum.ts @@ -1,172 +1,172 @@ import {Store} from './store'; export const Kabum: Store = { - currency: 'R$', - labels: { - inStock: { - container: '.botao-comprar', - text: ['comprar'] - }, - outOfStock: { - container: '.bot_comprar', - text: ['indisponível'] - } - }, - links: [ - // AMD - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.kabum.com.br/produto/129461' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.kabum.com.br/produto/129460' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.kabum.com.br/produto/129459' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.kabum.com.br/produto/129451' - }, - // 3070 - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: 'https://www.kabum.com.br/produto/130209' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: 'https://www.kabum.com.br/produto/130210' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3070', - url: 'https://www.kabum.com.br/produto/129938' - }, - { - brand: 'asus', - model: 'dual fan', - series: '3070', - url: 'https://www.kabum.com.br/produto/128634' - }, - { - brand: 'asus', - model: 'dual fan', - series: '3070', - url: 'https://www.kabum.com.br/produto/128635' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: 'https://www.kabum.com.br/produto/130379' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.kabum.com.br/produto/130380' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: 'https://www.kabum.com.br/produto/130381' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: 'https://www.kabum.com.br/produto/129208' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: 'https://www.kabum.com.br/produto/129207' - }, - // 3080 - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.kabum.com.br/produto/127409' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3080', - url: 'https://www.kabum.com.br/produto/127410' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.kabum.com.br/produto/121138' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.kabum.com.br/produto/128078' - }, - { - brand: 'evga', - model: 'ichill x3', - series: '3080', - url: 'https://www.kabum.com.br/produto/128051' - }, - { - brand: 'evga', - model: 'ichill x3', - series: '3080', - url: 'https://www.kabum.com.br/produto/128052' - }, - // 3090 - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: 'https://www.kabum.com.br/produto/127407' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3090', - url: 'https://www.kabum.com.br/produto/127408' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: 'https://www.kabum.com.br/produto/127511' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: 'https://www.kabum.com.br/produto/128026' - }, - { - brand: 'gigabyte', - model: 'gaming', - series: '3090', - url: 'https://www.kabum.com.br/produto/128199' - } - ], - name: 'kabum' + currency: 'R$', + labels: { + inStock: { + container: '.botao-comprar', + text: ['comprar'], + }, + outOfStock: { + container: '.bot_comprar', + text: ['indisponível'], + }, + }, + links: [ + // AMD + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.kabum.com.br/produto/129461', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.kabum.com.br/produto/129460', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.kabum.com.br/produto/129459', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.kabum.com.br/produto/129451', + }, + // 3070 + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: 'https://www.kabum.com.br/produto/130209', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: 'https://www.kabum.com.br/produto/130210', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3070', + url: 'https://www.kabum.com.br/produto/129938', + }, + { + brand: 'asus', + model: 'dual fan', + series: '3070', + url: 'https://www.kabum.com.br/produto/128634', + }, + { + brand: 'asus', + model: 'dual fan', + series: '3070', + url: 'https://www.kabum.com.br/produto/128635', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: 'https://www.kabum.com.br/produto/130379', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.kabum.com.br/produto/130380', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.kabum.com.br/produto/130381', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: 'https://www.kabum.com.br/produto/129208', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: 'https://www.kabum.com.br/produto/129207', + }, + // 3080 + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.kabum.com.br/produto/127409', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3080', + url: 'https://www.kabum.com.br/produto/127410', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.kabum.com.br/produto/121138', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.kabum.com.br/produto/128078', + }, + { + brand: 'evga', + model: 'ichill x3', + series: '3080', + url: 'https://www.kabum.com.br/produto/128051', + }, + { + brand: 'evga', + model: 'ichill x3', + series: '3080', + url: 'https://www.kabum.com.br/produto/128052', + }, + // 3090 + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.kabum.com.br/produto/127407', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3090', + url: 'https://www.kabum.com.br/produto/127408', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.kabum.com.br/produto/127511', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: 'https://www.kabum.com.br/produto/128026', + }, + { + brand: 'gigabyte', + model: 'gaming', + series: '3090', + url: 'https://www.kabum.com.br/produto/128199', + }, + ], + name: 'kabum', }; diff --git a/src/store/model/lmc.ts b/src/store/model/lmc.ts index 7570421c26..0544e10346 100644 --- a/src/store/model/lmc.ts +++ b/src/store/model/lmc.ts @@ -1,37 +1,37 @@ import {Store} from './store'; export const LandmarkComputers: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: '.stock-info-message', - text: ['In Stock', 'Low In Stock', 'Stock in warehouse'] - }, - maxPrice: { - container: '.product-views-price-lead', - euroFormat: false - }, - outOfStock: { - container: '.stock-info-message', - text: ['Pre-order', 'Call for ETA'] - } - }, - links: [ - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.lmc.com.au/msi-geforce-rtx-3080-gaming-x-trio-10g-gaming-graphics-card' - }, - { - brand: 'leadtek', - model: 'hurricane', - series: '3080', - url: - 'https://www.lmc.com.au/leadtek-geforce-rtx-3080-hurricane-12789000110-10g-gddr6x-hdmi2.1-3xdp1.4a' - } - ], - name: 'landmark-computers' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: '.stock-info-message', + text: ['In Stock', 'Low In Stock', 'Stock in warehouse'], + }, + maxPrice: { + container: '.product-views-price-lead', + euroFormat: false, + }, + outOfStock: { + container: '.stock-info-message', + text: ['Pre-order', 'Call for ETA'], + }, + }, + links: [ + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.lmc.com.au/msi-geforce-rtx-3080-gaming-x-trio-10g-gaming-graphics-card', + }, + { + brand: 'leadtek', + model: 'hurricane', + series: '3080', + url: + 'https://www.lmc.com.au/leadtek-geforce-rtx-3080-hurricane-12789000110-10g-gddr6x-hdmi2.1-3xdp1.4a', + }, + ], + name: 'landmark-computers', }; diff --git a/src/store/model/mediamarkt.ts b/src/store/model/mediamarkt.ts index da87611d04..8b1d885896 100644 --- a/src/store/model/mediamarkt.ts +++ b/src/store/model/mediamarkt.ts @@ -1,293 +1,293 @@ import {Store} from './store'; export const Mediamarkt: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '€', - labels: { - captcha: { - container: 'p', - text: ['Das ging uns leider zu schnell.'] - }, - maxPrice: { - container: 'span[font-family="price"]', - euroFormat: false - }, - outOfStock: [ - { - container: '#root', - text: ['Dieser Artikel ist aktuell nicht verfügbar.'] - }, - { - container: '#root', - text: ['Leider keine Lieferung möglich'] - }, - { - container: '#root', - text: ['Nicht verfügbar'] - }, - { - container: '#root', - text: ['Dieser Artikel ist dauerhaft ausverkauft'] - }, - { - container: '#root', - text: ['Dieser Artikel ist bald wieder für Sie verfügbar'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.mediamarkt.de/de/product/-2641856.html' - }, - { - brand: 'asus', - model: 'dual', - series: '3060ti', - url: 'https://www.mediamarkt.de/de/product/-2701239.html' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3060ti', - url: 'https://www.mediamarkt.de/de/product/-2704436.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2691243.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2691244.html' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2691245.html' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2691246.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2691247.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2691439.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2691444.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2696163.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2696164.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2694894.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2694896.html' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2694898.html' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2695942.html' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2695941.html' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2691365.html' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: 'https://www.mediamarkt.de/de/product/-2695671.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2681869.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2681871.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2681859.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2681861.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2683942.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2683937.html' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2684241.html' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2684238.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2683227.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2683229.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: 'https://www.mediamarkt.de/de/product/-2683243.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: 'https://www.mediamarkt.de/de/product/-2681863.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: 'https://www.mediamarkt.de/de/product/-2681866.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: 'https://www.mediamarkt.de/de/product/-2681855.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: 'https://www.mediamarkt.de/de/product/-2681857.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: 'https://www.mediamarkt.de/de/product/-2691441.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: 'https://www.mediamarkt.de/de/product/-2691440.html' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3090', - url: 'https://www.mediamarkt.de/de/product/-2684235.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: 'https://www.mediamarkt.de/de/product/-2683226.html' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.mediamarkt.de/de/product/-2661938.html' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.mediamarkt.de/de/product/-2661939.html' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.mediamarkt.de/de/product/-2677360.html' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.mediamarkt.de/de/product/-2677359.html' - } - ], - name: 'mediamarkt' + backoffStatusCodes: [403, 429, 503], + currency: '€', + labels: { + captcha: { + container: 'p', + text: ['Das ging uns leider zu schnell.'], + }, + maxPrice: { + container: 'span[font-family="price"]', + euroFormat: false, + }, + outOfStock: [ + { + container: '#root', + text: ['Dieser Artikel ist aktuell nicht verfügbar.'], + }, + { + container: '#root', + text: ['Leider keine Lieferung möglich'], + }, + { + container: '#root', + text: ['Nicht verfügbar'], + }, + { + container: '#root', + text: ['Dieser Artikel ist dauerhaft ausverkauft'], + }, + { + container: '#root', + text: ['Dieser Artikel ist bald wieder für Sie verfügbar'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.mediamarkt.de/de/product/-2641856.html', + }, + { + brand: 'asus', + model: 'dual', + series: '3060ti', + url: 'https://www.mediamarkt.de/de/product/-2701239.html', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3060ti', + url: 'https://www.mediamarkt.de/de/product/-2704436.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2691243.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2691244.html', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2691245.html', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2691246.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2691247.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2691439.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2691444.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2696163.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2696164.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2694894.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2694896.html', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2694898.html', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2695942.html', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2695941.html', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2691365.html', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: 'https://www.mediamarkt.de/de/product/-2695671.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2681869.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2681871.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2681859.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2681861.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2683942.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2683937.html', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2684241.html', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2684238.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2683227.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2683229.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: 'https://www.mediamarkt.de/de/product/-2683243.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: 'https://www.mediamarkt.de/de/product/-2681863.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.mediamarkt.de/de/product/-2681866.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.mediamarkt.de/de/product/-2681855.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.mediamarkt.de/de/product/-2681857.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.mediamarkt.de/de/product/-2691441.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: 'https://www.mediamarkt.de/de/product/-2691440.html', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: 'https://www.mediamarkt.de/de/product/-2684235.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.mediamarkt.de/de/product/-2683226.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/-2661938.html', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.mediamarkt.de/de/product/-2661939.html', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.mediamarkt.de/de/product/-2677360.html', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.mediamarkt.de/de/product/-2677359.html', + }, + ], + name: 'mediamarkt', }; diff --git a/src/store/model/medimax.ts b/src/store/model/medimax.ts index 107e90cc21..7bae72c180 100644 --- a/src/store/model/medimax.ts +++ b/src/store/model/medimax.ts @@ -1,47 +1,47 @@ import {Store} from './store'; export const Medimax: Store = { - currency: '€', - labels: { - inStock: [ - { - container: '.product-cart-add-to-cart-button', - text: ['In den Warenkorb'] - }, - { - container: '.stock-message', - text: ['Lieferung in'] - } - ], - maxPrice: { - container: '.priceOfProduct', - euroFormat: true - }, - outOfStock: { - container: '.content .large', - text: ['Ihr MEDIMAX Team'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.medimax.de/p/1311642/drivesmart-51-lmt-d-ce' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.medimax.de/p/1315336/play-station-5-825gb-ssd' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.medimax.de/p/1315337/play-station-5-digital-edition-825gb-ssd' - } - ], - name: 'medimax' + currency: '€', + labels: { + inStock: [ + { + container: '.product-cart-add-to-cart-button', + text: ['In den Warenkorb'], + }, + { + container: '.stock-message', + text: ['Lieferung in'], + }, + ], + maxPrice: { + container: '.priceOfProduct', + euroFormat: true, + }, + outOfStock: { + container: '.content .large', + text: ['Ihr MEDIMAX Team'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.medimax.de/p/1311642/drivesmart-51-lmt-d-ce', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.medimax.de/p/1315336/play-station-5-825gb-ssd', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.medimax.de/p/1315337/play-station-5-digital-edition-825gb-ssd', + }, + ], + name: 'medimax', }; diff --git a/src/store/model/megekko.ts b/src/store/model/megekko.ts index f3d98dc99d..85e285b72f 100644 --- a/src/store/model/megekko.ts +++ b/src/store/model/megekko.ts @@ -1,160 +1,160 @@ import {Store} from './store'; export const Megekko: Store = { - currency: '€', - labels: { - inStock: { - container: '.product-order .text_green', - text: ['dag', 'werkdag'] - }, - maxPrice: { - container: '.col_right_container .euro', - euroFormat: false - }, - outOfStock: { - container: '.product_detail .text_red', - text: ['minimaal 10 dagen'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.megekko.nl/product/351421/' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.megekko.nl/product/1118232/' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: 'https://www.megekko.nl/product/1119242/' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.megekko.nl/product/1119243/' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.megekko.nl/product/1118233/' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.megekko.nl/product/1118248/' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.megekko.nl/product/1118249/' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: 'https://www.megekko.nl/product/1118247/' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.megekko.nl/product/1118260/' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: 'https://www.megekko.nl/product/1118246/' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.megekko.nl/product/292736/' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: 'https://www.megekko.nl/product/293966/' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://www.megekko.nl/product/293965/' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: 'https://www.megekko.nl/product/293964/' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3080', - url: 'https://www.megekko.nl/product/296925/' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: 'https://www.megekko.nl/product/1125074/' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.megekko.nl/product/292735/' - }, - { - brand: 'inno3d', - model: 'ichill frostbite', - series: '3080', - url: 'https://www.megekko.nl/product/1125524/' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: 'https://www.megekko.nl/product/1118236/' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: 'https://www.megekko.nl/product/1118237/' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.megekko.nl/product/292742/' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.megekko.nl/product/292740/' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: 'https://www.megekko.nl/product/295473/' - } - ], - name: 'megekko' + currency: '€', + labels: { + inStock: { + container: '.product-order .text_green', + text: ['dag', 'werkdag'], + }, + maxPrice: { + container: '.col_right_container .euro', + euroFormat: false, + }, + outOfStock: { + container: '.product_detail .text_red', + text: ['minimaal 10 dagen'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.megekko.nl/product/351421/', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.megekko.nl/product/1118232/', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.megekko.nl/product/1119242/', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.megekko.nl/product/1119243/', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.megekko.nl/product/1118233/', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.megekko.nl/product/1118248/', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.megekko.nl/product/1118249/', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://www.megekko.nl/product/1118247/', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.megekko.nl/product/1118260/', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://www.megekko.nl/product/1118246/', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.megekko.nl/product/292736/', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.megekko.nl/product/293966/', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.megekko.nl/product/293965/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: 'https://www.megekko.nl/product/293964/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3080', + url: 'https://www.megekko.nl/product/296925/', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: 'https://www.megekko.nl/product/1125074/', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.megekko.nl/product/292735/', + }, + { + brand: 'inno3d', + model: 'ichill frostbite', + series: '3080', + url: 'https://www.megekko.nl/product/1125524/', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.megekko.nl/product/1118236/', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.megekko.nl/product/1118237/', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.megekko.nl/product/292742/', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.megekko.nl/product/292740/', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: 'https://www.megekko.nl/product/295473/', + }, + ], + name: 'megekko', }; diff --git a/src/store/model/memoryexpress.ts b/src/store/model/memoryexpress.ts index 1a88d1c136..0d1b8c823a 100644 --- a/src/store/model/memoryexpress.ts +++ b/src/store/model/memoryexpress.ts @@ -1,466 +1,466 @@ import {Store} from './store'; export const MemoryExpress: Store = { - currency: '$', - labels: { - maxPrice: { - container: - '#ProductPricing .GrandTotal.c-capr-pricing__grand-total > div', - euroFormat: false - }, - outOfStock: { - container: - '.c-capr-inventory-selector__details-online .c-capr-inventory-store__availability', - text: ['Out of Stock', 'Backorder'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.memoryexpress.com/Products/MX79473' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00114969' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00114970' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00114818' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00114786' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00114819' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00114923' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00114927' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00114926' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00115013' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00114925' - }, - { - brand: 'gigabyte', - model: 'gaming oc pro', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00114924' - }, - { - brand: 'evga', - model: 'xc gaming', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00115014' - }, - { - brand: 'asus', - model: 'ko', - series: '3060ti', - url: 'https://www.memoryexpress.com/Products/MX00114888' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.memoryexpress.com/Products/MX00114450' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.memoryexpress.com/Products/MX00114451' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.memoryexpress.com/Products/MX00114452' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.memoryexpress.com/Products/MX00114455' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00114687' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00113955' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00113954' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00114094' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00114095' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00114003' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00114313' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00113972' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00113956' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00113957' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00114024' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00114312' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00114092' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00114404' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00115134' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: 'https://www.memoryexpress.com/Products/MX00114907' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114566' - }, - { - brand: 'asus', - model: 'ko', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114785' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114560' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114567' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114607' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114605' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114606' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114688' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114407' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114405' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114689' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114447' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114448' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.memoryexpress.com/Products/MX00114449' - }, - // TODO: uncomment this when #1555 is merged - /* { + currency: '$', + labels: { + maxPrice: { + container: + '#ProductPricing .GrandTotal.c-capr-pricing__grand-total > div', + euroFormat: false, + }, + outOfStock: { + container: + '.c-capr-inventory-selector__details-online .c-capr-inventory-store__availability', + text: ['Out of Stock', 'Backorder'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.memoryexpress.com/Products/MX79473', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00114969', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00114970', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00114818', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00114786', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00114819', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00114923', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00114927', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00114926', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00115013', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00114925', + }, + { + brand: 'gigabyte', + model: 'gaming oc pro', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00114924', + }, + { + brand: 'evga', + model: 'xc gaming', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00115014', + }, + { + brand: 'asus', + model: 'ko', + series: '3060ti', + url: 'https://www.memoryexpress.com/Products/MX00114888', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.memoryexpress.com/Products/MX00114450', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.memoryexpress.com/Products/MX00114451', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.memoryexpress.com/Products/MX00114452', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.memoryexpress.com/Products/MX00114455', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00114687', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00113955', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00113954', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00114094', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00114095', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00114003', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00114313', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00113972', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00113956', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00113957', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00114024', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00114312', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00114092', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00114404', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00115134', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: 'https://www.memoryexpress.com/Products/MX00114907', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114566', + }, + { + brand: 'asus', + model: 'ko', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114785', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114560', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114567', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114607', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114605', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114606', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114688', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114407', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114405', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114689', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114447', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114448', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.memoryexpress.com/Products/MX00114449', + }, + // TODO: uncomment this when #1555 is merged + /* { brand: 'asus', model: 'ekwb', series: '3090', url: 'https://www.memoryexpress.com/Products/MX00115135' }, */ - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00114093' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00115133' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00114001' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00114315' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00114155' - }, - { - brand: 'evga', - model: 'xc3', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00114153' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00114154' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00114401' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00114397' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00114686' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00113953' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00113952' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00114685' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00113959' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00113958' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3090', - url: 'https://www.memoryexpress.com/Products/MX00114908' - }, - { - brand: 'sapphire', - model: 'pulse', - series: 'rx6800xt', - url: 'https://www.memoryexpress.com/Products/MX00115124' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800xt', - url: 'https://www.memoryexpress.com/Products/MX00115048' - }, - { - brand: 'xfx', - model: 'merc', - series: 'rx6800xt', - url: 'https://www.memoryexpress.com/Products/MX00114996' - }, - { - brand: 'asus', - model: 'strix oc', - series: 'rx6800', - url: 'https://www.memoryexpress.com/Products/MX00114938' - }, - { - brand: 'asus', - model: 'tuf oc', - series: 'rx6800', - url: 'https://www.memoryexpress.com/Products/MX00114937' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800', - url: 'https://www.memoryexpress.com/Products/MX00115049' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6800', - url: 'https://www.memoryexpress.com/Products/MX00115123' - }, - { - brand: 'xfx', - model: 'merc', - series: 'rx6800', - url: 'https://www.memoryexpress.com/Products/MX00114997' - }, - { - brand: 'xfx', - model: 'merc', - series: 'rx6900xt', - url: 'https://www.memoryexpress.com/Products/MX00115051' - } - ], - name: 'memoryexpress', - waitUntil: 'domcontentloaded' + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00114093', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00115133', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00114001', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00114315', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00114155', + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00114153', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00114154', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00114401', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00114397', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00114686', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00113953', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00113952', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00114685', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00113959', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00113958', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3090', + url: 'https://www.memoryexpress.com/Products/MX00114908', + }, + { + brand: 'sapphire', + model: 'pulse', + series: 'rx6800xt', + url: 'https://www.memoryexpress.com/Products/MX00115124', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800xt', + url: 'https://www.memoryexpress.com/Products/MX00115048', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6800xt', + url: 'https://www.memoryexpress.com/Products/MX00114996', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6800', + url: 'https://www.memoryexpress.com/Products/MX00114938', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6800', + url: 'https://www.memoryexpress.com/Products/MX00114937', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800', + url: 'https://www.memoryexpress.com/Products/MX00115049', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6800', + url: 'https://www.memoryexpress.com/Products/MX00115123', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6800', + url: 'https://www.memoryexpress.com/Products/MX00114997', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6900xt', + url: 'https://www.memoryexpress.com/Products/MX00115051', + }, + ], + name: 'memoryexpress', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/microcenter.ts b/src/store/model/microcenter.ts index f4fd1f367e..e70fc81d5e 100644 --- a/src/store/model/microcenter.ts +++ b/src/store/model/microcenter.ts @@ -5,227 +5,227 @@ import {logger} from '../../logger'; const microCenterLocations = config.store.microCenterLocation; const microCenterLocationToId: Map = new Map([ - ['web', '029'], - ['brooklyn', '115'], - ['brentwood', '095'], - ['cambridge', '121'], - ['chicago', '151'], - ['columbus', '141'], - ['dallas', '131'], - ['denver', '181'], - ['duluth', '065'], - ['fairfax', '081'], - ['flushing', '145'], - ['houston', '155'], - ['madison-heights', '055'], - ['marietta', '041'], - ['mayfield-heights', '051'], - ['north-jersey', '075'], - ['overland-park', '191'], - ['parkville', '125'], - ['rockville', '085'], - ['sharonville', '071'], - ['st-davids', '061'], - ['st-louis-park', '045'], - ['tustin', '101'], - ['westbury', '171'], - ['westmont', '025'], - ['yonkers', '105'] + ['web', '029'], + ['brooklyn', '115'], + ['brentwood', '095'], + ['cambridge', '121'], + ['chicago', '151'], + ['columbus', '141'], + ['dallas', '131'], + ['denver', '181'], + ['duluth', '065'], + ['fairfax', '081'], + ['flushing', '145'], + ['houston', '155'], + ['madison-heights', '055'], + ['marietta', '041'], + ['mayfield-heights', '051'], + ['north-jersey', '075'], + ['overland-park', '191'], + ['parkville', '125'], + ['rockville', '085'], + ['sharonville', '071'], + ['st-davids', '061'], + ['st-louis-park', '045'], + ['tustin', '101'], + ['westbury', '171'], + ['westmont', '025'], + ['yonkers', '105'], ]); let links: Link[] = []; let storeId: string; for (const microCenterLocation of microCenterLocations) { - if (microCenterLocationToId.get(microCenterLocation) === undefined) { - const logString = `No MicroCenter location named ${microCenterLocation}, skipping.`; - logger.warn(logString); - } else { - storeId = microCenterLocationToId.get(microCenterLocation)!; - links = links.concat([ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: `https://www.microcenter.com/product/618433/evga-geforce-rtx-2060-ko-ultra-overclocked-dual-fan-6gb-gddr6-pcie-30-graphics-card/?storeid=${storeId}` - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: `https://www.microcenter.com/product/628344/evga-geforce-rtx-3080-xc3-ultra-gaming-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: `https://www.microcenter.com/product/628346/evga-geforce-rtx-3080-ftw3-ultra-gaming-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3080', - url: `https://www.microcenter.com/product/628331/msi-geforce-rtx-3080-ventus-3x-overclocked-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: `https://www.microcenter.com/product/628303/asus-geforce-rtx-3080-tuf-gaming-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: `https://www.microcenter.com/product/628686/asus-geforce-rtx-3080-strix-overclocked-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: `https://www.microcenter.com/product/630686/asus-geforce-rtx-3070-rog-strix-overclocked-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: `https://www.microcenter.com/product/630684/asus-geforce-rtx-3070-tuf-overclocked-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: `https://www.microcenter.com/product/628330/msi-geforce-rtx-3080-gaming-x-trio-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: `https://www.microcenter.com/product/628340/evga-geforce-rtx-3080-xc3-black-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3070', - url: `https://www.microcenter.com/product/630579/evga-geforce-rtx-3070-xc3-black-gaming-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: `https://www.microcenter.com/product/628607/zotac-geforce-rtx-3080-trinity-overclocked-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3060ti', - url: `https://www.microcenter.com/product/631716/nvidia-geforce-rtx-3060ti-ti-founders-edition-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3060ti', - url: `https://www.microcenter.com/product/631531/msi-geforce-rtx-3060ti-ti-gaming-x-trio-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3060ti', - url: `https://www.microcenter.com/product/631532/msi-geforce-rtx-3060ti-ti-ventus-2x-overclocked-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3060ti', - url: `https://www.microcenter.com/product/631926/evga-geforce-rtx-3060ti-ti-ftw-ultra-gaming-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'asus', - model: 'dual oc', - series: '3060ti', - url: `https://www.microcenter.com/product/631473/asus-geforce-rtx-3060ti-ti-dual-overclocked-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'asus', - model: 'tuf', - series: '3060ti', - url: `https://www.microcenter.com/product/631469/asus-geforce-rtx-3060ti-ti-tuf-gaming-overclocked-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'asus', - model: 'strix oc', - series: '3060ti', - url: `https://www.microcenter.com/product/631283/asus-geforce-rtx-3060ti-ti-rog-strix-overclocked-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3060ti', - url: `https://www.microcenter.com/product/631742/gigabyte-geforce-rtx-3060ti-ti-gaming-overclocked-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3060ti', - url: `https://www.microcenter.com/product/631744/gigabyte-geforce-rtx-3060ti-ti-eagle-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: `https://www.microcenter.com/product/630285/amd-ryzen-5-5600x-vermeer-37ghz-6-core-am4-boxed-processor-with-wraith-stealth-cooler/?storeid=${storeId}` - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: `https://www.microcenter.com/product/630284/amd-ryzen-7-5800x-vermeer-38ghz-8-core-am4-boxed-processor/?storeid=${storeId}` - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: `https://www.microcenter.com/product/630283/amd-ryzen-9-5900x-vermeer-37ghz-12-core-am4-boxed-processor/?storeid=${storeId}` - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: `https://www.microcenter.com/product/630282/amd-ryzen-9-5950x-vermeer-34ghz-16-core-am4-boxed-processor/?storeid=${storeId}` - }, - { - brand: 'asrock', - model: 'amd reference', - series: 'rx6900xt', - url: `https://www.microcenter.com/product/632048/asrock-amd-radeon-rx-6900-xt-triple-fan-16gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'powercolor', - model: 'amd reference', - series: 'rx6900xt', - url: `https://www.microcenter.com/product/632091/powercolor-amd-radeon-rx-6900-xt-triple-fan-16gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}` - }, - { - brand: 'asus', - model: 'crosshair viii', - series: 'darkhero', - url: `https://www.microcenter.com/product/631349/asus-x570-rog-crosshair-viii-dark-hero-amd-am4-atx-motherboard/?storeid=${storeId}` - } - ]); - } + if (microCenterLocationToId.get(microCenterLocation) === undefined) { + const logString = `No MicroCenter location named ${microCenterLocation}, skipping.`; + logger.warn(logString); + } else { + storeId = microCenterLocationToId.get(microCenterLocation)!; + links = links.concat([ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: `https://www.microcenter.com/product/618433/evga-geforce-rtx-2060-ko-ultra-overclocked-dual-fan-6gb-gddr6-pcie-30-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: `https://www.microcenter.com/product/628344/evga-geforce-rtx-3080-xc3-ultra-gaming-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: `https://www.microcenter.com/product/628346/evga-geforce-rtx-3080-ftw3-ultra-gaming-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3080', + url: `https://www.microcenter.com/product/628331/msi-geforce-rtx-3080-ventus-3x-overclocked-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: `https://www.microcenter.com/product/628303/asus-geforce-rtx-3080-tuf-gaming-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: `https://www.microcenter.com/product/628686/asus-geforce-rtx-3080-strix-overclocked-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: `https://www.microcenter.com/product/630686/asus-geforce-rtx-3070-rog-strix-overclocked-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: `https://www.microcenter.com/product/630684/asus-geforce-rtx-3070-tuf-overclocked-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: `https://www.microcenter.com/product/628330/msi-geforce-rtx-3080-gaming-x-trio-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: `https://www.microcenter.com/product/628340/evga-geforce-rtx-3080-xc3-black-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3070', + url: `https://www.microcenter.com/product/630579/evga-geforce-rtx-3070-xc3-black-gaming-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: `https://www.microcenter.com/product/628607/zotac-geforce-rtx-3080-trinity-overclocked-triple-fan-10gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3060ti', + url: `https://www.microcenter.com/product/631716/nvidia-geforce-rtx-3060ti-ti-founders-edition-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060ti', + url: `https://www.microcenter.com/product/631531/msi-geforce-rtx-3060ti-ti-gaming-x-trio-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: `https://www.microcenter.com/product/631532/msi-geforce-rtx-3060ti-ti-ventus-2x-overclocked-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3060ti', + url: `https://www.microcenter.com/product/631926/evga-geforce-rtx-3060ti-ti-ftw-ultra-gaming-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'dual oc', + series: '3060ti', + url: `https://www.microcenter.com/product/631473/asus-geforce-rtx-3060ti-ti-dual-overclocked-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'tuf', + series: '3060ti', + url: `https://www.microcenter.com/product/631469/asus-geforce-rtx-3060ti-ti-tuf-gaming-overclocked-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'strix oc', + series: '3060ti', + url: `https://www.microcenter.com/product/631283/asus-geforce-rtx-3060ti-ti-rog-strix-overclocked-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3060ti', + url: `https://www.microcenter.com/product/631742/gigabyte-geforce-rtx-3060ti-ti-gaming-overclocked-triple-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3060ti', + url: `https://www.microcenter.com/product/631744/gigabyte-geforce-rtx-3060ti-ti-eagle-dual-fan-8gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: `https://www.microcenter.com/product/630285/amd-ryzen-5-5600x-vermeer-37ghz-6-core-am4-boxed-processor-with-wraith-stealth-cooler/?storeid=${storeId}`, + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: `https://www.microcenter.com/product/630284/amd-ryzen-7-5800x-vermeer-38ghz-8-core-am4-boxed-processor/?storeid=${storeId}`, + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: `https://www.microcenter.com/product/630283/amd-ryzen-9-5900x-vermeer-37ghz-12-core-am4-boxed-processor/?storeid=${storeId}`, + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: `https://www.microcenter.com/product/630282/amd-ryzen-9-5950x-vermeer-34ghz-16-core-am4-boxed-processor/?storeid=${storeId}`, + }, + { + brand: 'asrock', + model: 'amd reference', + series: 'rx6900xt', + url: `https://www.microcenter.com/product/632048/asrock-amd-radeon-rx-6900-xt-triple-fan-16gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'powercolor', + model: 'amd reference', + series: 'rx6900xt', + url: `https://www.microcenter.com/product/632091/powercolor-amd-radeon-rx-6900-xt-triple-fan-16gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'crosshair viii', + series: 'darkhero', + url: `https://www.microcenter.com/product/631349/asus-x570-rog-crosshair-viii-dark-hero-amd-am4-atx-motherboard/?storeid=${storeId}`, + }, + ]); + } } export const MicroCenter: Store = { - currency: '$', - labels: { - inStock: { - container: '#cart-options', - text: ['in stock'] - }, - maxPrice: { - container: 'span[id="pricing"]', - euroFormat: false - } - }, - links, - name: 'microcenter' + currency: '$', + labels: { + inStock: { + container: '#cart-options', + text: ['in stock'], + }, + maxPrice: { + container: 'span[id="pricing"]', + euroFormat: false, + }, + }, + links, + name: 'microcenter', }; diff --git a/src/store/model/mindfactory.ts b/src/store/model/mindfactory.ts index 78ab5a5370..87d14fd7da 100644 --- a/src/store/model/mindfactory.ts +++ b/src/store/model/mindfactory.ts @@ -1,238 +1,238 @@ import {Store} from './store'; export const Mindfactory: Store = { - currency: '€', - labels: { - inStock: { - container: '.pshipping', - text: ['lagernd', 'verfügbar'] - }, - maxPrice: { - container: 'div[class="pprice"]', - euroFormat: true - }, - outOfStock: { - container: '.pshipping', - text: ['ohne liefertermin'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.mindfactory.de/product_info.php/8GB-MSI-GeForce-RTX2070Super-GAMING-X-DDR6--Retail-_1329683.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-AORUS-MASTER-GDDR6X-3xHDMI-3xDP--Retail-_1378681.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-AORUS-XTREME-GDDR6X-3xHDMI-3xDP--Retail-_1380484.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-GeForce-RTX-3080-Gaming-OC-3xDP-2x-HDMI--Retail-_1376263.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-VISION-OC-GDDR6X-2xHDMI-3xDP--Retail-_1378682.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.mindfactory.de/product_info.php/10GB-MSI-GeForce-RTX-3080-Gaming-X-TRIO--Retail-_1376481.html' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3080', - url: - 'https://www.mindfactory.de/product_info.php/10GB-Palit-GeForce-RTX-3080-GamingPro--Retail-_1376483.html' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.mindfactory.de/product_info.php/10GB-Zotac-GeForce-RTX-3080-TRINITY-OC--GDDR6X-_1377143.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.mindfactory.de/product_info.php/24GB-Gigabyte-GeForce-3090-Gaming-OC--Retail-_1377265.html' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3090', - url: - 'https://www.mindfactory.de/product_info.php/24GB-MSI-GeForce-RTX-3090-VENTUS-3X-DDR6--Retail-_1377475.html' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3090', - url: - 'https://www.mindfactory.de/product_info.php/24GB-Palit-GeForce-RTX-3090-GamingPro-DDR6--Retail-_1377233.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.mindfactory.de/product_info.php/AMD-Ryzen-5-5600X-6x-3-70GHz-So-AM4-BOX_1380726.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.mindfactory.de/product_info.php/AMD-Ryzen-7-5800X-8x-3-80GHz-So-AM4-WOF_1380727.html' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.mindfactory.de/product_info.php/AMD-Ryzen-9-5900X-12x-3-70GHz-So-AM4-WOF_1380728.html' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.mindfactory.de/product_info.php/AMD-Ryzen-9-5950X-16x-3-40GHz-So-AM4-WOF_1380729.html' - }, - // #region 6800 - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800', - url: - 'https://www.mindfactory.de/product_info.php/16GB-Gigabyte-Radeon-RX-6800-GAMING-OC-16G_1387544.html' - }, - { - brand: 'gigabyte', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.mindfactory.de/product_info.php/16GB-Gigabyte-Radeon-RX-6800--Retail-_1387542.html' - }, - { - brand: 'powercolor', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.mindfactory.de/product_info.php/16GB-Powercolor-Radeon-RX-6800-Fighter-DDR6-Drei-Luefter-256bit--Retail_1388356.html' - }, - { - brand: 'powercolor', - model: 'red dragon', - series: 'rx6800', - url: - 'https://www.mindfactory.de/product_info.php/16GB-PowerColor-Radeon-RX-6800-Red-Dragon-DDR6-retail_1387556.html' - }, - { - brand: 'sapphire', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.mindfactory.de/product_info.php/16GB-Sapphire-Radeon-RX-6800-GDDR6-HDMI-DUAL-DP-USB-C--Retail-_1383029.html' - }, - { - brand: 'sapphire', - model: 'nitro oc', - series: 'rx6800', - url: - 'https://www.mindfactory.de/product_info.php/16GB-Sapphire-Radeon-RX-6800-NITRO--OC-HDMI-3xDP_1388341.html' - }, - { - brand: 'xfx', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.mindfactory.de/product_info.php/16GB-XFX-Radeon-RX-6800-Drei-Luefter-256bit-DDR6--Retail-_1388348.html' - }, - { - brand: 'xfx', - model: 'merc', - series: 'rx6800', - url: - 'https://www.mindfactory.de/product_info.php/16GB-XFX-Radeon-RX-6800-Speedster-MERC319-DDR6-Black-Gaming_1386624.html' - }, - // #endregion - // #region 6800xt - { - brand: 'asrock', - model: 'phantom gaming', - series: 'rx6800xt', - url: - 'https://www.mindfactory.de/product_info.php/16GB-ASRock-Radeon-RX-6800-XT-PHANTOM-GAMING-DDR6_1386619.html' - }, - { - brand: 'sapphire', - model: 'nitro oc', - series: 'rx6800xt', - url: - 'https://www.mindfactory.de/product_info.php/16GB-Sapphire-Radeon-RX-6800-XT-NITRO--OC-HDMI-3xDP_1388340.html' - }, - { - brand: 'xfx', - model: 'merc', - series: 'rx6800xt', - url: - 'https://www.mindfactory.de/product_info.php/16GB-XFX-Radeon-RX-6800-XT-Speedster-MERC319-DDR6-Black-Gaming-retail_1386623.html' - }, - // #endregion - // #region 6900xt - { - brand: 'asrock', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.mindfactory.de/product_info.php/16GB-ASRock-Radeon-6900-XT--Retail-_1388342.html' - }, - { - brand: 'msi', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.mindfactory.de/product_info.php/16GB-MSI-Radeon-6900-XT--Retail-_1388361.html' - }, - { - brand: 'powercolor', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.mindfactory.de/product_info.php/16GB-PowerColor-Radeon-RX-6900XT-DDR6-Drei-Luefter-256bit--Retail-_1388355.html' - }, - { - brand: 'xfx', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.mindfactory.de/product_info.php/16GB-XFX-Radeon-RX-6900-XT-DDR6-Drei-Luefter-256bit_1388333.html' - } - // #endregion - ], - name: 'mindfactory' + currency: '€', + labels: { + inStock: { + container: '.pshipping', + text: ['lagernd', 'verfügbar'], + }, + maxPrice: { + container: 'div[class="pprice"]', + euroFormat: true, + }, + outOfStock: { + container: '.pshipping', + text: ['ohne liefertermin'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.mindfactory.de/product_info.php/8GB-MSI-GeForce-RTX2070Super-GAMING-X-DDR6--Retail-_1329683.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-AORUS-MASTER-GDDR6X-3xHDMI-3xDP--Retail-_1378681.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-AORUS-XTREME-GDDR6X-3xHDMI-3xDP--Retail-_1380484.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-GeForce-RTX-3080-Gaming-OC-3xDP-2x-HDMI--Retail-_1376263.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.mindfactory.de/product_info.php/10GB-Gigabyte-RTX3080-VISION-OC-GDDR6X-2xHDMI-3xDP--Retail-_1378682.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.mindfactory.de/product_info.php/10GB-MSI-GeForce-RTX-3080-Gaming-X-TRIO--Retail-_1376481.html', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3080', + url: + 'https://www.mindfactory.de/product_info.php/10GB-Palit-GeForce-RTX-3080-GamingPro--Retail-_1376483.html', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.mindfactory.de/product_info.php/10GB-Zotac-GeForce-RTX-3080-TRINITY-OC--GDDR6X-_1377143.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.mindfactory.de/product_info.php/24GB-Gigabyte-GeForce-3090-Gaming-OC--Retail-_1377265.html', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3090', + url: + 'https://www.mindfactory.de/product_info.php/24GB-MSI-GeForce-RTX-3090-VENTUS-3X-DDR6--Retail-_1377475.html', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3090', + url: + 'https://www.mindfactory.de/product_info.php/24GB-Palit-GeForce-RTX-3090-GamingPro-DDR6--Retail-_1377233.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.mindfactory.de/product_info.php/AMD-Ryzen-5-5600X-6x-3-70GHz-So-AM4-BOX_1380726.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.mindfactory.de/product_info.php/AMD-Ryzen-7-5800X-8x-3-80GHz-So-AM4-WOF_1380727.html', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.mindfactory.de/product_info.php/AMD-Ryzen-9-5900X-12x-3-70GHz-So-AM4-WOF_1380728.html', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.mindfactory.de/product_info.php/AMD-Ryzen-9-5950X-16x-3-40GHz-So-AM4-WOF_1380729.html', + }, + // #region 6800 + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800', + url: + 'https://www.mindfactory.de/product_info.php/16GB-Gigabyte-Radeon-RX-6800-GAMING-OC-16G_1387544.html', + }, + { + brand: 'gigabyte', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.mindfactory.de/product_info.php/16GB-Gigabyte-Radeon-RX-6800--Retail-_1387542.html', + }, + { + brand: 'powercolor', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.mindfactory.de/product_info.php/16GB-Powercolor-Radeon-RX-6800-Fighter-DDR6-Drei-Luefter-256bit--Retail_1388356.html', + }, + { + brand: 'powercolor', + model: 'red dragon', + series: 'rx6800', + url: + 'https://www.mindfactory.de/product_info.php/16GB-PowerColor-Radeon-RX-6800-Red-Dragon-DDR6-retail_1387556.html', + }, + { + brand: 'sapphire', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.mindfactory.de/product_info.php/16GB-Sapphire-Radeon-RX-6800-GDDR6-HDMI-DUAL-DP-USB-C--Retail-_1383029.html', + }, + { + brand: 'sapphire', + model: 'nitro oc', + series: 'rx6800', + url: + 'https://www.mindfactory.de/product_info.php/16GB-Sapphire-Radeon-RX-6800-NITRO--OC-HDMI-3xDP_1388341.html', + }, + { + brand: 'xfx', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.mindfactory.de/product_info.php/16GB-XFX-Radeon-RX-6800-Drei-Luefter-256bit-DDR6--Retail-_1388348.html', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6800', + url: + 'https://www.mindfactory.de/product_info.php/16GB-XFX-Radeon-RX-6800-Speedster-MERC319-DDR6-Black-Gaming_1386624.html', + }, + // #endregion + // #region 6800xt + { + brand: 'asrock', + model: 'phantom gaming', + series: 'rx6800xt', + url: + 'https://www.mindfactory.de/product_info.php/16GB-ASRock-Radeon-RX-6800-XT-PHANTOM-GAMING-DDR6_1386619.html', + }, + { + brand: 'sapphire', + model: 'nitro oc', + series: 'rx6800xt', + url: + 'https://www.mindfactory.de/product_info.php/16GB-Sapphire-Radeon-RX-6800-XT-NITRO--OC-HDMI-3xDP_1388340.html', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6800xt', + url: + 'https://www.mindfactory.de/product_info.php/16GB-XFX-Radeon-RX-6800-XT-Speedster-MERC319-DDR6-Black-Gaming-retail_1386623.html', + }, + // #endregion + // #region 6900xt + { + brand: 'asrock', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.mindfactory.de/product_info.php/16GB-ASRock-Radeon-6900-XT--Retail-_1388342.html', + }, + { + brand: 'msi', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.mindfactory.de/product_info.php/16GB-MSI-Radeon-6900-XT--Retail-_1388361.html', + }, + { + brand: 'powercolor', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.mindfactory.de/product_info.php/16GB-PowerColor-Radeon-RX-6900XT-DDR6-Drei-Luefter-256bit--Retail-_1388355.html', + }, + { + brand: 'xfx', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.mindfactory.de/product_info.php/16GB-XFX-Radeon-RX-6900-XT-DDR6-Drei-Luefter-256bit_1388333.html', + }, + // #endregion + ], + name: 'mindfactory', }; diff --git a/src/store/model/msy.ts b/src/store/model/msy.ts index d0f0fea311..411b5bdfe2 100644 --- a/src/store/model/msy.ts +++ b/src/store/model/msy.ts @@ -1,193 +1,193 @@ import {Store} from './store'; export const Msy: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: - '.product-collateral > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2) > b:nth-child(1)', - text: ['In Stock'] - }, - maxPrice: { - container: - '#product-details-form > div > div.product-essential > div.overview > div.prices > div > span', - euroFormat: false - }, - outOfStock: { - container: 'td.spec-name:nth-child(2)', - text: ['Out of Stock'] - } - }, - links: [ - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.msy.com.au/asus-nvidia-tuf-rtx3080-10g-gaming-10gb-rtx-3080-tuf-gaming' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.msy.com.au/asus-nvidia-tuf-rtx3080-o10g-gaming-10gb-rtx-3080-tuf-gaming-vga-card' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.msy.com.au/asus-nvidia-geforce-rog-strix-rtx3080-o10g-gaming-10gb-rtx-3080-rog-strix-vga-card' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: - 'https://www.msy.com.au/gigabyte-nvidia-n3080eagle-oc-10gd-10gb-rtx-3080-eagle-oc-pci-e-vga-card' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.msy.com.au/gigabyte-nvidia-n3080gaming-oc-10gd-10gb-rtx-3080-gaming-oc-pci-e-vga-card' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.msy.com.au/gigabyte-nvidia-geforce-n3080vision-oc-10gd-10gb-rtx-3080-vision-oc-pci-e-vga-card' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3080-suprim-x-10g-10gb-rtx-3080-suprim-x-pci-e-vga-card' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3080-gaming-x-trio-10g-10gb-rtx-3080-gaming-x-trio-pci-e-vga-card' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3080-ventus-3x-10g-oc-10gb-rtx-3080-ventus-3x-oc-pci-e-vga-card' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.msy.com.au/asus-nvidia-geforce-tuf-rtx3090-o24g-gaming-24gb-rtx-3090-tuf-gaming-oc-pci-e-vga-card' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: - 'https://www.msy.com.au/gigabyte-nvidia-geforce-n3090aorus-m-24gd-24gb-rtx-3090-aorus-master-pci-e-vga-card' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: - 'https://www.msy.com.au/gigabyte-nvidia-geforce-n3090aorus-x-24gd-24gb-rtx-3090-aorus-xtreme-pci-e-vga-card' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: - 'https://www.msy.com.au/gigabyte-nvidia-n3090eagle-oc-24gd-24gb-rtx-3090-eagle-oc-pci-e-vga-card' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.msy.com.au/gigabyte-nvidia-n3090gaming-oc-24gd-24gb-rtx-3090-gaming-oc-pci-e-vga-card' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3090', - url: - 'https://www.msy.com.au/gigabyte-nvidia-geforce-n3090vision-oc-24gd-24gb-rtx-3090-vision-oc-vga-card' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3090-ventus-3x-24g-oc-24gb-rtx-3090-ventus-3x-oc-pci-e-vga-card' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3090-gaming-x-trio-24g-24gb-rtx-3090-gaming-x-trio-pci-e-vga-card' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3090', - url: - 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3090-suprim-x-24g-24gb-rtx-3090-suprim-x-pci-e-vga-card' - }, - { - brand: 'asrock', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.msy.com.au/asrock-radeon-radeon-rx6800-16g-16gb-rx-6800-pci-e-vga-card' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: 'rx6800', - url: - 'https://www.msy.com.au/msi-radeon-rx-6800-gaming-x-trio-16g-16gb-rx-6800-pci-e-vga-card' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.msy.com.au/amd-ryzen-9-5950x-100-100000059wof-up-to-49ghz-base-clock-34ghzam416-cores32-threads8mb105w-unlocked-boxed-cpu-without-cpu-cooler' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.msy.com.au/amd-ryzen-9-5900x-100-100000061wof-up-to-48ghz-base-clock-37ghzam412-cores24-threads64mb105w-unlocked-boxed-cpu-without-cpu-cooler' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.msy.com.au/amd-ryzen-7-5800x-100-100000063wof-up-to-47ghz-base-clock-38ghzam48-cores16-threads32mb105w-unlocked-boxed-cpu-without-cpu-cooler' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.msy.com.au/amd-ryzen-5-5600x-100-100000065box-up-to-46ghz-base-clock-37ghzam46-cores12-threads32mb65w-unlocked-boxed-cpu-without-cpu-cooler' - } - ], - name: 'msy' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: + '.product-collateral > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2) > b:nth-child(1)', + text: ['In Stock'], + }, + maxPrice: { + container: + '#product-details-form > div > div.product-essential > div.overview > div.prices > div > span', + euroFormat: false, + }, + outOfStock: { + container: 'td.spec-name:nth-child(2)', + text: ['Out of Stock'], + }, + }, + links: [ + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.msy.com.au/asus-nvidia-tuf-rtx3080-10g-gaming-10gb-rtx-3080-tuf-gaming', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.msy.com.au/asus-nvidia-tuf-rtx3080-o10g-gaming-10gb-rtx-3080-tuf-gaming-vga-card', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.msy.com.au/asus-nvidia-geforce-rog-strix-rtx3080-o10g-gaming-10gb-rtx-3080-rog-strix-vga-card', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: + 'https://www.msy.com.au/gigabyte-nvidia-n3080eagle-oc-10gd-10gb-rtx-3080-eagle-oc-pci-e-vga-card', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.msy.com.au/gigabyte-nvidia-n3080gaming-oc-10gd-10gb-rtx-3080-gaming-oc-pci-e-vga-card', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.msy.com.au/gigabyte-nvidia-geforce-n3080vision-oc-10gd-10gb-rtx-3080-vision-oc-pci-e-vga-card', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3080-suprim-x-10g-10gb-rtx-3080-suprim-x-pci-e-vga-card', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3080-gaming-x-trio-10g-10gb-rtx-3080-gaming-x-trio-pci-e-vga-card', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3080-ventus-3x-10g-oc-10gb-rtx-3080-ventus-3x-oc-pci-e-vga-card', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.msy.com.au/asus-nvidia-geforce-tuf-rtx3090-o24g-gaming-24gb-rtx-3090-tuf-gaming-oc-pci-e-vga-card', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: + 'https://www.msy.com.au/gigabyte-nvidia-geforce-n3090aorus-m-24gd-24gb-rtx-3090-aorus-master-pci-e-vga-card', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: + 'https://www.msy.com.au/gigabyte-nvidia-geforce-n3090aorus-x-24gd-24gb-rtx-3090-aorus-xtreme-pci-e-vga-card', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: + 'https://www.msy.com.au/gigabyte-nvidia-n3090eagle-oc-24gd-24gb-rtx-3090-eagle-oc-pci-e-vga-card', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.msy.com.au/gigabyte-nvidia-n3090gaming-oc-24gd-24gb-rtx-3090-gaming-oc-pci-e-vga-card', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3090', + url: + 'https://www.msy.com.au/gigabyte-nvidia-geforce-n3090vision-oc-24gd-24gb-rtx-3090-vision-oc-vga-card', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3090-ventus-3x-24g-oc-24gb-rtx-3090-ventus-3x-oc-pci-e-vga-card', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3090-gaming-x-trio-24g-24gb-rtx-3090-gaming-x-trio-pci-e-vga-card', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3090', + url: + 'https://www.msy.com.au/msi-nvidia-geforce-rtx-3090-suprim-x-24g-24gb-rtx-3090-suprim-x-pci-e-vga-card', + }, + { + brand: 'asrock', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.msy.com.au/asrock-radeon-radeon-rx6800-16g-16gb-rx-6800-pci-e-vga-card', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: 'rx6800', + url: + 'https://www.msy.com.au/msi-radeon-rx-6800-gaming-x-trio-16g-16gb-rx-6800-pci-e-vga-card', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.msy.com.au/amd-ryzen-9-5950x-100-100000059wof-up-to-49ghz-base-clock-34ghzam416-cores32-threads8mb105w-unlocked-boxed-cpu-without-cpu-cooler', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.msy.com.au/amd-ryzen-9-5900x-100-100000061wof-up-to-48ghz-base-clock-37ghzam412-cores24-threads64mb105w-unlocked-boxed-cpu-without-cpu-cooler', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.msy.com.au/amd-ryzen-7-5800x-100-100000063wof-up-to-47ghz-base-clock-38ghzam48-cores16-threads32mb105w-unlocked-boxed-cpu-without-cpu-cooler', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.msy.com.au/amd-ryzen-5-5600x-100-100000065box-up-to-46ghz-base-clock-37ghzam46-cores12-threads32mb65w-unlocked-boxed-cpu-without-cpu-cooler', + }, + ], + name: 'msy', }; diff --git a/src/store/model/mwave.ts b/src/store/model/mwave.ts index 8d02aa8e50..250dfcfc0e 100644 --- a/src/store/model/mwave.ts +++ b/src/store/model/mwave.ts @@ -1,194 +1,194 @@ import {Store} from './store'; export const Mwave: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - maxPrice: { - container: 'div.divPriceNormal > div', - euroFormat: false - }, - outOfStock: { - container: '.stockAndDelivery > li:nth-child(1) > dl > dd', - text: ['Currently No Stock'] - } - }, - links: [ - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.mwave.com.au/product/gigabyte-geforce-rtx-3080-vision-oc-10gb-video-card-ac38364' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.mwave.com.au/product/gigabyte-geforce-rtx-3080-gaming-oc-10gb-video-card-ac38091' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.mwave.com.au/product/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-video-card-ac38093' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.mwave.com.au/product/asus-geforce-rtx-3080-tuf-gaming-oc-10gb-video-card-ac38205' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.mwave.com.au/product/msi-geforce-rtx-3080-suprim-x-10gb-video-card-ac40223' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: - 'https://www.mwave.com.au/product/evga-geforce-rtx-3080-ftw3-gaming-10gb-video-card-ac38468' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.mwave.com.au/product/asus-geforce-rtx-3080-rog-strix-oc-10gb-video-card-ac38206' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.mwave.com.au/product/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-video-card-ac38322' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://www.mwave.com.au/product/evga-geforce-rtx-3080-xc3-black-gaming-10gb-video-card-ac38323' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.mwave.com.au/product/evga-geforce-rtx-3080-xc3-gaming-10gb-video-card-ac38325' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.mwave.com.au/product/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-video-card-ac38327' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://www.mwave.com.au/product/inno3d-geforce-rtx-3080-ichill-x4-10gb-video-card-ac38355' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://www.mwave.com.au/product/inno3d-geforce-rtx-3080-ichill-x3-10gb-video-card-ac38356' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3080', - url: - 'https://www.mwave.com.au/product/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10gb-video-card-ac39833' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://www.mwave.com.au/product/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-wb-10gb-video-card-ac39844' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: - 'https://www.mwave.com.au/product/gigabyte-geforce-rtx-3080-eagle-10gb-video-card-ac39514' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.mwave.com.au/product/asus-geforce-rtx-3080-rog-strix-gaming-10gb-video-card-ac38086' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.mwave.com.au/product/asus-geforce-rtx-3080-tuf-gaming-10gb-video-card-ac38087' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.mwave.com.au/product/gigabyte-geforce-rtx-3080-eagle-oc-10gb-video-card-ac38090' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.mwave.com.au/product/pny-geforce-rtx-3080-xlr8-gaming-revel-epicx-rgb-10gb-video-card-ac38114' - }, - { - brand: 'pny', - model: 'xlr8 uprising', - series: '3080', - url: - 'https://www.mwave.com.au/product/pny-geforce-rtx-3080-xlr8-gaming-uprising-epicx-rgb-10gb-video-card-ac38115' - }, - { - brand: 'galax', - model: 'sg oc', - series: '3080', - url: - 'https://www.mwave.com.au/product/galax-geforce-rtx-3080-sg-1click-oc-10gb-video-card-ac38128' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.mwave.com.au/product/gigabyte-aorus-geforce-rtx-3080-master-10gb-video-card-ac38092' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.mwave.com.au/product/msi-geforce-rtx-3080-ventus-3x-oc-10gb-video-card-ac38105' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.mwave.com.au/product/msi-geforce-rtx-3080-gaming-x-trio-10gb-video-card-ac38107' - } - ], - name: 'mwave' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + maxPrice: { + container: 'div.divPriceNormal > div', + euroFormat: false, + }, + outOfStock: { + container: '.stockAndDelivery > li:nth-child(1) > dl > dd', + text: ['Currently No Stock'], + }, + }, + links: [ + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.mwave.com.au/product/gigabyte-geforce-rtx-3080-vision-oc-10gb-video-card-ac38364', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.mwave.com.au/product/gigabyte-geforce-rtx-3080-gaming-oc-10gb-video-card-ac38091', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.mwave.com.au/product/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-video-card-ac38093', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.mwave.com.au/product/asus-geforce-rtx-3080-tuf-gaming-oc-10gb-video-card-ac38205', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.mwave.com.au/product/msi-geforce-rtx-3080-suprim-x-10gb-video-card-ac40223', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: + 'https://www.mwave.com.au/product/evga-geforce-rtx-3080-ftw3-gaming-10gb-video-card-ac38468', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.mwave.com.au/product/asus-geforce-rtx-3080-rog-strix-oc-10gb-video-card-ac38206', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.mwave.com.au/product/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-video-card-ac38322', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://www.mwave.com.au/product/evga-geforce-rtx-3080-xc3-black-gaming-10gb-video-card-ac38323', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.mwave.com.au/product/evga-geforce-rtx-3080-xc3-gaming-10gb-video-card-ac38325', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.mwave.com.au/product/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-video-card-ac38327', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://www.mwave.com.au/product/inno3d-geforce-rtx-3080-ichill-x4-10gb-video-card-ac38355', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://www.mwave.com.au/product/inno3d-geforce-rtx-3080-ichill-x3-10gb-video-card-ac38356', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3080', + url: + 'https://www.mwave.com.au/product/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10gb-video-card-ac39833', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://www.mwave.com.au/product/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-wb-10gb-video-card-ac39844', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: + 'https://www.mwave.com.au/product/gigabyte-geforce-rtx-3080-eagle-10gb-video-card-ac39514', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.mwave.com.au/product/asus-geforce-rtx-3080-rog-strix-gaming-10gb-video-card-ac38086', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.mwave.com.au/product/asus-geforce-rtx-3080-tuf-gaming-10gb-video-card-ac38087', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.mwave.com.au/product/gigabyte-geforce-rtx-3080-eagle-oc-10gb-video-card-ac38090', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.mwave.com.au/product/pny-geforce-rtx-3080-xlr8-gaming-revel-epicx-rgb-10gb-video-card-ac38114', + }, + { + brand: 'pny', + model: 'xlr8 uprising', + series: '3080', + url: + 'https://www.mwave.com.au/product/pny-geforce-rtx-3080-xlr8-gaming-uprising-epicx-rgb-10gb-video-card-ac38115', + }, + { + brand: 'galax', + model: 'sg oc', + series: '3080', + url: + 'https://www.mwave.com.au/product/galax-geforce-rtx-3080-sg-1click-oc-10gb-video-card-ac38128', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.mwave.com.au/product/gigabyte-aorus-geforce-rtx-3080-master-10gb-video-card-ac38092', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.mwave.com.au/product/msi-geforce-rtx-3080-ventus-3x-oc-10gb-video-card-ac38105', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.mwave.com.au/product/msi-geforce-rtx-3080-gaming-x-trio-10gb-video-card-ac38107', + }, + ], + name: 'mwave', }; diff --git a/src/store/model/newegg-ca.ts b/src/store/model/newegg-ca.ts index 90f711b833..f8d8a4a7ba 100644 --- a/src/store/model/newegg-ca.ts +++ b/src/store/model/newegg-ca.ts @@ -2,871 +2,870 @@ import {Store} from './store'; import fetch from 'node-fetch'; export const NeweggCa: Store = { - currency: '$', - labels: { - captcha: { - container: 'body', - text: ['are you a human?'] - }, - inStock: { - container: 'div#ProductBuy .btn-primary', - text: ['add to cart'] - }, - maxPrice: { - container: - 'div#app div.product-price > ul > li.price-current > strong', - euroFormat: false - }, - outOfStock: [ - { - container: '.product-inventory', - text: [' out of stock.'] - }, - { - container: '.product-flag', - text: ['out of stock '] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.newegg.ca/p/N82E16824475043?Item=N82E16824475043&cm_sp=Homepage_MKPL-_-P3_24-475-043-_-12302020' - }, - { - brand: 'asus', - itemNumber: '14-126-453', - model: 'tuf', - series: '3080', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453' - }, - { - brand: 'evga', - itemNumber: '14-487-519', - model: 'ftw3', - series: '3080', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519' - }, - { - brand: 'evga', - itemNumber: '14-487-518', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518' - }, - { - brand: 'evga', - itemNumber: '14-487-522', - model: 'xc3 black', - series: '3080', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522' - }, - { - brand: 'evga', - itemNumber: '14-487-521', - model: 'xc3', - series: '3080', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521' - }, - { - brand: 'evga', - itemNumber: '14-487-520', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3885-kr/p/N82E16814487520' - }, - { - brand: 'msi', - itemNumber: '14-137-600', - model: 'ventus 3x', - series: '3080', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600' - }, - { - brand: 'msi', - itemNumber: '14-137-598', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598' - }, - { - brand: 'msi', - itemNumber: '14-137-597', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3080-rtx3080-suprim-x-10g/p/N82E16814137609' - }, - { - brand: 'gigabyte', - itemNumber: '149-32-329', - model: 'gaming oc', - series: '3080', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329' - }, - { - brand: 'gigabyte', - itemNumber: '149-32-330', - model: 'eagle oc', - series: '3080', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080eagle-10gd/p/N82E16814932367' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-336', - model: 'aorus master', - series: '3080', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080aorus-x-10gd/p/N82E16814932345' - }, - { - brand: 'zotac', - itemNumber: '14-950-502', - model: 'trinity', - series: '3080', - url: - 'https://www.newegg.ca/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502' - }, - { - brand: 'asus', - itemNumber: '14-126-457', - model: 'strix oc', - series: '3080', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457' - }, - { - brand: 'asus', - itemNumber: '14-126-452', - model: 'tuf oc', - series: '3080', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452' - }, - { - brand: 'zotac', - itemNumber: '14-500-504', - model: 'trinity oc', - series: '3080', - url: - 'https://www.newegg.ca/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504' - }, - { - brand: 'pny', - itemNumber: '14-133-809', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.newegg.ca/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-337', - model: 'vision oc', - series: '3080', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080vision-oc-10gd/p/N82E16814932337' - }, - { - brand: 'msi', - itemNumber: '14-137-595', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-327', - model: 'gaming oc', - series: '3090', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3090-gv-n3090aorus-m-24gd/p/N82E16814932341' - }, - { - brand: 'msi', - itemNumber: '14-137-596', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3090', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3090', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3090-rtx3090-suprim-x-24g/p/N82E16814137610' - }, - { - brand: 'zotac', - itemNumber: '14-500-503', - model: 'trinity', - series: '3090', - url: - 'https://www.newegg.ca/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503' - }, - { - brand: 'asus', - itemNumber: '14-126-454', - model: 'tuf oc', - series: '3090', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3090-tuf-rtx3090-o24g-gaming/p/N82E16814126454' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455' - }, - { - brand: 'asus', - itemNumber: '14-126-456', - model: 'strix oc', - series: '3090', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456' - }, - { - brand: 'evga', - itemNumber: '14-487-524', - model: 'xc3 ultra', - series: '3090', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524' - }, - { - brand: 'evga', - itemNumber: '14-487-523', - model: 'xc3', - series: '3090', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523' - }, - { - brand: 'evga', - itemNumber: '14-487-526', - model: 'ftw3 ultra', - series: '3090', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526' - }, - { - brand: 'evga', - itemNumber: '14-487-525', - model: 'ftw3', - series: '3090', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525' - }, - { - brand: 'msi', - itemNumber: '14-137-602', - model: 'ventus 2x oc', - series: '3070', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-ventus-2x-oc/p/N82E16814137602' - }, - { - brand: 'msi', - model: 'ventus 2x', - series: '3070', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-ventus-2x/p/N82E16814137605' - }, - { - brand: 'msi', - itemNumber: '14-137-601', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-ventus-3x-oc/p/N82E16814137601' - }, - { - brand: 'msi', - itemNumber: '14-137-603', - model: 'gaming x trio', - series: '3070', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137603' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3070', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-suprim-x-8g/p/N82E16814137620' - }, - { - brand: 'asus', - itemNumber: '14-126-460', - model: 'dual', - series: '3070', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460' - }, - { - brand: 'asus', - itemNumber: '14-126-459', - model: 'dual oc', - series: '3070', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3070-dual-rtx3070-o8g/p/N82E16814126459' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-342', - model: 'gaming oc', - series: '3070', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070gaming-oc-8gd/p/N82E16814932342' - }, - { - brand: 'asus', - itemNumber: '14-126-458', - model: 'strix oc', - series: '3070', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3070-rog-strix-rtx3070-o8g-gaming/p/N82E16814126458' - }, - { - brand: 'asus', - model: 'ko', - series: '3070', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3070-ko-rtx3070-o8g-gamin/p/N82E16814126466' - }, - { - brand: 'zotac', - itemNumber: '14-500-501', - model: 'twin edge', - series: '3070', - url: - 'https://www.newegg.ca/zotac-geforce-rtx-3070-zt-a30700e-10p/p/N82E16814500501' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-344', - model: 'eagle', - series: '3070', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070eagle-8gd/p/N82E16814932344' - }, - { - brand: 'evga', - itemNumber: '14-487-528', - model: 'xc3 black', - series: '3070', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3751-kr/p/N82E16814487528' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-360', - model: 'vision oc', - series: '3070', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360' - }, - { - brand: 'zotac', - itemNumber: '14-500-505', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.newegg.ca/zotac-geforce-rtx-3070-zt-a30700h-10p/p/N82E16814500505' - }, - { - brand: 'pny', - itemNumber: '14-133-812', - model: 'uprising', - series: '3070', - url: - 'https://www.newegg.ca/pny-geforce-rtx-3070-vcg30708dfmpb/p/N82E16814133812' - }, - { - brand: 'asus', - itemNumber: '14-126-461', - model: 'tuf', - series: '3070', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3070-tuf-rtx3070-o8g-gaming/p/N82E16814126461' - }, - { - brand: 'evga', - itemNumber: '14-487-531', - model: 'ftw3', - series: '3070', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-359', - model: 'aorus master', - series: '3070', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070aorus-m-8gd/p/N82E16814932359' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-343', - model: 'eagle oc', - series: '3070', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070eagle-oc-8gd/p/N82E16814932343' - }, - { - brand: 'evga', - itemNumber: '14-487-530', - model: 'xc3 ultra', - series: '3070', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3755-kr/p/N82E16814487530' - }, - { - brand: 'evga', - itemNumber: '14-487-532', - model: 'ftw3 ultra', - series: '3070', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3767-kr/p/N82E16814487532' - }, - { - brand: 'pny', - itemNumber: '14-133-811', - model: 'xlr8 revel', - series: '3070', - url: - 'https://www.newegg.ca/pny-geforce-rtx-3070-vcg30708tfxppb/p/N82E16814133811' - }, - { - brand: 'evga', - itemNumber: '14-487-529', - model: 'xc3', - series: '3070', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3753-kr/p/N82E16814487529' - }, - { - brand: 'asus', - itemNumber: '14-126-471', - model: 'tuf oc', - series: '3060ti', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3060-ti-tuf-rtx3060ti-o8g-gaming/p/N82E16814126471' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-377', - model: 'gaming oc', - series: '3060ti', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3060-ti-gv-n306tgaming-oc-8gd/p/N82E16814932377' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-375', - model: 'aorus master', - series: '3060ti', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3060-ti-gv-n306taorus-m-8gd/p/N82E16814932375' - }, - { - brand: 'asus', - itemNumber: '14-126-468', - model: 'dual oc', - series: '3060ti', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3060-ti-dual-rtx3060ti-o8g/p/N82E16814126468' - }, - { - brand: 'asus', - itemNumber: '14-126-470', - model: 'strix oc', - series: '3060ti', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3060-ti-rog-strix-rtx3060ti-o8g-gaming/p/N82E16814126470' - }, - { - brand: 'evga', - itemNumber: '14-487-535', - model: 'xc gaming', - series: '3060ti', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3060-ti-08g-p5-3663-kr/p/N82E16814487535' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-376', - model: 'gaming oc pro', - series: '3060ti', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3060-ti-gv-n306tgamingoc-pro-8gd/p/N82E16814932376' - }, - { - brand: 'evga', - itemNumber: '14-487-537', - model: 'ftw3 ultra', - series: '3060ti', - url: - 'https://www.newegg.ca/evga-geforce-rtx-3060-ti-08g-p5-3667-kr/p/N82E16814487537' - }, - { - brand: 'msi', - itemNumber: '14-137-612', - model: 'ventus 2x oc', - series: '3060ti', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3060-ti-rtx-3060-ti-ventus-2x-oc/p/N82E16814137612' - }, - { - brand: 'asus', - itemNumber: '14-126-474', - model: 'ko', - series: '3060ti', - url: - 'https://www.newegg.ca/asus-geforce-rtx-3060-ti-ko-rtx3060ti-o8g-gaming/p/N82E16814126474' - }, - { - brand: 'msi', - itemNumber: '14-137-611', - model: 'gaming x trio', - series: '3060ti', - url: - 'https://www.newegg.ca/msi-geforce-rtx-3060-ti-rtx-3060-ti-gaming-x-trio/p/N82E16814137611' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-378', - model: 'eagle oc', - series: '3060ti', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-oc-8gd/p/N82E16814932378' - }, - { - brand: 'gigabyte', - itemNumber: '14-932-379', - model: 'eagle', - series: '3060ti', - url: - 'https://www.newegg.ca/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-8gd/p/N82E16814932379' - }, - { - brand: 'zotac', - itemNumber: '14-500-506', - model: 'twin edge', - series: '3060ti', - url: - 'https://www.newegg.ca/zotac-geforce-rtx-3060-ti-zt-a30610e-10m/p/N82E16814500506' - }, - { - brand: 'zotac', - itemNumber: '14-500-507', - model: 'twin edge oc', - series: '3060ti', - url: - 'https://www.newegg.ca/zotac-geforce-rtx-3060-ti-zt-a30610h-10m/p/N82E16814500507' - }, - { - brand: 'amd', - itemNumber: '19-113-663', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.newegg.ca/amd-ryzen-9-5950x/p/N82E16819113663' - }, - { - brand: 'amd', - itemNumber: '19-113-664', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.newegg.ca/amd-ryzen-9-5900x/p/N82E16819113664' - }, - { - brand: 'amd', - itemNumber: '19-113-665', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.newegg.ca/amd-ryzen-7-5800x/p/N82E16819113665' - }, - { - brand: 'amd', - itemNumber: '19-113-666', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.newegg.ca/amd-ryzen-5-5600x/p/N82E16819113666' - }, - { - brand: 'msi', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/msi-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814137607' - }, - { - brand: 'msi', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.ca/msi-radeon-rx-6800-rx-6800-16g/p/N82E16814137608' - }, - { - brand: 'asus', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/asus-radeon-rx-6800-xt-rx6800xt-16g/p/N82E16814126472' - }, - { - brand: 'asus', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.ca/asus-radeon-rx-6800-rx6800-16g/p/N82E16814126473' - }, - { - brand: 'asrock', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/asrock-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814930045' - }, - { - brand: 'asrock', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.ca/asrock-radeon-rx-6800-rx-6800-16g/p/N82E16814930046' - }, - { - brand: 'gigabyte', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373' - }, - { - brand: 'gigabyte', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.ca/gigabyte-radeon-rx-6800-gv-r68-16gc-b/p/N82E16814932374' - }, - { - brand: 'sapphire', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/sapphire-radeon-rx-6800-xt-21304-01-20g/p/N82E16814202388' - }, - { - brand: 'sapphire', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.ca/sapphire-radeon-rx-6800-21305-01-20g/p/N82E16814202389' - }, - { - brand: 'gigabyte', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.com/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6800', - url: - 'https://www.newegg.ca/sapphire-radeon-rx-6800-11305-01-20g/p/N82E16814202392' - }, - { - brand: 'asrock', - model: 'phantom gaming', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/asrock-radeon-rx-6800-xt-rx6800xt-pgd-16go/p/N82E16814930049' - }, - { - brand: 'asus', - model: 'tuf oc', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/asus-radeon-rx-6800-xt-tuf-rx6800xt-o16g-gaming/p/N82E16814126476' - }, - { - brand: 'xfx', - model: 'merc', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/xfx-radeon-rx-6800-xt-rx-68xtacbd9/p/N82E16814150844' - }, - { - brand: 'asus', - model: 'strix oc', - series: 'rx6800', - url: - 'https://www.newegg.ca/asus-radeon-rx-6800-rog-strix-rx6800-o16g-gaming/p/N82E16814126477' - }, - { - brand: 'asrock', - model: 'challenger', - series: 'rx6800', - url: - 'https://www.newegg.ca/asrock-radeon-rx-6800-rx6800-clp-16go/p/N82E16814930047' - }, - { - brand: 'sapphire', - model: 'nitro+ se', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/sapphire-radeon-rx-6800-xt-11304-01-20g/p/N82E16814202390' - }, - { - brand: 'asus', - model: 'strix oc', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/asus-radeon-rx-6800-xt-rog-strix-lc-rx6800xt-o16g-gaming/p/N82E16814126475' - }, - { - brand: 'powercolor', - model: 'red devil', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/powercolor-radeon-rx-6800-xt-axrx-6800xt-16gbd6-2dhce-oc/p/N82E16814131767' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/sapphire-radeon-rx-6800-xt-11304-02-20g/p/N82E16814202391' - }, - { - brand: 'asus', - model: 'tuf oc', - series: 'rx6800', - url: - 'https://www.newegg.ca/asus-radeon-rx-6800-tuf-rx6800-o16g-gaming/p/N82E16814126478' - }, - { - brand: 'asrock', - model: 'taichi', - series: 'rx6800xt', - url: - 'https://www.newegg.ca/asrock-radeon-rx-6800-xt-rx6800xt-tcx-16go/p/N82E16814930050' - }, - { - brand: 'asrock', - model: 'phantom gaming', - series: 'rx6800', - url: - 'https://www.newegg.ca/asrock-radeon-rx-6800-rx6800-pgd-16go/p/N82E16814930048' - }, - { - brand: 'sapphire', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.ca/sapphire-radeon-rx-6900-xt-21308-01-20g/p/N82E16814202393' - }, - { - brand: 'asrock', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.ca/asrock-radeon-rx-6900-xt-rx6900xt-16g/p/N82E16814930051' - }, - { - brand: 'gigabyte', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.ca/gigabyte-radeon-rx-6900-xt-gv-r69xt-16gc-b/p/N82E16814932384' - }, - { - brand: 'msi', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.ca/msi-radeon-rx-6900-xt-rx-6900-xt-16g/p/N82E16814137618' - }, - { - brand: 'powercolor', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.ca/powercolor-radeon-rx-6900-xt-axrx-6900xt-16gbd6-m2dhc/p/N82E16814131774' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6900xt', - url: - 'https://www.newegg.ca/sapphire-radeon-rx-6900-xt-11308-01-20g/p/N82E16814202395' - } - ], - name: 'newegg-ca', - realTimeInventoryLookup: async (itemNumber: string) => { - const request_url = - 'https://www.newegg.ca/product/api/ProductRealtime?ItemNumber=' + - itemNumber; - const response = await fetch(request_url); - const response_json = await response.json(); - return ( - response_json.MainItem !== undefined && - response_json.MainItem.Instock === true - ); - } + currency: '$', + labels: { + captcha: { + container: 'body', + text: ['are you a human?'], + }, + inStock: { + container: 'div#ProductBuy .btn-primary', + text: ['add to cart'], + }, + maxPrice: { + container: 'div#app div.product-price > ul > li.price-current > strong', + euroFormat: false, + }, + outOfStock: [ + { + container: '.product-inventory', + text: [' out of stock.'], + }, + { + container: '.product-flag', + text: ['out of stock '], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.newegg.ca/p/N82E16824475043?Item=N82E16824475043&cm_sp=Homepage_MKPL-_-P3_24-475-043-_-12302020', + }, + { + brand: 'asus', + itemNumber: '14-126-453', + model: 'tuf', + series: '3080', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453', + }, + { + brand: 'evga', + itemNumber: '14-487-519', + model: 'ftw3', + series: '3080', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519', + }, + { + brand: 'evga', + itemNumber: '14-487-518', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518', + }, + { + brand: 'evga', + itemNumber: '14-487-522', + model: 'xc3 black', + series: '3080', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522', + }, + { + brand: 'evga', + itemNumber: '14-487-521', + model: 'xc3', + series: '3080', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521', + }, + { + brand: 'evga', + itemNumber: '14-487-520', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3080-10g-p5-3885-kr/p/N82E16814487520', + }, + { + brand: 'msi', + itemNumber: '14-137-600', + model: 'ventus 3x', + series: '3080', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600', + }, + { + brand: 'msi', + itemNumber: '14-137-598', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598', + }, + { + brand: 'msi', + itemNumber: '14-137-597', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3080-rtx3080-suprim-x-10g/p/N82E16814137609', + }, + { + brand: 'gigabyte', + itemNumber: '149-32-329', + model: 'gaming oc', + series: '3080', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329', + }, + { + brand: 'gigabyte', + itemNumber: '149-32-330', + model: 'eagle oc', + series: '3080', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080eagle-10gd/p/N82E16814932367', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-336', + model: 'aorus master', + series: '3080', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080aorus-x-10gd/p/N82E16814932345', + }, + { + brand: 'zotac', + itemNumber: '14-950-502', + model: 'trinity', + series: '3080', + url: + 'https://www.newegg.ca/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502', + }, + { + brand: 'asus', + itemNumber: '14-126-457', + model: 'strix oc', + series: '3080', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457', + }, + { + brand: 'asus', + itemNumber: '14-126-452', + model: 'tuf oc', + series: '3080', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452', + }, + { + brand: 'zotac', + itemNumber: '14-500-504', + model: 'trinity oc', + series: '3080', + url: + 'https://www.newegg.ca/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504', + }, + { + brand: 'pny', + itemNumber: '14-133-809', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.newegg.ca/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-337', + model: 'vision oc', + series: '3080', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3080-gv-n3080vision-oc-10gd/p/N82E16814932337', + }, + { + brand: 'msi', + itemNumber: '14-137-595', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-327', + model: 'gaming oc', + series: '3090', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3090-gv-n3090aorus-m-24gd/p/N82E16814932341', + }, + { + brand: 'msi', + itemNumber: '14-137-596', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3090', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3090', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3090-rtx3090-suprim-x-24g/p/N82E16814137610', + }, + { + brand: 'zotac', + itemNumber: '14-500-503', + model: 'trinity', + series: '3090', + url: + 'https://www.newegg.ca/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503', + }, + { + brand: 'asus', + itemNumber: '14-126-454', + model: 'tuf oc', + series: '3090', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3090-tuf-rtx3090-o24g-gaming/p/N82E16814126454', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455', + }, + { + brand: 'asus', + itemNumber: '14-126-456', + model: 'strix oc', + series: '3090', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456', + }, + { + brand: 'evga', + itemNumber: '14-487-524', + model: 'xc3 ultra', + series: '3090', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524', + }, + { + brand: 'evga', + itemNumber: '14-487-523', + model: 'xc3', + series: '3090', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523', + }, + { + brand: 'evga', + itemNumber: '14-487-526', + model: 'ftw3 ultra', + series: '3090', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526', + }, + { + brand: 'evga', + itemNumber: '14-487-525', + model: 'ftw3', + series: '3090', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525', + }, + { + brand: 'msi', + itemNumber: '14-137-602', + model: 'ventus 2x oc', + series: '3070', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-ventus-2x-oc/p/N82E16814137602', + }, + { + brand: 'msi', + model: 'ventus 2x', + series: '3070', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-ventus-2x/p/N82E16814137605', + }, + { + brand: 'msi', + itemNumber: '14-137-601', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-ventus-3x-oc/p/N82E16814137601', + }, + { + brand: 'msi', + itemNumber: '14-137-603', + model: 'gaming x trio', + series: '3070', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137603', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3070', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3070-rtx-3070-suprim-x-8g/p/N82E16814137620', + }, + { + brand: 'asus', + itemNumber: '14-126-460', + model: 'dual', + series: '3070', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460', + }, + { + brand: 'asus', + itemNumber: '14-126-459', + model: 'dual oc', + series: '3070', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3070-dual-rtx3070-o8g/p/N82E16814126459', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-342', + model: 'gaming oc', + series: '3070', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070gaming-oc-8gd/p/N82E16814932342', + }, + { + brand: 'asus', + itemNumber: '14-126-458', + model: 'strix oc', + series: '3070', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3070-rog-strix-rtx3070-o8g-gaming/p/N82E16814126458', + }, + { + brand: 'asus', + model: 'ko', + series: '3070', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3070-ko-rtx3070-o8g-gamin/p/N82E16814126466', + }, + { + brand: 'zotac', + itemNumber: '14-500-501', + model: 'twin edge', + series: '3070', + url: + 'https://www.newegg.ca/zotac-geforce-rtx-3070-zt-a30700e-10p/p/N82E16814500501', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-344', + model: 'eagle', + series: '3070', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070eagle-8gd/p/N82E16814932344', + }, + { + brand: 'evga', + itemNumber: '14-487-528', + model: 'xc3 black', + series: '3070', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3751-kr/p/N82E16814487528', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-360', + model: 'vision oc', + series: '3070', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360', + }, + { + brand: 'zotac', + itemNumber: '14-500-505', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.newegg.ca/zotac-geforce-rtx-3070-zt-a30700h-10p/p/N82E16814500505', + }, + { + brand: 'pny', + itemNumber: '14-133-812', + model: 'uprising', + series: '3070', + url: + 'https://www.newegg.ca/pny-geforce-rtx-3070-vcg30708dfmpb/p/N82E16814133812', + }, + { + brand: 'asus', + itemNumber: '14-126-461', + model: 'tuf', + series: '3070', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3070-tuf-rtx3070-o8g-gaming/p/N82E16814126461', + }, + { + brand: 'evga', + itemNumber: '14-487-531', + model: 'ftw3', + series: '3070', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-359', + model: 'aorus master', + series: '3070', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070aorus-m-8gd/p/N82E16814932359', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-343', + model: 'eagle oc', + series: '3070', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3070-gv-n3070eagle-oc-8gd/p/N82E16814932343', + }, + { + brand: 'evga', + itemNumber: '14-487-530', + model: 'xc3 ultra', + series: '3070', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3755-kr/p/N82E16814487530', + }, + { + brand: 'evga', + itemNumber: '14-487-532', + model: 'ftw3 ultra', + series: '3070', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3767-kr/p/N82E16814487532', + }, + { + brand: 'pny', + itemNumber: '14-133-811', + model: 'xlr8 revel', + series: '3070', + url: + 'https://www.newegg.ca/pny-geforce-rtx-3070-vcg30708tfxppb/p/N82E16814133811', + }, + { + brand: 'evga', + itemNumber: '14-487-529', + model: 'xc3', + series: '3070', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3070-08g-p5-3753-kr/p/N82E16814487529', + }, + { + brand: 'asus', + itemNumber: '14-126-471', + model: 'tuf oc', + series: '3060ti', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3060-ti-tuf-rtx3060ti-o8g-gaming/p/N82E16814126471', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-377', + model: 'gaming oc', + series: '3060ti', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3060-ti-gv-n306tgaming-oc-8gd/p/N82E16814932377', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-375', + model: 'aorus master', + series: '3060ti', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3060-ti-gv-n306taorus-m-8gd/p/N82E16814932375', + }, + { + brand: 'asus', + itemNumber: '14-126-468', + model: 'dual oc', + series: '3060ti', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3060-ti-dual-rtx3060ti-o8g/p/N82E16814126468', + }, + { + brand: 'asus', + itemNumber: '14-126-470', + model: 'strix oc', + series: '3060ti', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3060-ti-rog-strix-rtx3060ti-o8g-gaming/p/N82E16814126470', + }, + { + brand: 'evga', + itemNumber: '14-487-535', + model: 'xc gaming', + series: '3060ti', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3060-ti-08g-p5-3663-kr/p/N82E16814487535', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-376', + model: 'gaming oc pro', + series: '3060ti', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3060-ti-gv-n306tgamingoc-pro-8gd/p/N82E16814932376', + }, + { + brand: 'evga', + itemNumber: '14-487-537', + model: 'ftw3 ultra', + series: '3060ti', + url: + 'https://www.newegg.ca/evga-geforce-rtx-3060-ti-08g-p5-3667-kr/p/N82E16814487537', + }, + { + brand: 'msi', + itemNumber: '14-137-612', + model: 'ventus 2x oc', + series: '3060ti', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3060-ti-rtx-3060-ti-ventus-2x-oc/p/N82E16814137612', + }, + { + brand: 'asus', + itemNumber: '14-126-474', + model: 'ko', + series: '3060ti', + url: + 'https://www.newegg.ca/asus-geforce-rtx-3060-ti-ko-rtx3060ti-o8g-gaming/p/N82E16814126474', + }, + { + brand: 'msi', + itemNumber: '14-137-611', + model: 'gaming x trio', + series: '3060ti', + url: + 'https://www.newegg.ca/msi-geforce-rtx-3060-ti-rtx-3060-ti-gaming-x-trio/p/N82E16814137611', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-378', + model: 'eagle oc', + series: '3060ti', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-oc-8gd/p/N82E16814932378', + }, + { + brand: 'gigabyte', + itemNumber: '14-932-379', + model: 'eagle', + series: '3060ti', + url: + 'https://www.newegg.ca/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-8gd/p/N82E16814932379', + }, + { + brand: 'zotac', + itemNumber: '14-500-506', + model: 'twin edge', + series: '3060ti', + url: + 'https://www.newegg.ca/zotac-geforce-rtx-3060-ti-zt-a30610e-10m/p/N82E16814500506', + }, + { + brand: 'zotac', + itemNumber: '14-500-507', + model: 'twin edge oc', + series: '3060ti', + url: + 'https://www.newegg.ca/zotac-geforce-rtx-3060-ti-zt-a30610h-10m/p/N82E16814500507', + }, + { + brand: 'amd', + itemNumber: '19-113-663', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.newegg.ca/amd-ryzen-9-5950x/p/N82E16819113663', + }, + { + brand: 'amd', + itemNumber: '19-113-664', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.newegg.ca/amd-ryzen-9-5900x/p/N82E16819113664', + }, + { + brand: 'amd', + itemNumber: '19-113-665', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.newegg.ca/amd-ryzen-7-5800x/p/N82E16819113665', + }, + { + brand: 'amd', + itemNumber: '19-113-666', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.newegg.ca/amd-ryzen-5-5600x/p/N82E16819113666', + }, + { + brand: 'msi', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/msi-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814137607', + }, + { + brand: 'msi', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.ca/msi-radeon-rx-6800-rx-6800-16g/p/N82E16814137608', + }, + { + brand: 'asus', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/asus-radeon-rx-6800-xt-rx6800xt-16g/p/N82E16814126472', + }, + { + brand: 'asus', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.ca/asus-radeon-rx-6800-rx6800-16g/p/N82E16814126473', + }, + { + brand: 'asrock', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/asrock-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814930045', + }, + { + brand: 'asrock', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.ca/asrock-radeon-rx-6800-rx-6800-16g/p/N82E16814930046', + }, + { + brand: 'gigabyte', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373', + }, + { + brand: 'gigabyte', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.ca/gigabyte-radeon-rx-6800-gv-r68-16gc-b/p/N82E16814932374', + }, + { + brand: 'sapphire', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/sapphire-radeon-rx-6800-xt-21304-01-20g/p/N82E16814202388', + }, + { + brand: 'sapphire', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.ca/sapphire-radeon-rx-6800-21305-01-20g/p/N82E16814202389', + }, + { + brand: 'gigabyte', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.com/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6800', + url: + 'https://www.newegg.ca/sapphire-radeon-rx-6800-11305-01-20g/p/N82E16814202392', + }, + { + brand: 'asrock', + model: 'phantom gaming', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/asrock-radeon-rx-6800-xt-rx6800xt-pgd-16go/p/N82E16814930049', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/asus-radeon-rx-6800-xt-tuf-rx6800xt-o16g-gaming/p/N82E16814126476', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/xfx-radeon-rx-6800-xt-rx-68xtacbd9/p/N82E16814150844', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6800', + url: + 'https://www.newegg.ca/asus-radeon-rx-6800-rog-strix-rx6800-o16g-gaming/p/N82E16814126477', + }, + { + brand: 'asrock', + model: 'challenger', + series: 'rx6800', + url: + 'https://www.newegg.ca/asrock-radeon-rx-6800-rx6800-clp-16go/p/N82E16814930047', + }, + { + brand: 'sapphire', + model: 'nitro+ se', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/sapphire-radeon-rx-6800-xt-11304-01-20g/p/N82E16814202390', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/asus-radeon-rx-6800-xt-rog-strix-lc-rx6800xt-o16g-gaming/p/N82E16814126475', + }, + { + brand: 'powercolor', + model: 'red devil', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/powercolor-radeon-rx-6800-xt-axrx-6800xt-16gbd6-2dhce-oc/p/N82E16814131767', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/sapphire-radeon-rx-6800-xt-11304-02-20g/p/N82E16814202391', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6800', + url: + 'https://www.newegg.ca/asus-radeon-rx-6800-tuf-rx6800-o16g-gaming/p/N82E16814126478', + }, + { + brand: 'asrock', + model: 'taichi', + series: 'rx6800xt', + url: + 'https://www.newegg.ca/asrock-radeon-rx-6800-xt-rx6800xt-tcx-16go/p/N82E16814930050', + }, + { + brand: 'asrock', + model: 'phantom gaming', + series: 'rx6800', + url: + 'https://www.newegg.ca/asrock-radeon-rx-6800-rx6800-pgd-16go/p/N82E16814930048', + }, + { + brand: 'sapphire', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.ca/sapphire-radeon-rx-6900-xt-21308-01-20g/p/N82E16814202393', + }, + { + brand: 'asrock', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.ca/asrock-radeon-rx-6900-xt-rx6900xt-16g/p/N82E16814930051', + }, + { + brand: 'gigabyte', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.ca/gigabyte-radeon-rx-6900-xt-gv-r69xt-16gc-b/p/N82E16814932384', + }, + { + brand: 'msi', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.ca/msi-radeon-rx-6900-xt-rx-6900-xt-16g/p/N82E16814137618', + }, + { + brand: 'powercolor', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.ca/powercolor-radeon-rx-6900-xt-axrx-6900xt-16gbd6-m2dhc/p/N82E16814131774', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6900xt', + url: + 'https://www.newegg.ca/sapphire-radeon-rx-6900-xt-11308-01-20g/p/N82E16814202395', + }, + ], + name: 'newegg-ca', + realTimeInventoryLookup: async (itemNumber: string) => { + const request_url = + 'https://www.newegg.ca/product/api/ProductRealtime?ItemNumber=' + + itemNumber; + const response = await fetch(request_url); + const response_json = await response.json(); + return ( + response_json.MainItem !== undefined && + response_json.MainItem.Instock === true + ); + }, }; diff --git a/src/store/model/newegg-sg.ts b/src/store/model/newegg-sg.ts index 1b4946a376..5b97c7cf3f 100644 --- a/src/store/model/newegg-sg.ts +++ b/src/store/model/newegg-sg.ts @@ -2,1091 +2,1091 @@ import {Store} from './store'; import fetch from 'node-fetch'; export const NeweggSg: Store = { - currency: '$', - labels: { - captcha: { - container: 'body', - text: ['are you a human?'] - }, - inStock: [ - { - container: '.product-buy', - text: ['add to cart'] - }, - { - container: '.loading-text', - text: ['add to cart'] - } - ], - maxPrice: { - container: '.price-current' - }, - outOfStock: [ - { - container: '.product-inventory', - text: [' out of stock.'] - }, - { - container: '.product-flag', - text: ['out of stock '] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.newegg.com/global/sg-en/western-digital-blue-500gb/p/N82E16820250087?Item=N82E16820250087' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137601', - itemNumber: '14-137-601', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3070-rtx-3070-ventus-3x-oc/p/N82E16814137601' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137602', - itemNumber: '14-137-602', - model: 'ventus 2x oc', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3070-rtx-3070-ventus-2x-oc/p/N82E16814137602' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137603', - itemNumber: '14-137-603', - model: 'gaming x trio', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137603' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137605', - itemNumber: '14-137-605', - model: 'ventus 2x', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137605' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932360', - itemNumber: '14-932-360', - model: 'vision oc', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126459', - itemNumber: '14-126-459', - model: 'dual oc', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3070-dual-rtx3070-o8g/p/N82E16814126459' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126458', - itemNumber: '14-126-458', - model: 'strix', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3070-rog-strix-rtx3070-o8g-gaming/p/N82E16814126458' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500501', - itemNumber: '14-500-501', - model: 'twin edge', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3070-zt-a30700e-10p/p/N82E16814500501' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500505', - itemNumber: '14-500-505', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3070-zt-a30700h-10p/p/N82E16814500505' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932342', - itemNumber: '14-932-342', - model: 'gaming oc', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3070-gv-n3070gaming-oc-8gd/p/N82E16814932342' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487532', - itemNumber: '14-487-532', - model: 'ftw3 ultra', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3070-08g-p5-3767-kr/p/N82E16814487532' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487530', - itemNumber: '14-487-530', - model: 'xc3 ultra', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3070-08g-p5-3755-kr/p/N82E16814487530' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487528', - itemNumber: '14-487-528', - model: 'xc3 black', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3070-08g-p5-3751-kr/p/N82E16814487528' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932343', - itemNumber: '14-932-343', - model: 'eagle oc', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3070-gv-n3070eagle-oc-8gd/p/N82E16814932343' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932344', - itemNumber: '14-932-344', - model: 'eagle', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3070-gv-n3070eagle-8gd/p/N82E16814932344' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487529', - itemNumber: '14-487-529', - model: 'xc3', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3070-08g-p5-3753-kr/p/N82E16814487529' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126460', - itemNumber: '14-126-460', - model: 'dual', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126466', - itemNumber: '14-126-466', - model: 'gaming', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3070-ko-rtx3070-o8g-gamin/p/N82E16814126466' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932359', - itemNumber: '14-932-359', - model: 'aorus master', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3070-gv-n3070aorus-m-8gd/p/N82E16814932359' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487531', - itemNumber: '14-487-531', - model: 'ftw3', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126461', - itemNumber: '14-126-461', - model: 'tuf oc', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3070-tuf-rtx3070-o8g-gaming/p/N82E16814126461' - }, - { - brand: 'pny', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133811', - itemNumber: '14-133-811', - model: 'gaming', - series: '3070', - url: - 'https://www.newegg.com/global/sg-en/pny-geforce-rtx-3070-vcg30708tfxppb/p/N82E16814133811' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126453', - itemNumber: '14-126-453', - model: 'tuf', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487518', - itemNumber: '14-487-518', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487519', - itemNumber: '14-487-519', - model: 'ftw3', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487522', - itemNumber: '14-487-522', - model: 'xc3 black', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487521', - itemNumber: '14-487-521', - model: 'xc3', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137600', - itemNumber: '14-137-600', - model: 'ventus 3x', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137598', - itemNumber: '14-137-598', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137597', - itemNumber: '14-137-597', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932329', - itemNumber: '149-32-329', - model: 'gaming oc', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932330', - itemNumber: '149-32-330', - model: 'eagle oc', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932336', - itemNumber: '14-932-336', - model: 'aorus master', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500502', - itemNumber: '14-950-502', - model: 'trinity', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126457', - itemNumber: '14-126-457', - model: 'strix', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126452', - itemNumber: '14-126-452', - model: 'tuf oc', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500504', - itemNumber: '14-500-504', - model: 'trinity oc', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504' - }, - { - brand: 'pny', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133809', - itemNumber: '14-133-809', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932337', - itemNumber: '14-932-337', - model: 'vision oc', - series: '3080', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080vision-oc-10gd/p/N82E16814932337' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126455', - itemNumber: '14-126-455', - model: 'tuf', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126456', - itemNumber: '14-126-456', - model: 'strix', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137595', - itemNumber: '14-137-595', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137596', - itemNumber: '14-137-596', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500503', - itemNumber: '14-500-503', - model: 'trinity', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137599', - itemNumber: '14-137-599', - model: 'ventus 3x', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487525', - itemNumber: '14-487-525', - model: 'ftw3', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487524', - itemNumber: '14-487-524', - model: 'xc3 ultra', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487526', - itemNumber: '14-487-526', - model: 'ftw3 ultra', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487527', - itemNumber: '14-487-527', - model: 'xc3 black', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3090-24g-p5-3971-kr/p/N82E16814487527' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487523', - itemNumber: '14-487-523', - model: 'xc3', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932327', - itemNumber: '14-932-327', - model: 'gaming', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932328', - itemNumber: '14-932-328', - model: 'eagle', - series: '3090', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3090-gv-n3090eagle-oc-24gd/p/N82E16814932328' - }, - { - brand: 'amd', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113663', - itemNumber: '19-113-663', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.newegg.com/global/sg-en/amd-ryzen-9-5950x/p/N82E16819113663' - }, - { - brand: 'amd', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113664', - itemNumber: '19-113-664', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.newegg.com/global/sg-en/amd-ryzen-9-5900x/p/N82E16819113664' - }, - { - brand: 'amd', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113665', - itemNumber: '19-113-665', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.newegg.com/global/sg-en/amd-ryzen-7-5800x/p/N82E16819113665' - }, - { - brand: 'amd', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113666', - itemNumber: '19-113-666', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.newegg.com/global/sg-en/amd-ryzen-5-5600x/p/N82E16819113666' - }, - { - brand: 'microsoft', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16868105273', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.newegg.com/global/sg-en/p/N82E16868105273' - }, - { - brand: 'microsoft', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16868105274', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.newegg.com/global/sg-en/p/N82E16868105274' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930051', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6900-xt-rx6900xt-16g/p/N82E16814930051' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932384', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-radeon-rx-6900-xt-gv-r69xt-16gc-b/p/N82E16814932384' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137618', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.com/global/sg-en/msi-radeon-rx-6900-xt-rx-6900-xt-16g/p/N82E16814137618' - }, - { - brand: 'powercolor', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131774', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.com/global/sg-en/powercolor-radeon-rx-6900-xt-axrx-6900xt-16gbd6-m2dhc/p/N82E16814131774' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202393', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6900-xt-21308-01-20g/p/N82E16814202393' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930052', - model: 'phantom gaming', - series: 'rx6900xt', - url: - 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-xt-rx6900xt-pgd-16g/p/N82E16814930052' - }, - { - brand: 'xfx', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814150846', - model: 'merc', - series: 'rx6900xt', - url: - 'https://www.newegg.com/global/sg-en/xfx-radeon-rx-6900-xt-rx-69xtacud9/p/N82E16814150846' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932373', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932381', - model: 'gaming oc', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-radeon-rx-6800-xt-gv-r68xtgaming-oc-16gd/p/N82E16814932381' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202394', - model: 'pulse', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6800-11305-02-20g/p/N82E16814202394' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137607', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/msi-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814137607' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202388', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6800-xt-21304-01-20g/p/N82E16814202388' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930045', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814930045' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126472', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-xt-rx6800xt-16g/p/N82E16814126472' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126473', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-rx6800-16g/p/N82E16814126473' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930046', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-rx-6800-16g/p/N82E16814930046' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932374', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-radeon-rx-6800-gv-r68-16gc-b/p/N82E16814932374' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202389', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6800-21305-01-20g/p/N82E16814202389' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137608', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/msi-radeon-rx-6800-rx-6800-16g/p/N82E16814137608' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930047', - model: 'challenger', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-rx6800-clp-16go/p/N82E16814930047' - }, + currency: '$', + labels: { + captcha: { + container: 'body', + text: ['are you a human?'], + }, + inStock: [ + { + container: '.product-buy', + text: ['add to cart'], + }, + { + container: '.loading-text', + text: ['add to cart'], + }, + ], + maxPrice: { + container: '.price-current', + }, + outOfStock: [ + { + container: '.product-inventory', + text: [' out of stock.'], + }, + { + container: '.product-flag', + text: ['out of stock '], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.newegg.com/global/sg-en/western-digital-blue-500gb/p/N82E16820250087?Item=N82E16820250087', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137601', + itemNumber: '14-137-601', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3070-rtx-3070-ventus-3x-oc/p/N82E16814137601', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137602', + itemNumber: '14-137-602', + model: 'ventus 2x oc', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3070-rtx-3070-ventus-2x-oc/p/N82E16814137602', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137603', + itemNumber: '14-137-603', + model: 'gaming x trio', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137603', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137605', + itemNumber: '14-137-605', + model: 'ventus 2x', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137605', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932360', + itemNumber: '14-932-360', + model: 'vision oc', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126459', + itemNumber: '14-126-459', + model: 'dual oc', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3070-dual-rtx3070-o8g/p/N82E16814126459', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126458', + itemNumber: '14-126-458', + model: 'strix', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3070-rog-strix-rtx3070-o8g-gaming/p/N82E16814126458', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500501', + itemNumber: '14-500-501', + model: 'twin edge', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3070-zt-a30700e-10p/p/N82E16814500501', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500505', + itemNumber: '14-500-505', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3070-zt-a30700h-10p/p/N82E16814500505', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932342', + itemNumber: '14-932-342', + model: 'gaming oc', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3070-gv-n3070gaming-oc-8gd/p/N82E16814932342', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487532', + itemNumber: '14-487-532', + model: 'ftw3 ultra', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3070-08g-p5-3767-kr/p/N82E16814487532', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487530', + itemNumber: '14-487-530', + model: 'xc3 ultra', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3070-08g-p5-3755-kr/p/N82E16814487530', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487528', + itemNumber: '14-487-528', + model: 'xc3 black', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3070-08g-p5-3751-kr/p/N82E16814487528', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932343', + itemNumber: '14-932-343', + model: 'eagle oc', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3070-gv-n3070eagle-oc-8gd/p/N82E16814932343', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932344', + itemNumber: '14-932-344', + model: 'eagle', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3070-gv-n3070eagle-8gd/p/N82E16814932344', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487529', + itemNumber: '14-487-529', + model: 'xc3', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3070-08g-p5-3753-kr/p/N82E16814487529', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126460', + itemNumber: '14-126-460', + model: 'dual', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126466', + itemNumber: '14-126-466', + model: 'gaming', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3070-ko-rtx3070-o8g-gamin/p/N82E16814126466', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932359', + itemNumber: '14-932-359', + model: 'aorus master', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3070-gv-n3070aorus-m-8gd/p/N82E16814932359', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487531', + itemNumber: '14-487-531', + model: 'ftw3', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126461', + itemNumber: '14-126-461', + model: 'tuf oc', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3070-tuf-rtx3070-o8g-gaming/p/N82E16814126461', + }, + { + brand: 'pny', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133811', + itemNumber: '14-133-811', + model: 'gaming', + series: '3070', + url: + 'https://www.newegg.com/global/sg-en/pny-geforce-rtx-3070-vcg30708tfxppb/p/N82E16814133811', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126453', + itemNumber: '14-126-453', + model: 'tuf', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487518', + itemNumber: '14-487-518', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487519', + itemNumber: '14-487-519', + model: 'ftw3', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487522', + itemNumber: '14-487-522', + model: 'xc3 black', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487521', + itemNumber: '14-487-521', + model: 'xc3', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137600', + itemNumber: '14-137-600', + model: 'ventus 3x', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137598', + itemNumber: '14-137-598', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137597', + itemNumber: '14-137-597', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932329', + itemNumber: '149-32-329', + model: 'gaming oc', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932330', + itemNumber: '149-32-330', + model: 'eagle oc', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932336', + itemNumber: '14-932-336', + model: 'aorus master', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500502', + itemNumber: '14-950-502', + model: 'trinity', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126457', + itemNumber: '14-126-457', + model: 'strix', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126452', + itemNumber: '14-126-452', + model: 'tuf oc', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500504', + itemNumber: '14-500-504', + model: 'trinity oc', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504', + }, + { + brand: 'pny', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133809', + itemNumber: '14-133-809', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932337', + itemNumber: '14-932-337', + model: 'vision oc', + series: '3080', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3080-gv-n3080vision-oc-10gd/p/N82E16814932337', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126455', + itemNumber: '14-126-455', + model: 'tuf', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126456', + itemNumber: '14-126-456', + model: 'strix', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137595', + itemNumber: '14-137-595', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137596', + itemNumber: '14-137-596', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500503', + itemNumber: '14-500-503', + model: 'trinity', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137599', + itemNumber: '14-137-599', + model: 'ventus 3x', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487525', + itemNumber: '14-487-525', + model: 'ftw3', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487524', + itemNumber: '14-487-524', + model: 'xc3 ultra', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487526', + itemNumber: '14-487-526', + model: 'ftw3 ultra', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487527', + itemNumber: '14-487-527', + model: 'xc3 black', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3090-24g-p5-3971-kr/p/N82E16814487527', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487523', + itemNumber: '14-487-523', + model: 'xc3', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932327', + itemNumber: '14-932-327', + model: 'gaming', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932328', + itemNumber: '14-932-328', + model: 'eagle', + series: '3090', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3090-gv-n3090eagle-oc-24gd/p/N82E16814932328', + }, + { + brand: 'amd', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113663', + itemNumber: '19-113-663', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.newegg.com/global/sg-en/amd-ryzen-9-5950x/p/N82E16819113663', + }, + { + brand: 'amd', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113664', + itemNumber: '19-113-664', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.newegg.com/global/sg-en/amd-ryzen-9-5900x/p/N82E16819113664', + }, + { + brand: 'amd', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113665', + itemNumber: '19-113-665', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.newegg.com/global/sg-en/amd-ryzen-7-5800x/p/N82E16819113665', + }, + { + brand: 'amd', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113666', + itemNumber: '19-113-666', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.newegg.com/global/sg-en/amd-ryzen-5-5600x/p/N82E16819113666', + }, + { + brand: 'microsoft', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16868105273', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.newegg.com/global/sg-en/p/N82E16868105273', + }, + { + brand: 'microsoft', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16868105274', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.newegg.com/global/sg-en/p/N82E16868105274', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930051', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6900-xt-rx6900xt-16g/p/N82E16814930051', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932384', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-radeon-rx-6900-xt-gv-r69xt-16gc-b/p/N82E16814932384', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137618', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.com/global/sg-en/msi-radeon-rx-6900-xt-rx-6900-xt-16g/p/N82E16814137618', + }, + { + brand: 'powercolor', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131774', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.com/global/sg-en/powercolor-radeon-rx-6900-xt-axrx-6900xt-16gbd6-m2dhc/p/N82E16814131774', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202393', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6900-xt-21308-01-20g/p/N82E16814202393', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930052', + model: 'phantom gaming', + series: 'rx6900xt', + url: + 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-xt-rx6900xt-pgd-16g/p/N82E16814930052', + }, + { + brand: 'xfx', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814150846', + model: 'merc', + series: 'rx6900xt', + url: + 'https://www.newegg.com/global/sg-en/xfx-radeon-rx-6900-xt-rx-69xtacud9/p/N82E16814150846', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932373', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932381', + model: 'gaming oc', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-radeon-rx-6800-xt-gv-r68xtgaming-oc-16gd/p/N82E16814932381', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202394', + model: 'pulse', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6800-11305-02-20g/p/N82E16814202394', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137607', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/msi-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814137607', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202388', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6800-xt-21304-01-20g/p/N82E16814202388', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930045', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814930045', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126472', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-xt-rx6800xt-16g/p/N82E16814126472', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126473', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-rx6800-16g/p/N82E16814126473', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930046', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-rx-6800-16g/p/N82E16814930046', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932374', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-radeon-rx-6800-gv-r68-16gc-b/p/N82E16814932374', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202389', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6800-21305-01-20g/p/N82E16814202389', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137608', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/msi-radeon-rx-6800-rx-6800-16g/p/N82E16814137608', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930047', + model: 'challenger', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-rx6800-clp-16go/p/N82E16814930047', + }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930048', - model: 'phantom gaming', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-rx6800-pgd-16go/p/N82E16814930048' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930049', - model: 'phantom gaming', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-xt-rx6800xt-pgd-16go/p/N82E16814930049' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930050', - model: 'taichi', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-xt-rx6800xt-tcx-16go/p/N82E16814930050' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126478', - model: 'tuf', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-tuf-rx6800-o16g-gaming/p/N82E16814126478' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126476', - model: 'tuf', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-xt-tuf-rx6800xt-o16g-gaming/p/N82E16814126476' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126477', - model: 'strix', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-rog-strix-rx6800-o16g-gaming/p/N82E16814126477' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126475', - model: 'strix lc', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-xt-rog-strix-lc-rx6800xt-o16g-gaming/p/N82E16814126475' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202391', - model: 'nitro+', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6800-xt-11304-02-20g/p/N82E16814202391' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202390', - model: 'nitro+ se', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6800-xt-11304-01-20g/p/N82E16814202390' - }, - { - brand: 'xfx', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814150844', - model: 'merc', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/xfx-radeon-rx-6800-xt-rx-68xtacbd9/p/N82E16814150844' - }, - { - brand: 'corsair', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16817139080', - model: '750 platinum', - series: 'sf', - url: - 'https://www.newegg.com/global/sg-en/corsair-sf750-cp-9020186-na-750w/p/N82E16817139080' - }, - { - brand: 'corsair', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16817139242', - model: '600 platinum', - series: 'sf', - url: - 'https://www.newegg.com/global/sg-en/corsair-sf-series-sf600-cp-9020182-na-600w/p/N82E16817139242' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126470', - model: 'strix', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3060-ti-rog-strix-rtx3060ti-o8g-gaming/p/N82E16814126470' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137611', - model: 'gaming x trio', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3060-ti-rtx-3060-ti-gaming-x-trio/p/N82E16814137611' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500507', - model: 'twin edge oc', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3060-ti-zt-a30610h-10m/p/N82E16814500507' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126471', - model: 'tuf', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3060-ti-tuf-rtx3060ti-o8g-gaming/p/N82E16814126471' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487535', - model: 'xc3', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3060-ti-08g-p5-3663-kr/p/N82E16814487535' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126468', - model: 'dual', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3060-ti-dual-rtx3060ti-o8g/p/N82E16814126468' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137612', - model: 'ventus 2x oc', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3060-ti-rtx-3060-ti-ventus-2x-oc/p/N82E16814137612' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487537', - model: 'ftw3 ultra', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3060-ti-08g-p5-3667-kr/p/N82E16814487537' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932375', - model: 'aorus', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3060-ti-gv-n306taorus-m-8gd/p/N82E16814932375' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932376', - model: 'gaming oc', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3060-ti-gv-n306tgamingoc-pro-8gd/p/N82E16814932376' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932379', - model: 'eagle', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-8gd/p/N82E16814932379' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932377', - model: 'gaming oc', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3060-ti-gv-n306tgaming-oc-8gd/p/N82E16814932377' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500506', - model: 'twin edge', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3060-ti-zt-a30610e-10m/p/N82E16814500506' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932378', - model: 'eagle', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-oc-8gd/p/N82E16814932378' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126474', - model: 'gaming', - series: '3060ti', - url: - 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3060-ti-ko-rtx3060ti-o8g-gaming/p/N82E16814126474' - }, - { - brand: 'powercolor', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131767', - model: 'red devil', - series: 'rx6800xt', - url: - 'https://www.newegg.com/global/sg-en/powercolor-radeon-rx-6800-xt-axrx-6800xt-16gbd6-2dhce-oc/p/N82E16814131767' - }, - { - brand: 'powercolor', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131770', - model: 'red devil', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/powercolor-radeon-rx-6800-axrx-6800-16gbd6-2dhce-oc/p/N82E16814131770' - }, - { - brand: 'powercolor', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131773', - model: 'red dragon', - series: 'rx6800', - url: - 'https://www.newegg.com/global/sg-en/powercolor-radeon-rx-6800-axrx-6800-16gbd6-3dhr-oc/p/N82E16814131773' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16813119362', - model: 'crosshair viii', - series: 'darkhero', - url: - 'https://www.newegg.com/global/sg-en/asus-rog-crosshair-viii-dark-hero/p/N82E16813119362' - } - ], - name: 'newegg-sg', - realTimeInventoryLookup: async (itemNumber: string) => { - const request_url = - 'https://www.newegg.com/global/sg-en/product/api/ProductRealtime?ItemNumber=' + - itemNumber; - const response = await fetch(request_url); - const response_json = await response.json(); - return ( - response_json.MainItem !== undefined && - response_json.MainItem.Instock === true - ); - } + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930048', + model: 'phantom gaming', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-rx6800-pgd-16go/p/N82E16814930048', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930049', + model: 'phantom gaming', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-xt-rx6800xt-pgd-16go/p/N82E16814930049', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930050', + model: 'taichi', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/asrock-radeon-rx-6800-xt-rx6800xt-tcx-16go/p/N82E16814930050', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126478', + model: 'tuf', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-tuf-rx6800-o16g-gaming/p/N82E16814126478', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126476', + model: 'tuf', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-xt-tuf-rx6800xt-o16g-gaming/p/N82E16814126476', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126477', + model: 'strix', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-rog-strix-rx6800-o16g-gaming/p/N82E16814126477', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126475', + model: 'strix lc', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/asus-radeon-rx-6800-xt-rog-strix-lc-rx6800xt-o16g-gaming/p/N82E16814126475', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202391', + model: 'nitro+', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6800-xt-11304-02-20g/p/N82E16814202391', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202390', + model: 'nitro+ se', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/sapphire-radeon-rx-6800-xt-11304-01-20g/p/N82E16814202390', + }, + { + brand: 'xfx', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814150844', + model: 'merc', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/xfx-radeon-rx-6800-xt-rx-68xtacbd9/p/N82E16814150844', + }, + { + brand: 'corsair', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16817139080', + model: '750 platinum', + series: 'sf', + url: + 'https://www.newegg.com/global/sg-en/corsair-sf750-cp-9020186-na-750w/p/N82E16817139080', + }, + { + brand: 'corsair', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16817139242', + model: '600 platinum', + series: 'sf', + url: + 'https://www.newegg.com/global/sg-en/corsair-sf-series-sf600-cp-9020182-na-600w/p/N82E16817139242', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126470', + model: 'strix', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3060-ti-rog-strix-rtx3060ti-o8g-gaming/p/N82E16814126470', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137611', + model: 'gaming x trio', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3060-ti-rtx-3060-ti-gaming-x-trio/p/N82E16814137611', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500507', + model: 'twin edge oc', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3060-ti-zt-a30610h-10m/p/N82E16814500507', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126471', + model: 'tuf', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3060-ti-tuf-rtx3060ti-o8g-gaming/p/N82E16814126471', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487535', + model: 'xc3', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3060-ti-08g-p5-3663-kr/p/N82E16814487535', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126468', + model: 'dual', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3060-ti-dual-rtx3060ti-o8g/p/N82E16814126468', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137612', + model: 'ventus 2x oc', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/msi-geforce-rtx-3060-ti-rtx-3060-ti-ventus-2x-oc/p/N82E16814137612', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487537', + model: 'ftw3 ultra', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/evga-geforce-rtx-3060-ti-08g-p5-3667-kr/p/N82E16814487537', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932375', + model: 'aorus', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3060-ti-gv-n306taorus-m-8gd/p/N82E16814932375', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932376', + model: 'gaming oc', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3060-ti-gv-n306tgamingoc-pro-8gd/p/N82E16814932376', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932379', + model: 'eagle', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-8gd/p/N82E16814932379', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932377', + model: 'gaming oc', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3060-ti-gv-n306tgaming-oc-8gd/p/N82E16814932377', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500506', + model: 'twin edge', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/zotac-geforce-rtx-3060-ti-zt-a30610e-10m/p/N82E16814500506', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932378', + model: 'eagle', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-oc-8gd/p/N82E16814932378', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126474', + model: 'gaming', + series: '3060ti', + url: + 'https://www.newegg.com/global/sg-en/asus-geforce-rtx-3060-ti-ko-rtx3060ti-o8g-gaming/p/N82E16814126474', + }, + { + brand: 'powercolor', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131767', + model: 'red devil', + series: 'rx6800xt', + url: + 'https://www.newegg.com/global/sg-en/powercolor-radeon-rx-6800-xt-axrx-6800xt-16gbd6-2dhce-oc/p/N82E16814131767', + }, + { + brand: 'powercolor', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131770', + model: 'red devil', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/powercolor-radeon-rx-6800-axrx-6800-16gbd6-2dhce-oc/p/N82E16814131770', + }, + { + brand: 'powercolor', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131773', + model: 'red dragon', + series: 'rx6800', + url: + 'https://www.newegg.com/global/sg-en/powercolor-radeon-rx-6800-axrx-6800-16gbd6-3dhr-oc/p/N82E16814131773', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16813119362', + model: 'crosshair viii', + series: 'darkhero', + url: + 'https://www.newegg.com/global/sg-en/asus-rog-crosshair-viii-dark-hero/p/N82E16813119362', + }, + ], + name: 'newegg-sg', + realTimeInventoryLookup: async (itemNumber: string) => { + const request_url = + 'https://www.newegg.com/global/sg-en/product/api/ProductRealtime?ItemNumber=' + + itemNumber; + const response = await fetch(request_url); + const response_json = await response.json(); + return ( + response_json.MainItem !== undefined && + response_json.MainItem.Instock === true + ); + }, }; diff --git a/src/store/model/newegg.ts b/src/store/model/newegg.ts index 4e8964b62b..47e4ca94ed 100644 --- a/src/store/model/newegg.ts +++ b/src/store/model/newegg.ts @@ -2,1087 +2,1087 @@ import {Store} from './store'; import fetch from 'node-fetch'; export const Newegg: Store = { - currency: '$', - labels: { - captcha: { - container: 'body', - text: ['are you a human?'] - }, - inStock: [ - { - container: '.product-buy', - text: ['add to cart'] - }, - { - container: '.loading-text', - text: ['add to cart'] - } - ], - maxPrice: { - container: '.price-current' - }, - outOfStock: [ - { - container: '.product-inventory', - text: [' out of stock.'] - }, - { - container: '.product-flag', - text: ['out of stock '] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.newegg.com/western-digital-blue-500gb/p/N82E16820250087?Item=N82E16820250087' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137601', - itemNumber: '14-137-601', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-ventus-3x-oc/p/N82E16814137601' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137602', - itemNumber: '14-137-602', - model: 'ventus 2x oc', - series: '3070', - url: - 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-ventus-2x-oc/p/N82E16814137602' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137603', - itemNumber: '14-137-603', - model: 'gaming x trio', - series: '3070', - url: - 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137603' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137605', - itemNumber: '14-137-605', - model: 'ventus 2x', - series: '3070', - url: - 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137605' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932360', - itemNumber: '14-932-360', - model: 'vision oc', - series: '3070', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126459', - itemNumber: '14-126-459', - model: 'dual oc', - series: '3070', - url: - 'https://www.newegg.com/asus-geforce-rtx-3070-dual-rtx3070-o8g/p/N82E16814126459' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126458', - itemNumber: '14-126-458', - model: 'strix', - series: '3070', - url: - 'https://www.newegg.com/asus-geforce-rtx-3070-rog-strix-rtx3070-o8g-gaming/p/N82E16814126458' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500501', - itemNumber: '14-500-501', - model: 'twin edge', - series: '3070', - url: - 'https://www.newegg.com/zotac-geforce-rtx-3070-zt-a30700e-10p/p/N82E16814500501' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500505', - itemNumber: '14-500-505', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.newegg.com/zotac-geforce-rtx-3070-zt-a30700h-10p/p/N82E16814500505' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932342', - itemNumber: '14-932-342', - model: 'gaming oc', - series: '3070', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070gaming-oc-8gd/p/N82E16814932342' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487532', - itemNumber: '14-487-532', - model: 'ftw3 ultra', - series: '3070', - url: - 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3767-kr/p/N82E16814487532' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487530', - itemNumber: '14-487-530', - model: 'xc3 ultra', - series: '3070', - url: - 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3755-kr/p/N82E16814487530' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487528', - itemNumber: '14-487-528', - model: 'xc3 black', - series: '3070', - url: - 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3751-kr/p/N82E16814487528' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932343', - itemNumber: '14-932-343', - model: 'eagle oc', - series: '3070', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070eagle-oc-8gd/p/N82E16814932343' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932344', - itemNumber: '14-932-344', - model: 'eagle', - series: '3070', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070eagle-8gd/p/N82E16814932344' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487529', - itemNumber: '14-487-529', - model: 'xc3', - series: '3070', - url: - 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3753-kr/p/N82E16814487529' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126460', - itemNumber: '14-126-460', - model: 'dual', - series: '3070', - url: - 'https://www.newegg.com/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126466', - itemNumber: '14-126-466', - model: 'gaming', - series: '3070', - url: - 'https://www.newegg.com/asus-geforce-rtx-3070-ko-rtx3070-o8g-gamin/p/N82E16814126466' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932359', - itemNumber: '14-932-359', - model: 'aorus master', - series: '3070', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070aorus-m-8gd/p/N82E16814932359' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487531', - itemNumber: '14-487-531', - model: 'ftw3', - series: '3070', - url: - 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126461', - itemNumber: '14-126-461', - model: 'tuf oc', - series: '3070', - url: - 'https://www.newegg.com/asus-geforce-rtx-3070-tuf-rtx3070-o8g-gaming/p/N82E16814126461' - }, - { - brand: 'pny', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133811', - itemNumber: '14-133-811', - model: 'gaming', - series: '3070', - url: - 'https://www.newegg.com/pny-geforce-rtx-3070-vcg30708tfxppb/p/N82E16814133811' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126453', - itemNumber: '14-126-453', - model: 'tuf', - series: '3080', - url: - 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487518', - itemNumber: '14-487-518', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487519', - itemNumber: '14-487-519', - model: 'ftw3', - series: '3080', - url: - 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487522', - itemNumber: '14-487-522', - model: 'xc3 black', - series: '3080', - url: - 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487521', - itemNumber: '14-487-521', - model: 'xc3', - series: '3080', - url: - 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137600', - itemNumber: '14-137-600', - model: 'ventus 3x', - series: '3080', - url: - 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137598', - itemNumber: '14-137-598', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137597', - itemNumber: '14-137-597', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932329', - itemNumber: '149-32-329', - model: 'gaming oc', - series: '3080', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932330', - itemNumber: '149-32-330', - model: 'eagle oc', - series: '3080', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932336', - itemNumber: '14-932-336', - model: 'aorus master', - series: '3080', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500502', - itemNumber: '14-950-502', - model: 'trinity', - series: '3080', - url: - 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126457', - itemNumber: '14-126-457', - model: 'strix', - series: '3080', - url: - 'https://www.newegg.com/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126452', - itemNumber: '14-126-452', - model: 'tuf oc', - series: '3080', - url: - 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500504', - itemNumber: '14-500-504', - model: 'trinity oc', - series: '3080', - url: - 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504' - }, - { - brand: 'pny', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133809', - itemNumber: '14-133-809', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.newegg.com/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932337', - itemNumber: '14-932-337', - model: 'vision oc', - series: '3080', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080vision-oc-10gd/p/N82E16814932337' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126455', - itemNumber: '14-126-455', - model: 'tuf', - series: '3090', - url: - 'https://www.newegg.com/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126456', - itemNumber: '14-126-456', - model: 'strix', - series: '3090', - url: - 'https://www.newegg.com/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137595', - itemNumber: '14-137-595', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137596', - itemNumber: '14-137-596', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500503', - itemNumber: '14-500-503', - model: 'trinity', - series: '3090', - url: - 'https://www.newegg.com/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137599', - itemNumber: '14-137-599', - model: 'ventus 3x', - series: '3090', - url: - 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487525', - itemNumber: '14-487-525', - model: 'ftw3', - series: '3090', - url: - 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487524', - itemNumber: '14-487-524', - model: 'xc3 ultra', - series: '3090', - url: - 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487526', - itemNumber: '14-487-526', - model: 'ftw3 ultra', - series: '3090', - url: - 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487527', - itemNumber: '14-487-527', - model: 'xc3 black', - series: '3090', - url: - 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3971-kr/p/N82E16814487527' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487523', - itemNumber: '14-487-523', - model: 'xc3', - series: '3090', - url: - 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932327', - itemNumber: '14-932-327', - model: 'gaming', - series: '3090', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932328', - itemNumber: '14-932-328', - model: 'eagle', - series: '3090', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090eagle-oc-24gd/p/N82E16814932328' - }, - { - brand: 'amd', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113663', - itemNumber: '19-113-663', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.newegg.com/amd-ryzen-9-5950x/p/N82E16819113663' - }, - { - brand: 'amd', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113664', - itemNumber: '19-113-664', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.newegg.com/amd-ryzen-9-5900x/p/N82E16819113664' - }, - { - brand: 'amd', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113665', - itemNumber: '19-113-665', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.newegg.com/amd-ryzen-7-5800x/p/N82E16819113665' - }, - { - brand: 'amd', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113666', - itemNumber: '19-113-666', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.newegg.com/amd-ryzen-5-5600x/p/N82E16819113666' - }, - { - brand: 'microsoft', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16868105273', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.newegg.com/p/N82E16868105273' - }, - { - brand: 'microsoft', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16868105274', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.newegg.com/p/N82E16868105274' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930051', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.com/asrock-radeon-rx-6900-xt-rx6900xt-16g/p/N82E16814930051' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932384', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.com/gigabyte-radeon-rx-6900-xt-gv-r69xt-16gc-b/p/N82E16814932384' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137618', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.com/msi-radeon-rx-6900-xt-rx-6900-xt-16g/p/N82E16814137618' - }, - { - brand: 'powercolor', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131774', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.com/powercolor-radeon-rx-6900-xt-axrx-6900xt-16gbd6-m2dhc/p/N82E16814131774' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202393', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.newegg.com/sapphire-radeon-rx-6900-xt-21308-01-20g/p/N82E16814202393' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930052', - model: 'phantom gaming', - series: 'rx6900xt', - url: - 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx6900xt-pgd-16g/p/N82E16814930052' - }, - { - brand: 'xfx', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814150846', - model: 'merc', - series: 'rx6900xt', - url: - 'https://www.newegg.com/xfx-radeon-rx-6900-xt-rx-69xtacud9/p/N82E16814150846' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932373', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.com/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932381', - model: 'gaming oc', - series: 'rx6800xt', - url: - 'https://www.newegg.com/gigabyte-radeon-rx-6800-xt-gv-r68xtgaming-oc-16gd/p/N82E16814932381' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202394', - model: 'pulse', - series: 'rx6800', - url: - 'https://www.newegg.com/sapphire-radeon-rx-6800-11305-02-20g/p/N82E16814202394' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137607', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.com/msi-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814137607' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202388', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.com/sapphire-radeon-rx-6800-xt-21304-01-20g/p/N82E16814202388' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930045', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814930045' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126472', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.newegg.com/asus-radeon-rx-6800-xt-rx6800xt-16g/p/N82E16814126472' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126473', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.com/asus-radeon-rx-6800-rx6800-16g/p/N82E16814126473' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930046', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.com/asrock-radeon-rx-6800-rx-6800-16g/p/N82E16814930046' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932374', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.com/gigabyte-radeon-rx-6800-gv-r68-16gc-b/p/N82E16814932374' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202389', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.com/sapphire-radeon-rx-6800-21305-01-20g/p/N82E16814202389' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137608', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.newegg.com/msi-radeon-rx-6800-rx-6800-16g/p/N82E16814137608' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930047', - model: 'challenger', - series: 'rx6800', - url: - 'https://www.newegg.com/asrock-radeon-rx-6800-rx6800-clp-16go/p/N82E16814930047' - }, + currency: '$', + labels: { + captcha: { + container: 'body', + text: ['are you a human?'], + }, + inStock: [ + { + container: '.product-buy', + text: ['add to cart'], + }, + { + container: '.loading-text', + text: ['add to cart'], + }, + ], + maxPrice: { + container: '.price-current', + }, + outOfStock: [ + { + container: '.product-inventory', + text: [' out of stock.'], + }, + { + container: '.product-flag', + text: ['out of stock '], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.newegg.com/western-digital-blue-500gb/p/N82E16820250087?Item=N82E16820250087', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137601', + itemNumber: '14-137-601', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-ventus-3x-oc/p/N82E16814137601', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137602', + itemNumber: '14-137-602', + model: 'ventus 2x oc', + series: '3070', + url: + 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-ventus-2x-oc/p/N82E16814137602', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137603', + itemNumber: '14-137-603', + model: 'gaming x trio', + series: '3070', + url: + 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137603', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137605', + itemNumber: '14-137-605', + model: 'ventus 2x', + series: '3070', + url: + 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-gaming-x-trio/p/N82E16814137605', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932360', + itemNumber: '14-932-360', + model: 'vision oc', + series: '3070', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070vision-oc-8gd/p/N82E16814932360', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126459', + itemNumber: '14-126-459', + model: 'dual oc', + series: '3070', + url: + 'https://www.newegg.com/asus-geforce-rtx-3070-dual-rtx3070-o8g/p/N82E16814126459', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126458', + itemNumber: '14-126-458', + model: 'strix', + series: '3070', + url: + 'https://www.newegg.com/asus-geforce-rtx-3070-rog-strix-rtx3070-o8g-gaming/p/N82E16814126458', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500501', + itemNumber: '14-500-501', + model: 'twin edge', + series: '3070', + url: + 'https://www.newegg.com/zotac-geforce-rtx-3070-zt-a30700e-10p/p/N82E16814500501', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500505', + itemNumber: '14-500-505', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.newegg.com/zotac-geforce-rtx-3070-zt-a30700h-10p/p/N82E16814500505', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932342', + itemNumber: '14-932-342', + model: 'gaming oc', + series: '3070', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070gaming-oc-8gd/p/N82E16814932342', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487532', + itemNumber: '14-487-532', + model: 'ftw3 ultra', + series: '3070', + url: + 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3767-kr/p/N82E16814487532', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487530', + itemNumber: '14-487-530', + model: 'xc3 ultra', + series: '3070', + url: + 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3755-kr/p/N82E16814487530', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487528', + itemNumber: '14-487-528', + model: 'xc3 black', + series: '3070', + url: + 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3751-kr/p/N82E16814487528', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932343', + itemNumber: '14-932-343', + model: 'eagle oc', + series: '3070', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070eagle-oc-8gd/p/N82E16814932343', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932344', + itemNumber: '14-932-344', + model: 'eagle', + series: '3070', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070eagle-8gd/p/N82E16814932344', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487529', + itemNumber: '14-487-529', + model: 'xc3', + series: '3070', + url: + 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3753-kr/p/N82E16814487529', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126460', + itemNumber: '14-126-460', + model: 'dual', + series: '3070', + url: + 'https://www.newegg.com/asus-geforce-rtx-3070-dual-rtx3070-8g/p/N82E16814126460', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126466', + itemNumber: '14-126-466', + model: 'gaming', + series: '3070', + url: + 'https://www.newegg.com/asus-geforce-rtx-3070-ko-rtx3070-o8g-gamin/p/N82E16814126466', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932359', + itemNumber: '14-932-359', + model: 'aorus master', + series: '3070', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3070-gv-n3070aorus-m-8gd/p/N82E16814932359', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487531', + itemNumber: '14-487-531', + model: 'ftw3', + series: '3070', + url: + 'https://www.newegg.com/evga-geforce-rtx-3070-08g-p5-3765-kr/p/N82E16814487531', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126461', + itemNumber: '14-126-461', + model: 'tuf oc', + series: '3070', + url: + 'https://www.newegg.com/asus-geforce-rtx-3070-tuf-rtx3070-o8g-gaming/p/N82E16814126461', + }, + { + brand: 'pny', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133811', + itemNumber: '14-133-811', + model: 'gaming', + series: '3070', + url: + 'https://www.newegg.com/pny-geforce-rtx-3070-vcg30708tfxppb/p/N82E16814133811', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126453', + itemNumber: '14-126-453', + model: 'tuf', + series: '3080', + url: + 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-10g-gaming/p/N82E16814126453', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487518', + itemNumber: '14-487-518', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3897-kr/p/N82E16814487518', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487519', + itemNumber: '14-487-519', + model: 'ftw3', + series: '3080', + url: + 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3895-kr/p/N82E16814487519', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487522', + itemNumber: '14-487-522', + model: 'xc3 black', + series: '3080', + url: + 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3881-kr/p/N82E16814487522', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487521', + itemNumber: '14-487-521', + model: 'xc3', + series: '3080', + url: + 'https://www.newegg.com/evga-geforce-rtx-3080-10g-p5-3883-kr/p/N82E16814487521', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137600', + itemNumber: '14-137-600', + model: 'ventus 3x', + series: '3080', + url: + 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g/p/N82E16814137600', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137598', + itemNumber: '14-137-598', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-ventus-3x-10g-oc/p/N82E16814137598', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137597', + itemNumber: '14-137-597', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.newegg.com/msi-geforce-rtx-3080-rtx-3080-gaming-x-trio-10g/p/N82E16814137597', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932329', + itemNumber: '149-32-329', + model: 'gaming oc', + series: '3080', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080gaming-oc-10gd/p/N82E16814932329', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932330', + itemNumber: '149-32-330', + model: 'eagle oc', + series: '3080', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080eagle-oc-10gd/p/N82E16814932330', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932336', + itemNumber: '14-932-336', + model: 'aorus master', + series: '3080', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorus-m-10gd/p/N82E16814932336', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500502', + itemNumber: '14-950-502', + model: 'trinity', + series: '3080', + url: + 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-a30800d-10p/p/N82E16814500502', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126457', + itemNumber: '14-126-457', + model: 'strix', + series: '3080', + url: + 'https://www.newegg.com/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-gaming/p/N82E16814126457', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126452', + itemNumber: '14-126-452', + model: 'tuf oc', + series: '3080', + url: + 'https://www.newegg.com/asus-geforce-rtx-3080-tuf-rtx3080-o10g-gaming/p/N82E16814126452', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500504', + itemNumber: '14-500-504', + model: 'trinity oc', + series: '3080', + url: + 'https://www.newegg.com/zotac-geforce-rtx-3080-zt-t30800j-10p/p/N82E16814500504', + }, + { + brand: 'pny', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133809', + itemNumber: '14-133-809', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.newegg.com/pny-geforce-rtx-3080-vcg308010tfxppb/p/N82E16814133809', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932337', + itemNumber: '14-932-337', + model: 'vision oc', + series: '3080', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080vision-oc-10gd/p/N82E16814932337', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126455', + itemNumber: '14-126-455', + model: 'tuf', + series: '3090', + url: + 'https://www.newegg.com/asus-geforce-rtx-3090-tuf-rtx3090-24g-gaming/p/N82E16814126455', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126456', + itemNumber: '14-126-456', + model: 'strix', + series: '3090', + url: + 'https://www.newegg.com/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-gaming/p/N82E16814126456', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137595', + itemNumber: '14-137-595', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-gaming-x-trio-24g/p/N82E16814137595', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137596', + itemNumber: '14-137-596', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g-oc/p/N82E16814137596', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500503', + itemNumber: '14-500-503', + model: 'trinity', + series: '3090', + url: + 'https://www.newegg.com/zotac-geforce-rtx-3090-zt-a30900d-10p/p/N82E16814500503', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137599', + itemNumber: '14-137-599', + model: 'ventus 3x', + series: '3090', + url: + 'https://www.newegg.com/msi-geforce-rtx-3090-rtx-3090-ventus-3x-24g/p/N82E16814137599', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487525', + itemNumber: '14-487-525', + model: 'ftw3', + series: '3090', + url: + 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3985-kr/p/N82E16814487525', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487524', + itemNumber: '14-487-524', + model: 'xc3 ultra', + series: '3090', + url: + 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3975-kr/p/N82E16814487524', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487526', + itemNumber: '14-487-526', + model: 'ftw3 ultra', + series: '3090', + url: + 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3987-kr/p/N82E16814487526', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487527', + itemNumber: '14-487-527', + model: 'xc3 black', + series: '3090', + url: + 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3971-kr/p/N82E16814487527', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487523', + itemNumber: '14-487-523', + model: 'xc3', + series: '3090', + url: + 'https://www.newegg.com/evga-geforce-rtx-3090-24g-p5-3973-kr/p/N82E16814487523', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932327', + itemNumber: '14-932-327', + model: 'gaming', + series: '3090', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090gaming-oc-24gd/p/N82E16814932327', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932328', + itemNumber: '14-932-328', + model: 'eagle', + series: '3090', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090eagle-oc-24gd/p/N82E16814932328', + }, + { + brand: 'amd', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113663', + itemNumber: '19-113-663', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.newegg.com/amd-ryzen-9-5950x/p/N82E16819113663', + }, + { + brand: 'amd', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113664', + itemNumber: '19-113-664', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.newegg.com/amd-ryzen-9-5900x/p/N82E16819113664', + }, + { + brand: 'amd', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113665', + itemNumber: '19-113-665', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.newegg.com/amd-ryzen-7-5800x/p/N82E16819113665', + }, + { + brand: 'amd', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16819113666', + itemNumber: '19-113-666', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.newegg.com/amd-ryzen-5-5600x/p/N82E16819113666', + }, + { + brand: 'microsoft', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16868105273', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.newegg.com/p/N82E16868105273', + }, + { + brand: 'microsoft', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16868105274', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.newegg.com/p/N82E16868105274', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930051', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.com/asrock-radeon-rx-6900-xt-rx6900xt-16g/p/N82E16814930051', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932384', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.com/gigabyte-radeon-rx-6900-xt-gv-r69xt-16gc-b/p/N82E16814932384', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137618', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.com/msi-radeon-rx-6900-xt-rx-6900-xt-16g/p/N82E16814137618', + }, + { + brand: 'powercolor', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131774', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.com/powercolor-radeon-rx-6900-xt-axrx-6900xt-16gbd6-m2dhc/p/N82E16814131774', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202393', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.newegg.com/sapphire-radeon-rx-6900-xt-21308-01-20g/p/N82E16814202393', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930052', + model: 'phantom gaming', + series: 'rx6900xt', + url: + 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx6900xt-pgd-16g/p/N82E16814930052', + }, + { + brand: 'xfx', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814150846', + model: 'merc', + series: 'rx6900xt', + url: + 'https://www.newegg.com/xfx-radeon-rx-6900-xt-rx-69xtacud9/p/N82E16814150846', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932373', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.com/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932381', + model: 'gaming oc', + series: 'rx6800xt', + url: + 'https://www.newegg.com/gigabyte-radeon-rx-6800-xt-gv-r68xtgaming-oc-16gd/p/N82E16814932381', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202394', + model: 'pulse', + series: 'rx6800', + url: + 'https://www.newegg.com/sapphire-radeon-rx-6800-11305-02-20g/p/N82E16814202394', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137607', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.com/msi-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814137607', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202388', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.com/sapphire-radeon-rx-6800-xt-21304-01-20g/p/N82E16814202388', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930045', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814930045', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126472', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.newegg.com/asus-radeon-rx-6800-xt-rx6800xt-16g/p/N82E16814126472', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126473', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.com/asus-radeon-rx-6800-rx6800-16g/p/N82E16814126473', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930046', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.com/asrock-radeon-rx-6800-rx-6800-16g/p/N82E16814930046', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932374', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.com/gigabyte-radeon-rx-6800-gv-r68-16gc-b/p/N82E16814932374', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202389', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.com/sapphire-radeon-rx-6800-21305-01-20g/p/N82E16814202389', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137608', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.newegg.com/msi-radeon-rx-6800-rx-6800-16g/p/N82E16814137608', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930047', + model: 'challenger', + series: 'rx6800', + url: + 'https://www.newegg.com/asrock-radeon-rx-6800-rx6800-clp-16go/p/N82E16814930047', + }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930048', - model: 'phantom gaming', - series: 'rx6800', - url: - 'https://www.newegg.com/asrock-radeon-rx-6800-rx6800-pgd-16go/p/N82E16814930048' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930049', - model: 'phantom gaming', - series: 'rx6800xt', - url: - 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx6800xt-pgd-16go/p/N82E16814930049' - }, - { - brand: 'asrock', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930050', - model: 'taichi', - series: 'rx6800xt', - url: - 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx6800xt-tcx-16go/p/N82E16814930050' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126478', - model: 'tuf', - series: 'rx6800', - url: - 'https://www.newegg.com/asus-radeon-rx-6800-tuf-rx6800-o16g-gaming/p/N82E16814126478' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126476', - model: 'tuf', - series: 'rx6800xt', - url: - 'https://www.newegg.com/asus-radeon-rx-6800-xt-tuf-rx6800xt-o16g-gaming/p/N82E16814126476' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126477', - model: 'strix', - series: 'rx6800', - url: - 'https://www.newegg.com/asus-radeon-rx-6800-rog-strix-rx6800-o16g-gaming/p/N82E16814126477' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126475', - model: 'strix lc', - series: 'rx6800xt', - url: - 'https://www.newegg.com/asus-radeon-rx-6800-xt-rog-strix-lc-rx6800xt-o16g-gaming/p/N82E16814126475' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202391', - model: 'nitro+', - series: 'rx6800xt', - url: - 'https://www.newegg.com/sapphire-radeon-rx-6800-xt-11304-02-20g/p/N82E16814202391' - }, - { - brand: 'sapphire', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202390', - model: 'nitro+ se', - series: 'rx6800xt', - url: - 'https://www.newegg.com/sapphire-radeon-rx-6800-xt-11304-01-20g/p/N82E16814202390' - }, - { - brand: 'xfx', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814150844', - model: 'merc', - series: 'rx6800xt', - url: - 'https://www.newegg.com/xfx-radeon-rx-6800-xt-rx-68xtacbd9/p/N82E16814150844' - }, - { - brand: 'corsair', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16817139080', - model: '750 platinum', - series: 'sf', - url: - 'https://www.newegg.com/corsair-sf750-cp-9020186-na-750w/p/N82E16817139080' - }, - { - brand: 'corsair', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16817139242', - model: '600 platinum', - series: 'sf', - url: - 'https://www.newegg.com/corsair-sf-series-sf600-cp-9020182-na-600w/p/N82E16817139242' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126470', - model: 'strix', - series: '3060ti', - url: - 'https://www.newegg.com/asus-geforce-rtx-3060-ti-rog-strix-rtx3060ti-o8g-gaming/p/N82E16814126470' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137611', - model: 'gaming x trio', - series: '3060ti', - url: - 'https://www.newegg.com/msi-geforce-rtx-3060-ti-rtx-3060-ti-gaming-x-trio/p/N82E16814137611' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500507', - model: 'twin edge oc', - series: '3060ti', - url: - 'https://www.newegg.com/zotac-geforce-rtx-3060-ti-zt-a30610h-10m/p/N82E16814500507' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126471', - model: 'tuf', - series: '3060ti', - url: - 'https://www.newegg.com/asus-geforce-rtx-3060-ti-tuf-rtx3060ti-o8g-gaming/p/N82E16814126471' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487535', - model: 'xc3', - series: '3060ti', - url: - 'https://www.newegg.com/evga-geforce-rtx-3060-ti-08g-p5-3663-kr/p/N82E16814487535' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126468', - model: 'dual', - series: '3060ti', - url: - 'https://www.newegg.com/asus-geforce-rtx-3060-ti-dual-rtx3060ti-o8g/p/N82E16814126468' - }, - { - brand: 'msi', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137612', - model: 'ventus 2x oc', - series: '3060ti', - url: - 'https://www.newegg.com/msi-geforce-rtx-3060-ti-rtx-3060-ti-ventus-2x-oc/p/N82E16814137612' - }, - { - brand: 'evga', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487537', - model: 'ftw3 ultra', - series: '3060ti', - url: - 'https://www.newegg.com/evga-geforce-rtx-3060-ti-08g-p5-3667-kr/p/N82E16814487537' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932375', - model: 'aorus', - series: '3060ti', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306taorus-m-8gd/p/N82E16814932375' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932376', - model: 'gaming oc', - series: '3060ti', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306tgamingoc-pro-8gd/p/N82E16814932376' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932379', - model: 'eagle', - series: '3060ti', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-8gd/p/N82E16814932379' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932377', - model: 'gaming oc', - series: '3060ti', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306tgaming-oc-8gd/p/N82E16814932377' - }, - { - brand: 'zotac', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500506', - model: 'twin edge', - series: '3060ti', - url: - 'https://www.newegg.com/zotac-geforce-rtx-3060-ti-zt-a30610e-10m/p/N82E16814500506' - }, - { - brand: 'gigabyte', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932378', - model: 'eagle', - series: '3060ti', - url: - 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-oc-8gd/p/N82E16814932378' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126474', - model: 'gaming', - series: '3060ti', - url: - 'https://www.newegg.com/asus-geforce-rtx-3060-ti-ko-rtx3060ti-o8g-gaming/p/N82E16814126474' - }, - { - brand: 'powercolor', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131767', - model: 'red devil', - series: 'rx6800xt', - url: - 'https://www.newegg.com/powercolor-radeon-rx-6800-xt-axrx-6800xt-16gbd6-2dhce-oc/p/N82E16814131767' - }, - { - brand: 'powercolor', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131770', - model: 'red devil', - series: 'rx6800', - url: - 'https://www.newegg.com/powercolor-radeon-rx-6800-axrx-6800-16gbd6-2dhce-oc/p/N82E16814131770' - }, - { - brand: 'powercolor', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131773', - model: 'red dragon', - series: 'rx6800', - url: - 'https://www.newegg.com/powercolor-radeon-rx-6800-axrx-6800-16gbd6-3dhr-oc/p/N82E16814131773' - }, - { - brand: 'asus', - cartUrl: - 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16813119362', - model: 'crosshair viii', - series: 'darkhero', - url: - 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16813119362' - } - ], - name: 'newegg', - realTimeInventoryLookup: async (itemNumber: string) => { - const request_url = - 'https://www.newegg.com/product/api/ProductRealtime?ItemNumber=' + - itemNumber; - const response = await fetch(request_url); - const response_json = await response.json(); - return ( - response_json.MainItem !== undefined && - response_json.MainItem.Instock === true - ); - } + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930048', + model: 'phantom gaming', + series: 'rx6800', + url: + 'https://www.newegg.com/asrock-radeon-rx-6800-rx6800-pgd-16go/p/N82E16814930048', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930049', + model: 'phantom gaming', + series: 'rx6800xt', + url: + 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx6800xt-pgd-16go/p/N82E16814930049', + }, + { + brand: 'asrock', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814930050', + model: 'taichi', + series: 'rx6800xt', + url: + 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx6800xt-tcx-16go/p/N82E16814930050', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126478', + model: 'tuf', + series: 'rx6800', + url: + 'https://www.newegg.com/asus-radeon-rx-6800-tuf-rx6800-o16g-gaming/p/N82E16814126478', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126476', + model: 'tuf', + series: 'rx6800xt', + url: + 'https://www.newegg.com/asus-radeon-rx-6800-xt-tuf-rx6800xt-o16g-gaming/p/N82E16814126476', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126477', + model: 'strix', + series: 'rx6800', + url: + 'https://www.newegg.com/asus-radeon-rx-6800-rog-strix-rx6800-o16g-gaming/p/N82E16814126477', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126475', + model: 'strix lc', + series: 'rx6800xt', + url: + 'https://www.newegg.com/asus-radeon-rx-6800-xt-rog-strix-lc-rx6800xt-o16g-gaming/p/N82E16814126475', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202391', + model: 'nitro+', + series: 'rx6800xt', + url: + 'https://www.newegg.com/sapphire-radeon-rx-6800-xt-11304-02-20g/p/N82E16814202391', + }, + { + brand: 'sapphire', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814202390', + model: 'nitro+ se', + series: 'rx6800xt', + url: + 'https://www.newegg.com/sapphire-radeon-rx-6800-xt-11304-01-20g/p/N82E16814202390', + }, + { + brand: 'xfx', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814150844', + model: 'merc', + series: 'rx6800xt', + url: + 'https://www.newegg.com/xfx-radeon-rx-6800-xt-rx-68xtacbd9/p/N82E16814150844', + }, + { + brand: 'corsair', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16817139080', + model: '750 platinum', + series: 'sf', + url: + 'https://www.newegg.com/corsair-sf750-cp-9020186-na-750w/p/N82E16817139080', + }, + { + brand: 'corsair', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16817139242', + model: '600 platinum', + series: 'sf', + url: + 'https://www.newegg.com/corsair-sf-series-sf600-cp-9020182-na-600w/p/N82E16817139242', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126470', + model: 'strix', + series: '3060ti', + url: + 'https://www.newegg.com/asus-geforce-rtx-3060-ti-rog-strix-rtx3060ti-o8g-gaming/p/N82E16814126470', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137611', + model: 'gaming x trio', + series: '3060ti', + url: + 'https://www.newegg.com/msi-geforce-rtx-3060-ti-rtx-3060-ti-gaming-x-trio/p/N82E16814137611', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500507', + model: 'twin edge oc', + series: '3060ti', + url: + 'https://www.newegg.com/zotac-geforce-rtx-3060-ti-zt-a30610h-10m/p/N82E16814500507', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126471', + model: 'tuf', + series: '3060ti', + url: + 'https://www.newegg.com/asus-geforce-rtx-3060-ti-tuf-rtx3060ti-o8g-gaming/p/N82E16814126471', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487535', + model: 'xc3', + series: '3060ti', + url: + 'https://www.newegg.com/evga-geforce-rtx-3060-ti-08g-p5-3663-kr/p/N82E16814487535', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126468', + model: 'dual', + series: '3060ti', + url: + 'https://www.newegg.com/asus-geforce-rtx-3060-ti-dual-rtx3060ti-o8g/p/N82E16814126468', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137612', + model: 'ventus 2x oc', + series: '3060ti', + url: + 'https://www.newegg.com/msi-geforce-rtx-3060-ti-rtx-3060-ti-ventus-2x-oc/p/N82E16814137612', + }, + { + brand: 'evga', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814487537', + model: 'ftw3 ultra', + series: '3060ti', + url: + 'https://www.newegg.com/evga-geforce-rtx-3060-ti-08g-p5-3667-kr/p/N82E16814487537', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932375', + model: 'aorus', + series: '3060ti', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306taorus-m-8gd/p/N82E16814932375', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932376', + model: 'gaming oc', + series: '3060ti', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306tgamingoc-pro-8gd/p/N82E16814932376', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932379', + model: 'eagle', + series: '3060ti', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-8gd/p/N82E16814932379', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932377', + model: 'gaming oc', + series: '3060ti', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306tgaming-oc-8gd/p/N82E16814932377', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500506', + model: 'twin edge', + series: '3060ti', + url: + 'https://www.newegg.com/zotac-geforce-rtx-3060-ti-zt-a30610e-10m/p/N82E16814500506', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932378', + model: 'eagle', + series: '3060ti', + url: + 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-oc-8gd/p/N82E16814932378', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126474', + model: 'gaming', + series: '3060ti', + url: + 'https://www.newegg.com/asus-geforce-rtx-3060-ti-ko-rtx3060ti-o8g-gaming/p/N82E16814126474', + }, + { + brand: 'powercolor', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131767', + model: 'red devil', + series: 'rx6800xt', + url: + 'https://www.newegg.com/powercolor-radeon-rx-6800-xt-axrx-6800xt-16gbd6-2dhce-oc/p/N82E16814131767', + }, + { + brand: 'powercolor', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131770', + model: 'red devil', + series: 'rx6800', + url: + 'https://www.newegg.com/powercolor-radeon-rx-6800-axrx-6800-16gbd6-2dhce-oc/p/N82E16814131770', + }, + { + brand: 'powercolor', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814131773', + model: 'red dragon', + series: 'rx6800', + url: + 'https://www.newegg.com/powercolor-radeon-rx-6800-axrx-6800-16gbd6-3dhr-oc/p/N82E16814131773', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16813119362', + model: 'crosshair viii', + series: 'darkhero', + url: + 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16813119362', + }, + ], + name: 'newegg', + realTimeInventoryLookup: async (itemNumber: string) => { + const request_url = + 'https://www.newegg.com/product/api/ProductRealtime?ItemNumber=' + + itemNumber; + const response = await fetch(request_url); + const response_json = await response.json(); + return ( + response_json.MainItem !== undefined && + response_json.MainItem.Instock === true + ); + }, }; diff --git a/src/store/model/notebooksbilliger.ts b/src/store/model/notebooksbilliger.ts index 0a7f1b8d1a..11b0101547 100644 --- a/src/store/model/notebooksbilliger.ts +++ b/src/store/model/notebooksbilliger.ts @@ -1,292 +1,292 @@ import {Store} from './store'; export const Notebooksbilliger: Store = { - currency: '€', - labels: { - inStock: { - container: '.warehouse', - text: [ - 'sofort ab lager', - 'verfügbarkeit: ca. 2-4 werktage', - 'verfügbarkeit: ca. 5-10 werktage' - ] - }, - maxPrice: { - container: - 'form[name="cart_quantity"] span[class*="product-price__regular"]', - euroFormat: true - }, - outOfStock: [ - { - container: '.warehouse', - text: ['liefertermin noch unbestimmt'] - }, - { - container: '.soldOut', - text: ['dieses produkt ist leider ausverkauft.'] - }, - { - container: '.just_inStore', - text: [ - 'dieses Produkt kann nur in unseren unten genannten Stores gekauft werden.' - ] - }, - { - container: '#product_error_text', - text: ['leider ist dieser artikel nicht mehr verfügbar.'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.notebooksbilliger.de/gainward+geforce+rtx+2070+super+phoenix+v1+grafikkarte+656238' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3070', - url: - 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+ichill+x3+grafikkarte+684162' - }, - { - brand: 'inno3d', - model: 'twin x2', - series: '3070', - url: - 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+twin+x2+grafikkarte+685496' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3070', - url: - 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+twin+x2+oc+grafikkarte+685500' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3070', - url: - 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3070+founders+edition+685357' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3070', - url: - 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3070+founders+edition+685359' - }, - { - brand: 'gainward', - model: 'phoenix', - series: '3070', - url: - 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3070+phoenix+8gb+gddr6+grafikkarte+685073' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3070', - url: - 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3070+phoenix+gs+8gb+gddr6+grafikkarte+681575' - }, - { - brand: 'pny', - model: 'uprising', - series: '3070', - url: - 'https://www.notebooksbilliger.de/pny+geforce+rtx+3070+8gb+uprising+dual+fan+edition+grafikkarte+685520' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3070', - url: - 'https://www.notebooksbilliger.de/pny+geforce+rtx+3070+8gb+xlr8+gaming+revel+epic+x+rgb+685560' - }, - { - brand: 'asus', - model: 'tuf', - series: '3070', - url: - 'https://www.notebooksbilliger.de/asus+tuf+gaming+geforce+rtx+3070+8gb+grafikkarte+685524' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3070+twin+edge+8gb+gddr6+grafikkarte+677561' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3070+twin+edge+oc+8gb+gddr6+grafikkarte+684216' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3080', - url: - 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3080+phoenix+gs+10gb+gddr6x+grafikkarte+677618' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+eagle+oc+10gb+gddr6x+grafikkarte+677501' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+gaming+oc+10gb+gddr6x+grafikkarte+677499' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3080+ichill+x3+grafikkarte+678588' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: - 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3080+twin+x2+oc+grafikkarte+679190' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.notebooksbilliger.de/msi+geforce+rtx+3080+gaming+x+trio+10g+grafikkarte+678527' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3080', - url: - 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3080+founders+edition+683301' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3080', - url: - 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3080+founders+edition+685126' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3080', - url: - 'https://www.notebooksbilliger.de/palit+geforce+rtx+3080+gamingpro+10gb+gddr6x+grafikkarte+677609' - }, - { - brand: 'palit', - model: 'gaming pro oc', - series: '3080', - url: - 'https://www.notebooksbilliger.de/palit+geforce+rtx+3080+gamingpro+oc+10gb+gddr6x+grafikkarte+677606' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.notebooksbilliger.de/pny+geforce+rtx+3080+xlr8+gaming+10gb+gddr6x+grafikkarte+677407' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.notebooksbilliger.de/pny+geforce+rtx+3080+10gb+xlr8+gaming+revel+epic+x+grafikkarte+677412' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: - 'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3090+24gb+gddr6x+grafikkarte+677343' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3090+oc+24gb+gddr6x+grafikkarte+677308' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: - 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3090+master+24gb+gddr6x+grafikkarte+683868' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3090', - url: - 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3090+founders+edition+683300' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3090', - url: - 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3090+founders+edition+685124' - }, - { - brand: 'palit', - model: 'gaming pro oc', - series: '3090', - url: - 'https://www.notebooksbilliger.de/palit+geforce+rtx+3090+gamingpro+oc+24gb+gddr6x+grafikkarte+677599' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3090+trinity+24gb+gddr6x+grafikkarte+677550' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.notebooksbilliger.de/amd+ryzen+5+5600x+cpu+684022' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.notebooksbilliger.de/amd+ryzen+ryzen+7+5800x+cpu+684018' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.notebooksbilliger.de/amd+ryzen+9+5900x+cpu+684032' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.notebooksbilliger.de/amd+ryzen+9+5950x+cpu+684033' - } - ], - name: 'notebooksbilliger' + currency: '€', + labels: { + inStock: { + container: '.warehouse', + text: [ + 'sofort ab lager', + 'verfügbarkeit: ca. 2-4 werktage', + 'verfügbarkeit: ca. 5-10 werktage', + ], + }, + maxPrice: { + container: + 'form[name="cart_quantity"] span[class*="product-price__regular"]', + euroFormat: true, + }, + outOfStock: [ + { + container: '.warehouse', + text: ['liefertermin noch unbestimmt'], + }, + { + container: '.soldOut', + text: ['dieses produkt ist leider ausverkauft.'], + }, + { + container: '.just_inStore', + text: [ + 'dieses Produkt kann nur in unseren unten genannten Stores gekauft werden.', + ], + }, + { + container: '#product_error_text', + text: ['leider ist dieser artikel nicht mehr verfügbar.'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.notebooksbilliger.de/gainward+geforce+rtx+2070+super+phoenix+v1+grafikkarte+656238', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3070', + url: + 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+ichill+x3+grafikkarte+684162', + }, + { + brand: 'inno3d', + model: 'twin x2', + series: '3070', + url: + 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+twin+x2+grafikkarte+685496', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3070', + url: + 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3070+twin+x2+oc+grafikkarte+685500', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3070', + url: + 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3070+founders+edition+685357', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3070', + url: + 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3070+founders+edition+685359', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3070', + url: + 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3070+phoenix+8gb+gddr6+grafikkarte+685073', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3070', + url: + 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3070+phoenix+gs+8gb+gddr6+grafikkarte+681575', + }, + { + brand: 'pny', + model: 'uprising', + series: '3070', + url: + 'https://www.notebooksbilliger.de/pny+geforce+rtx+3070+8gb+uprising+dual+fan+edition+grafikkarte+685520', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3070', + url: + 'https://www.notebooksbilliger.de/pny+geforce+rtx+3070+8gb+xlr8+gaming+revel+epic+x+rgb+685560', + }, + { + brand: 'asus', + model: 'tuf', + series: '3070', + url: + 'https://www.notebooksbilliger.de/asus+tuf+gaming+geforce+rtx+3070+8gb+grafikkarte+685524', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3070+twin+edge+8gb+gddr6+grafikkarte+677561', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3070+twin+edge+oc+8gb+gddr6+grafikkarte+684216', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3080', + url: + 'https://www.notebooksbilliger.de/gainward+geforce+rtx+3080+phoenix+gs+10gb+gddr6x+grafikkarte+677618', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+eagle+oc+10gb+gddr6x+grafikkarte+677501', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3080+gaming+oc+10gb+gddr6x+grafikkarte+677499', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3080+ichill+x3+grafikkarte+678588', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: + 'https://www.notebooksbilliger.de/inno3d+geforce+rtx+3080+twin+x2+oc+grafikkarte+679190', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.notebooksbilliger.de/msi+geforce+rtx+3080+gaming+x+trio+10g+grafikkarte+678527', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3080', + url: + 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3080+founders+edition+683301', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3080', + url: + 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3080+founders+edition+685126', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3080', + url: + 'https://www.notebooksbilliger.de/palit+geforce+rtx+3080+gamingpro+10gb+gddr6x+grafikkarte+677609', + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3080', + url: + 'https://www.notebooksbilliger.de/palit+geforce+rtx+3080+gamingpro+oc+10gb+gddr6x+grafikkarte+677606', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.notebooksbilliger.de/pny+geforce+rtx+3080+xlr8+gaming+10gb+gddr6x+grafikkarte+677407', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.notebooksbilliger.de/pny+geforce+rtx+3080+10gb+xlr8+gaming+revel+epic+x+grafikkarte+677412', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: + 'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3090+24gb+gddr6x+grafikkarte+677343', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.notebooksbilliger.de/asus+rog+strix+geforce+rtx+3090+oc+24gb+gddr6x+grafikkarte+677308', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: + 'https://www.notebooksbilliger.de/gigabyte+geforce+rtx+3090+master+24gb+gddr6x+grafikkarte+683868', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3090', + url: + 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3090+founders+edition+683300', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3090', + url: + 'https://www.notebooksbilliger.de/nvidia+geforce+rtx+3090+founders+edition+685124', + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3090', + url: + 'https://www.notebooksbilliger.de/palit+geforce+rtx+3090+gamingpro+oc+24gb+gddr6x+grafikkarte+677599', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.notebooksbilliger.de/zotac+gaming+geforce+rtx+3090+trinity+24gb+gddr6x+grafikkarte+677550', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.notebooksbilliger.de/amd+ryzen+5+5600x+cpu+684022', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.notebooksbilliger.de/amd+ryzen+ryzen+7+5800x+cpu+684018', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.notebooksbilliger.de/amd+ryzen+9+5900x+cpu+684032', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.notebooksbilliger.de/amd+ryzen+9+5950x+cpu+684033', + }, + ], + name: 'notebooksbilliger', }; diff --git a/src/store/model/novatech.ts b/src/store/model/novatech.ts index af97c06562..126d6a4ae9 100644 --- a/src/store/model/novatech.ts +++ b/src/store/model/novatech.ts @@ -2,93 +2,93 @@ import {Store} from './store'; import {getProductLinksBuilder} from './helpers/card'; export const Novatech: Store = { - currency: '£', - labels: { - inStock: { - container: '.newspec-specprice', - text: ['add to basket'] - }, - maxPrice: { - container: 'p[class="newspec-price"]', - euroFormat: false // Note: Novatech uses non-euroFromat as price seperator - }, - outOfStock: { - container: '.newspec-pricesection', - text: [ - 'very short supply, no confirmed date', - 'this product is only available to buy when in stock', - 'ordered upon request', - 'price to be confirmed' - ] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.novatech.co.uk/products/gigabyte-geforce-rtx-2060-oc-v2-6g-graphics-card/gv-n2060oc-6gdv2.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.novatech.co.uk/products/amd-ryzen-5-5600x-six-core-processorcpu-with-stealth-cooler-/100-000000065box.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.novatech.co.uk/products/amd-ryzen-7-5800x-eight-core-processorcpu-without-cooler-/100-000000063wof.html' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.novatech.co.uk/products/amd-ryzen-9-5900x-twelve-core-processorcpu-without-cooler-/100-100000061wof.html' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.novatech.co.uk/products/amd-ryzen-9-5950x-sixteen-core-processorcpu-without-cooler-/100-100000059wof.html' - } - ], - linksBuilder: { - builder: getProductLinksBuilder({ - productsSelector: '.seo-container .search-box-results', - sitePrefix: 'https://www.novatech.co.uk', - titleSelector: '.search-box-title', - urlSelector: 'a[href]' - }), - urls: [ - { - series: '3060ti', - url: - 'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3060ti/?i=200' - }, - { - series: '3080', - url: - 'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3080/?i=200' - }, - { - series: '3090', - url: - 'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3090/?i=200' - }, - { - series: '3060ti', - url: - 'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3060ti/' - } - ] - }, - name: 'novatech', - waitUntil: 'domcontentloaded' + currency: '£', + labels: { + inStock: { + container: '.newspec-specprice', + text: ['add to basket'], + }, + maxPrice: { + container: 'p[class="newspec-price"]', + euroFormat: false, // Note: Novatech uses non-euroFromat as price seperator + }, + outOfStock: { + container: '.newspec-pricesection', + text: [ + 'very short supply, no confirmed date', + 'this product is only available to buy when in stock', + 'ordered upon request', + 'price to be confirmed', + ], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.novatech.co.uk/products/gigabyte-geforce-rtx-2060-oc-v2-6g-graphics-card/gv-n2060oc-6gdv2.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.novatech.co.uk/products/amd-ryzen-5-5600x-six-core-processorcpu-with-stealth-cooler-/100-000000065box.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.novatech.co.uk/products/amd-ryzen-7-5800x-eight-core-processorcpu-without-cooler-/100-000000063wof.html', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.novatech.co.uk/products/amd-ryzen-9-5900x-twelve-core-processorcpu-without-cooler-/100-100000061wof.html', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.novatech.co.uk/products/amd-ryzen-9-5950x-sixteen-core-processorcpu-without-cooler-/100-100000059wof.html', + }, + ], + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '.seo-container .search-box-results', + sitePrefix: 'https://www.novatech.co.uk', + titleSelector: '.search-box-title', + urlSelector: 'a[href]', + }), + urls: [ + { + series: '3060ti', + url: + 'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3060ti/?i=200', + }, + { + series: '3080', + url: + 'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3080/?i=200', + }, + { + series: '3090', + url: + 'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3090/?i=200', + }, + { + series: '3060ti', + url: + 'https://www.novatech.co.uk/products/components/nvidiageforcegraphicscards/nvidiartxseries/nvidiartx3060ti/', + }, + ], + }, + name: 'novatech', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/nvidia-api.ts b/src/store/model/nvidia-api.ts index 0c6c1c805a..a422ee745f 100644 --- a/src/store/model/nvidia-api.ts +++ b/src/store/model/nvidia-api.ts @@ -4,247 +4,247 @@ import {Store} from './store'; // Region/country set by config file, silently ignores null / missing values and defaults to usa export interface NvidiaRegionInfo { - currency: string; - drLocale: string; - fe3080Id: number | null; - fe3090Id: number | null; - fe2060SuperId: number | null; - siteLocale: string; + currency: string; + drLocale: string; + fe3080Id: number | null; + fe3090Id: number | null; + fe2060SuperId: number | null; + siteLocale: string; } export const regionInfos = new Map([ - [ - 'austria', - { - currency: 'EUR', - drLocale: 'de_de', - fe2060SuperId: 5394902900, - fe3080Id: 5440853700, - fe3090Id: 5444941400, - siteLocale: 'de-at' - } - ], - [ - 'belgium', - { - currency: 'EUR', - drLocale: 'fr_fr', - fe2060SuperId: 5394902700, - fe3080Id: 5438795700, - fe3090Id: 5438795600, - siteLocale: 'fr-be' - } - ], - [ - 'canada', - { - currency: 'CAD', - drLocale: 'en_us', - fe2060SuperId: 5379432500, - fe3080Id: 5438481700, - fe3090Id: 5438481600, - siteLocale: 'en-us' - } - ], - [ - 'czechia', - { - currency: 'CZK', - drLocale: 'en_gb', - fe2060SuperId: 5394902800, - fe3080Id: 5438793800, - fe3090Id: 5438793600, - siteLocale: 'cs-cz' - } - ], - [ - 'denmark', - { - currency: 'DKK', - drLocale: 'en_gb', - fe2060SuperId: 5394903100, - fe3080Id: 5438793300, - fe3090Id: null, - siteLocale: 'da-dk' - } - ], - [ - 'finland', - { - currency: 'EUR', - drLocale: 'en_gb', - fe2060SuperId: 5394903100, - fe3080Id: 5438793300, - fe3090Id: null, - siteLocale: 'fi-fi' - } - ], - [ - 'france', - { - currency: 'EUR', - drLocale: 'fr_fr', - fe2060SuperId: 5394903200, - fe3080Id: 5438795200, - fe3090Id: 5438761500, - siteLocale: 'fr-fr' - } - ], - [ - 'germany', - { - currency: 'EUR', - drLocale: 'de_de', - fe2060SuperId: 5394902900, - fe3080Id: 5438792300, - fe3090Id: 5438761400, - siteLocale: 'de-de' - } - ], - [ - 'great_britain', - { - currency: 'GBP', - drLocale: 'en_gb', - fe2060SuperId: 5394903300, - fe3080Id: 5438792800, - fe3090Id: 5438792700, - siteLocale: 'en-gb' - } - ], - [ - 'ireland', - { - currency: 'GBP', - drLocale: 'en_gb', - fe2060SuperId: 5394903300, - fe3080Id: 5438792800, - fe3090Id: 5438792700, - siteLocale: 'en-gb' - } - ], - [ - 'italy', - { - currency: 'EUR', - drLocale: 'it_it', - fe2060SuperId: 5394903400, - fe3080Id: 5438796200, - fe3090Id: 5438796100, - siteLocale: 'it-it' - } - ], - [ - 'luxembourg', - { - currency: 'EUR', - drLocale: 'fr_fr', - fe2060SuperId: 5394902700, - fe3080Id: 5438795700, - fe3090Id: 5438795600, - siteLocale: 'fr-be' - } - ], - [ - 'netherlands', - { - currency: 'EUR', - drLocale: 'nl_nl', - fe2060SuperId: 5394903500, - fe3080Id: 5438796700, - fe3090Id: 5438796600, - siteLocale: 'nl-nl' - } - ], - [ - 'norway', - { - currency: 'NOK', - drLocale: 'no_no', - fe2060SuperId: 5394903600, - fe3080Id: 5438797200, - fe3090Id: 5438797100, - siteLocale: 'nb-no' - } - ], - [ - 'poland', - { - currency: 'PLN', - drLocale: 'pl_pl', - fe2060SuperId: 5394903700, - fe3080Id: 5438797700, - fe3090Id: 5438797600, - siteLocale: 'pl-pl' - } - ], - [ - 'portugal', - { - currency: 'EUR', - drLocale: 'en_gb', - fe2060SuperId: null, - fe3080Id: 5438794300, - fe3090Id: null, - siteLocale: 'en-gb' - } - ], - [ - 'russia', - { - currency: 'RUB', - drLocale: 'ru_ru', - fe2060SuperId: null, - fe3080Id: null, - fe3090Id: null, - siteLocale: 'ru-ru' - } - ], - [ - 'spain', - { - currency: 'EUR', - drLocale: 'es_es', - fe2060SuperId: 5394903000, - fe3080Id: 5438794800, - fe3090Id: 5438794700, - siteLocale: 'es-es' - } - ], - [ - 'sweden', - { - currency: 'SEK', - drLocale: 'sv_se', - fe2060SuperId: 5394903900, - fe3080Id: 5438798100, - fe3090Id: 5438761600, - siteLocale: 'sv-se' - } - ], - // https://github.com/jef/streetmerchant/issues/407 This fe2080SuperID is for the Shield TV which is out of stock in the US - [ - 'usa', - { - currency: 'USD', - drLocale: 'en_us', - fe2060SuperId: 5355772500, - fe3080Id: 5438481700, - fe3090Id: 5438481600, - siteLocale: 'en-us' - } - ] + [ + 'austria', + { + currency: 'EUR', + drLocale: 'de_de', + fe2060SuperId: 5394902900, + fe3080Id: 5440853700, + fe3090Id: 5444941400, + siteLocale: 'de-at', + }, + ], + [ + 'belgium', + { + currency: 'EUR', + drLocale: 'fr_fr', + fe2060SuperId: 5394902700, + fe3080Id: 5438795700, + fe3090Id: 5438795600, + siteLocale: 'fr-be', + }, + ], + [ + 'canada', + { + currency: 'CAD', + drLocale: 'en_us', + fe2060SuperId: 5379432500, + fe3080Id: 5438481700, + fe3090Id: 5438481600, + siteLocale: 'en-us', + }, + ], + [ + 'czechia', + { + currency: 'CZK', + drLocale: 'en_gb', + fe2060SuperId: 5394902800, + fe3080Id: 5438793800, + fe3090Id: 5438793600, + siteLocale: 'cs-cz', + }, + ], + [ + 'denmark', + { + currency: 'DKK', + drLocale: 'en_gb', + fe2060SuperId: 5394903100, + fe3080Id: 5438793300, + fe3090Id: null, + siteLocale: 'da-dk', + }, + ], + [ + 'finland', + { + currency: 'EUR', + drLocale: 'en_gb', + fe2060SuperId: 5394903100, + fe3080Id: 5438793300, + fe3090Id: null, + siteLocale: 'fi-fi', + }, + ], + [ + 'france', + { + currency: 'EUR', + drLocale: 'fr_fr', + fe2060SuperId: 5394903200, + fe3080Id: 5438795200, + fe3090Id: 5438761500, + siteLocale: 'fr-fr', + }, + ], + [ + 'germany', + { + currency: 'EUR', + drLocale: 'de_de', + fe2060SuperId: 5394902900, + fe3080Id: 5438792300, + fe3090Id: 5438761400, + siteLocale: 'de-de', + }, + ], + [ + 'great_britain', + { + currency: 'GBP', + drLocale: 'en_gb', + fe2060SuperId: 5394903300, + fe3080Id: 5438792800, + fe3090Id: 5438792700, + siteLocale: 'en-gb', + }, + ], + [ + 'ireland', + { + currency: 'GBP', + drLocale: 'en_gb', + fe2060SuperId: 5394903300, + fe3080Id: 5438792800, + fe3090Id: 5438792700, + siteLocale: 'en-gb', + }, + ], + [ + 'italy', + { + currency: 'EUR', + drLocale: 'it_it', + fe2060SuperId: 5394903400, + fe3080Id: 5438796200, + fe3090Id: 5438796100, + siteLocale: 'it-it', + }, + ], + [ + 'luxembourg', + { + currency: 'EUR', + drLocale: 'fr_fr', + fe2060SuperId: 5394902700, + fe3080Id: 5438795700, + fe3090Id: 5438795600, + siteLocale: 'fr-be', + }, + ], + [ + 'netherlands', + { + currency: 'EUR', + drLocale: 'nl_nl', + fe2060SuperId: 5394903500, + fe3080Id: 5438796700, + fe3090Id: 5438796600, + siteLocale: 'nl-nl', + }, + ], + [ + 'norway', + { + currency: 'NOK', + drLocale: 'no_no', + fe2060SuperId: 5394903600, + fe3080Id: 5438797200, + fe3090Id: 5438797100, + siteLocale: 'nb-no', + }, + ], + [ + 'poland', + { + currency: 'PLN', + drLocale: 'pl_pl', + fe2060SuperId: 5394903700, + fe3080Id: 5438797700, + fe3090Id: 5438797600, + siteLocale: 'pl-pl', + }, + ], + [ + 'portugal', + { + currency: 'EUR', + drLocale: 'en_gb', + fe2060SuperId: null, + fe3080Id: 5438794300, + fe3090Id: null, + siteLocale: 'en-gb', + }, + ], + [ + 'russia', + { + currency: 'RUB', + drLocale: 'ru_ru', + fe2060SuperId: null, + fe3080Id: null, + fe3090Id: null, + siteLocale: 'ru-ru', + }, + ], + [ + 'spain', + { + currency: 'EUR', + drLocale: 'es_es', + fe2060SuperId: 5394903000, + fe3080Id: 5438794800, + fe3090Id: 5438794700, + siteLocale: 'es-es', + }, + ], + [ + 'sweden', + { + currency: 'SEK', + drLocale: 'sv_se', + fe2060SuperId: 5394903900, + fe3080Id: 5438798100, + fe3090Id: 5438761600, + siteLocale: 'sv-se', + }, + ], + // https://github.com/jef/streetmerchant/issues/407 This fe2080SuperID is for the Shield TV which is out of stock in the US + [ + 'usa', + { + currency: 'USD', + drLocale: 'en_us', + fe2060SuperId: 5355772500, + fe3080Id: 5438481700, + fe3090Id: 5438481600, + siteLocale: 'en-us', + }, + ], ]); export const NvidiaApi: Store = { - currency: '', - labels: { - inStock: { - container: 'body', - text: ['product_inventory_in_stock'] - } - }, - links: generateLinks(), - name: 'nvidia-api', - setupAction: generateSetupAction() + currency: '', + labels: { + inStock: { + container: 'body', + text: ['product_inventory_in_stock'], + }, + }, + links: generateLinks(), + name: 'nvidia-api', + setupAction: generateSetupAction(), }; diff --git a/src/store/model/nvidia.ts b/src/store/model/nvidia.ts index 0e791ee0f5..e75237360e 100644 --- a/src/store/model/nvidia.ts +++ b/src/store/model/nvidia.ts @@ -1,79 +1,79 @@ import {Store} from './store'; export const Nvidia: Store = { - currency: '$', - labels: { - captcha: { - container: 'body', - text: ['are you a human?'] - }, - inStock: [ - { - container: '.main-container', - text: ['add to cart'] - }, - { - container: '.inner', - text: ['add to cart'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.nvidia.com/en-us/shop/geforce/gpu/' - }, - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.nvidia.com/en-us/geforce/graphics-cards/rtx-2060-super/' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3080', - url: - 'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203080' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3080', - url: - 'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3080' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3090', - url: - 'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203090' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3090', - url: - 'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3090' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3070', - url: - 'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203070' - }, - { - brand: 'nvidia', - model: 'founders edition', - series: '3070', - url: - 'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3070' - } - ], - name: 'nvidia' + currency: '$', + labels: { + captcha: { + container: 'body', + text: ['are you a human?'], + }, + inStock: [ + { + container: '.main-container', + text: ['add to cart'], + }, + { + container: '.inner', + text: ['add to cart'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.nvidia.com/en-us/shop/geforce/gpu/', + }, + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.nvidia.com/en-us/geforce/graphics-cards/rtx-2060-super/', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3080', + url: + 'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203080', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3080', + url: + 'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3080', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3090', + url: + 'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203090', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3090', + url: + 'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3090', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3070', + url: + 'https://www.nvidia.com/en-us/shop/geforce/gpu/?page=1&limit=9&locale=en-us&category=GPU&gpu=RTX%203070', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3070', + url: + 'https://www.nvidia.com/en-us/geforce/graphics-cards/30-series/rtx-3070', + }, + ], + name: 'nvidia', }; diff --git a/src/store/model/officedepot.ts b/src/store/model/officedepot.ts index a972d78c33..675a09301c 100644 --- a/src/store/model/officedepot.ts +++ b/src/store/model/officedepot.ts @@ -1,50 +1,50 @@ import {Store} from './store'; export const OfficeDepot: Store = { - currency: '$', - labels: { - captcha: { - container: 'body', - text: ['please verify you are a human'] - }, - inStock: { - container: '#productPurchase', - text: ['add to cart'] - }, - maxPrice: { - container: 'span[class^="price_column right"]', - euroFormat: false - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.officedepot.com/a/products/4652239/EVGA-GeForce-RTX-2060-Graphic-Card/' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.officedepot.com/a/products/7189374/PNY-GeForce-RTX-3080-10GB-GDDR6X/' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.officedepot.com/a/products/7791294/PNY-GeForce-RTX-3080-10GB-GDDR6X/' - }, - { - brand: 'pny', - model: 'dual fan', - series: '3070', - url: - 'https://www.officedepot.com/a/products/1992758/PNY-GeForce-RTX-3070-8GB-GDDR6/' - } - ], - name: 'officedepot' + currency: '$', + labels: { + captcha: { + container: 'body', + text: ['please verify you are a human'], + }, + inStock: { + container: '#productPurchase', + text: ['add to cart'], + }, + maxPrice: { + container: 'span[class^="price_column right"]', + euroFormat: false, + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.officedepot.com/a/products/4652239/EVGA-GeForce-RTX-2060-Graphic-Card/', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.officedepot.com/a/products/7189374/PNY-GeForce-RTX-3080-10GB-GDDR6X/', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.officedepot.com/a/products/7791294/PNY-GeForce-RTX-3080-10GB-GDDR6X/', + }, + { + brand: 'pny', + model: 'dual fan', + series: '3070', + url: + 'https://www.officedepot.com/a/products/1992758/PNY-GeForce-RTX-3070-8GB-GDDR6/', + }, + ], + name: 'officedepot', }; diff --git a/src/store/model/ollo.ts b/src/store/model/ollo.ts index 4368008914..65e3fd72fb 100644 --- a/src/store/model/ollo.ts +++ b/src/store/model/ollo.ts @@ -1,166 +1,163 @@ import {Store} from './store'; export const Ollo: Store = { - currency: '€', - labels: { - inStock: [ - { - container: - 'div.product-availability:nth-child(2) > div:nth-child(1) > span:nth-child(1)', - text: ['Disponibile'] - } - ], - maxPrice: { - container: '.main-product-price', - euroFormat: true - }, - outOfStock: { - container: - 'div.product-availability:nth-child(2) > div:nth-child(1) > span:nth-child(1)', - text: ['Attualmente non disponibile', 'In Pre-ordine'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.ollo.it/apple-airpods-2nd-generation-bluetooth-stereofonico-bianco/p_759688' - }, - { - brand: 'gainward', - model: 'phoenix', - series: '3080', - url: - 'https://www.ollo.it/palit-ned3080019ia-132aa-nvidia-geforce-rtx-3080-10-gb-gddr6x/p_805886' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3080', - url: - 'https://www.ollo.it/gainward-geforce-rtx-3080-phoenix-nvidia-10-gb-gddr6x/p_813151' - }, - { - brand: 'palit', - model: 'gamerock oc', - series: '3090', - url: - 'https://www.ollo.it/palit-rtx3090-game-rock-oc-nvidia-geforce-rtx-3090-24-gb-gddr6x/p_813155' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.ollo.it/zotac-zt-a30800j-10p-nvidia-geforce-rtx-3080-10-gb-gddr6x/p_811027' - }, - { - brand: 'pny', - model: 'xlr8 gaming', - series: '3080', - url: - 'https://www.ollo.it/pny-vcg308010tfxmpb-nvidia-geforce-rtx-3080-10-gb-gddr6x/p_805892' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.ollo.it/zotac-geforce-rtx-3080-trinity-10gb-gddr6x/p_805602' - }, - { - brand: 'pny', - model: 'xlr8 uprising', - series: '3090', - url: - 'https://www.ollo.it/pny-geforce-rtx-3090-24gb-xlr8-gaming-uprising-epic-x-rgb-triple-fan-edition/p_811356' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.ollo.it/zotac-geforce-rtx-3090-trinity-24gb-gddr6x/p_809667' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3060ti', - url: - 'https://www.ollo.it/msi-geforce-rtx-3060-ti-ventus-2x-oc/p_810399' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.ollo.it/msi-nvidia-geforce-rtx-3090-ventus-3x-24g-oc/p_803924' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.ollo.it/asus-nvidia-geforce-rtx-3090-24g-tuf-rtx3090-o24g-gaming/p_805889' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3060ti', - url: - 'https://www.ollo.it/msi-geforce-rtx-3060-ti-gaming-x-trio/p_810397' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.ollo.it/asus-tuf-gaming-nvidia-geforce-rtx-3080-oc-10gb-gddr6x/p_805890' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.ollo.it/msi-nvidia-geforce-rtx-3090-gaming-x-trio-24g/p_803923' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3060ti', - url: - 'https://www.ollo.it/msi-geforce-rtx-3060-ti-ventus-3x-oc/p_810398' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.ollo.it/msi-nvidia-geforce-rtx-3080-ventus-3x-10g-oc/p_803926' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.ollo.it/asus-geforce-rtx-3080-10g-tuf-rtx3080-10g-gaming/p_805601' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.ollo.it/msi-geforce-rtx-3080-gaming-x-trio-10g/p_803925' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.ollo.it/asus-rog-strix-rtx-3080-o10g-gaming-geforce-rtx-3080-oc-10gb-gddr6x/p_805698' - } - ], - name: 'ollo' + currency: '€', + labels: { + inStock: [ + { + container: + 'div.product-availability:nth-child(2) > div:nth-child(1) > span:nth-child(1)', + text: ['Disponibile'], + }, + ], + maxPrice: { + container: '.main-product-price', + euroFormat: true, + }, + outOfStock: { + container: + 'div.product-availability:nth-child(2) > div:nth-child(1) > span:nth-child(1)', + text: ['Attualmente non disponibile', 'In Pre-ordine'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.ollo.it/apple-airpods-2nd-generation-bluetooth-stereofonico-bianco/p_759688', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3080', + url: + 'https://www.ollo.it/palit-ned3080019ia-132aa-nvidia-geforce-rtx-3080-10-gb-gddr6x/p_805886', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3080', + url: + 'https://www.ollo.it/gainward-geforce-rtx-3080-phoenix-nvidia-10-gb-gddr6x/p_813151', + }, + { + brand: 'palit', + model: 'gamerock oc', + series: '3090', + url: + 'https://www.ollo.it/palit-rtx3090-game-rock-oc-nvidia-geforce-rtx-3090-24-gb-gddr6x/p_813155', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.ollo.it/zotac-zt-a30800j-10p-nvidia-geforce-rtx-3080-10-gb-gddr6x/p_811027', + }, + { + brand: 'pny', + model: 'xlr8 gaming', + series: '3080', + url: + 'https://www.ollo.it/pny-vcg308010tfxmpb-nvidia-geforce-rtx-3080-10-gb-gddr6x/p_805892', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.ollo.it/zotac-geforce-rtx-3080-trinity-10gb-gddr6x/p_805602', + }, + { + brand: 'pny', + model: 'xlr8 uprising', + series: '3090', + url: + 'https://www.ollo.it/pny-geforce-rtx-3090-24gb-xlr8-gaming-uprising-epic-x-rgb-triple-fan-edition/p_811356', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.ollo.it/zotac-geforce-rtx-3090-trinity-24gb-gddr6x/p_809667', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: 'https://www.ollo.it/msi-geforce-rtx-3060-ti-ventus-2x-oc/p_810399', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.ollo.it/msi-nvidia-geforce-rtx-3090-ventus-3x-24g-oc/p_803924', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.ollo.it/asus-nvidia-geforce-rtx-3090-24g-tuf-rtx3090-o24g-gaming/p_805889', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060ti', + url: 'https://www.ollo.it/msi-geforce-rtx-3060-ti-gaming-x-trio/p_810397', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.ollo.it/asus-tuf-gaming-nvidia-geforce-rtx-3080-oc-10gb-gddr6x/p_805890', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.ollo.it/msi-nvidia-geforce-rtx-3090-gaming-x-trio-24g/p_803923', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3060ti', + url: 'https://www.ollo.it/msi-geforce-rtx-3060-ti-ventus-3x-oc/p_810398', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.ollo.it/msi-nvidia-geforce-rtx-3080-ventus-3x-10g-oc/p_803926', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.ollo.it/asus-geforce-rtx-3080-10g-tuf-rtx3080-10g-gaming/p_805601', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.ollo.it/msi-geforce-rtx-3080-gaming-x-trio-10g/p_803925', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.ollo.it/asus-rog-strix-rtx-3080-o10g-gaming-geforce-rtx-3080-oc-10gb-gddr6x/p_805698', + }, + ], + name: 'ollo', }; diff --git a/src/store/model/otto.ts b/src/store/model/otto.ts index 4622c392ce..1932754533 100644 --- a/src/store/model/otto.ts +++ b/src/store/model/otto.ts @@ -1,90 +1,88 @@ import {Store} from './store'; export const Otto: Store = { - currency: '€', - labels: { - inStock: [ - { - container: - 'button.prd_ordering__button.p_btn150--1st.js_product_addToBasket', - text: ['In den Warenkorb'] - } - ], - maxPrice: { - container: '#normalPriceAmount', - euroFormat: true - }, - outOfStock: { - container: 'div.p_message.p_message--hint > strong', - text: [ - 'Deinen gewünschten Artikel können wir leider nicht mehr liefern' - ] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.otto.de/p/playstation-5-medienfernbedienung-1170617135#variationId=1170617136' - }, - { - brand: 'sony', - labels: { - inStock: { - container: - '.js_shortInfo__variationName.prd_shortInfo__variationName', - text: ['konsole'] - } - }, - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.otto.de/p/playstation-5-1136008456/#variationId=1136008459' - }, - { - brand: 'sony', - labels: { - inStock: { - container: - '.js_shortInfo__variationName.prd_shortInfo__variationName', - text: ['konsole'] - } - }, - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.otto.de/p/playstation-5-1154028000#variationId=1154028001' - }, - { - brand: 'sony', - labels: { - inStock: { - container: - '.js_shortInfo__variationName.prd_shortInfo__variationName', - text: ['konsole'] - } - }, - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.otto.de/p/playstation-5-digital-edition-1161042793#variationId=1161042794' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: - 'https://www.otto.de/p/xbox-series-s-1229056876/#variationId=1229056877' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.otto.de/p/xbox-series-x-1229057353#variationId=1229057354' - } - ], - name: 'otto' + currency: '€', + labels: { + inStock: [ + { + container: + 'button.prd_ordering__button.p_btn150--1st.js_product_addToBasket', + text: ['In den Warenkorb'], + }, + ], + maxPrice: { + container: '#normalPriceAmount', + euroFormat: true, + }, + outOfStock: { + container: 'div.p_message.p_message--hint > strong', + text: ['Deinen gewünschten Artikel können wir leider nicht mehr liefern'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.otto.de/p/playstation-5-medienfernbedienung-1170617135#variationId=1170617136', + }, + { + brand: 'sony', + labels: { + inStock: { + container: + '.js_shortInfo__variationName.prd_shortInfo__variationName', + text: ['konsole'], + }, + }, + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.otto.de/p/playstation-5-1136008456/#variationId=1136008459', + }, + { + brand: 'sony', + labels: { + inStock: { + container: + '.js_shortInfo__variationName.prd_shortInfo__variationName', + text: ['konsole'], + }, + }, + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.otto.de/p/playstation-5-1154028000#variationId=1154028001', + }, + { + brand: 'sony', + labels: { + inStock: { + container: + '.js_shortInfo__variationName.prd_shortInfo__variationName', + text: ['konsole'], + }, + }, + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.otto.de/p/playstation-5-digital-edition-1161042793#variationId=1161042794', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: + 'https://www.otto.de/p/xbox-series-s-1229056876/#variationId=1229056877', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.otto.de/p/xbox-series-x-1229057353#variationId=1229057354', + }, + ], + name: 'otto', }; diff --git a/src/store/model/overclockers.ts b/src/store/model/overclockers.ts index a186c8c0a6..a462dcf38f 100644 --- a/src/store/model/overclockers.ts +++ b/src/store/model/overclockers.ts @@ -2,106 +2,106 @@ import {Store} from './store'; import {getProductLinksBuilder} from './helpers/card'; export const Overclockers: Store = { - currency: '£', - labels: { - inStock: { - container: '#detailbox', - text: ['add to basket', 'in stock'] - }, - maxPrice: { - container: 'div[class="article_details_price"]', - euroFormat: false // Note: Overclockers uses non-euroFromat as price seperator - }, - outOfStock: { - container: '#detailbox', - text: ['out of stock', 'pre order', 'bought to order'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.overclockers.co.uk/gigabyte-geforce-rtx-2060-oc-rev2-6144mb-gddr6-pci-express-graphics-card-gx-1bj-gi.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.overclockers.co.uk/amd-ryzen-5-5600x-six-core-4.6ghz-socket-am4-processor-retail-cp-3cc-am.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.overclockers.co.uk/amd-ryzen-7-5800x-eight-core-4.7ghz-socket-am4-processor-retail-cp-3cb-am.html' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.overclockers.co.uk/amd-ryzen-9-5900x-twelve-core-4.8ghz-socket-am4-processor-retail-cp-3ca-am.html' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.overclockers.co.uk/amd-ryzen-9-5950x-sixteen-core-4.9ghz-socket-am4-processor-retail-cp-3c9-am.html' - } - ], - linksBuilder: { - builder: getProductLinksBuilder({ - productsSelector: '.ck_listing .artbox', - sitePrefix: 'https://www.overclockers.co.uk', - titleAttribute: 'data-description', - titleSelector: 'a[href].producttitles' - }), - urls: [ - { - series: 'rx6800', - url: - 'https://www.overclockers.co.uk/pc-components/graphics-cards/amd/radeon-rx-6800-series' - }, - { - series: 'rx6800xt', - url: - 'https://www.overclockers.co.uk/pc-components/graphics-cards/amd/radeon-rx-6800-xt-series' - }, - { - series: 'rx6900xt', - url: - 'https://www.overclockers.co.uk/pc-components/graphics-cards/amd/radeon-rx-6900-xt-series' - }, - { - series: '3060ti', - url: - 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3060-ti' - }, - { - series: '3070', - url: - 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3070' - }, - { - series: '3080', - // Need to add support to detect pagination so this can be dynamically detected - url: [ - 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3080', - 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3080?p=2' - ] - }, - { - series: '3090', - url: - 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3090' - } - ] - }, - name: 'overclockers', - waitUntil: 'domcontentloaded' + currency: '£', + labels: { + inStock: { + container: '#detailbox', + text: ['add to basket', 'in stock'], + }, + maxPrice: { + container: 'div[class="article_details_price"]', + euroFormat: false, // Note: Overclockers uses non-euroFromat as price seperator + }, + outOfStock: { + container: '#detailbox', + text: ['out of stock', 'pre order', 'bought to order'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.overclockers.co.uk/gigabyte-geforce-rtx-2060-oc-rev2-6144mb-gddr6-pci-express-graphics-card-gx-1bj-gi.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.overclockers.co.uk/amd-ryzen-5-5600x-six-core-4.6ghz-socket-am4-processor-retail-cp-3cc-am.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.overclockers.co.uk/amd-ryzen-7-5800x-eight-core-4.7ghz-socket-am4-processor-retail-cp-3cb-am.html', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.overclockers.co.uk/amd-ryzen-9-5900x-twelve-core-4.8ghz-socket-am4-processor-retail-cp-3ca-am.html', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.overclockers.co.uk/amd-ryzen-9-5950x-sixteen-core-4.9ghz-socket-am4-processor-retail-cp-3c9-am.html', + }, + ], + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '.ck_listing .artbox', + sitePrefix: 'https://www.overclockers.co.uk', + titleAttribute: 'data-description', + titleSelector: 'a[href].producttitles', + }), + urls: [ + { + series: 'rx6800', + url: + 'https://www.overclockers.co.uk/pc-components/graphics-cards/amd/radeon-rx-6800-series', + }, + { + series: 'rx6800xt', + url: + 'https://www.overclockers.co.uk/pc-components/graphics-cards/amd/radeon-rx-6800-xt-series', + }, + { + series: 'rx6900xt', + url: + 'https://www.overclockers.co.uk/pc-components/graphics-cards/amd/radeon-rx-6900-xt-series', + }, + { + series: '3060ti', + url: + 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3060-ti', + }, + { + series: '3070', + url: + 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3070', + }, + { + series: '3080', + // Need to add support to detect pagination so this can be dynamically detected + url: [ + 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3080', + 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3080?p=2', + ], + }, + { + series: '3090', + url: + 'https://www.overclockers.co.uk/pc-components/graphics-cards/nvidia/geforce-rtx-3090', + }, + ], + }, + name: 'overclockers', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/pbtech.ts b/src/store/model/pbtech.ts index 75eb03d442..c934387104 100644 --- a/src/store/model/pbtech.ts +++ b/src/store/model/pbtech.ts @@ -1,80 +1,80 @@ import {Store} from './store'; export const PBTech: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: [ - { - container: - '#product_right_column > div.product_bgWrap > div.p_ov_stock_summary_dd > div > div', - text: ['In stock'] - }, - { - container: '.p_stock_title_dd', - text: ['In stock'] - } - ], - maxPrice: { - container: 'div.p_price_dd > div.p_price > span.ginc', - euroFormat: false - }, - outOfStock: { - container: - '#product_right_column > div.product_bgWrap > div.p_ov_stock_summary_dd > div > div', - text: ['Available on order', 'Unavailable', 'Out of stock'] - } - }, - links: [ - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.pbtech.com/au/product/VGAAS33087/ASUS-ROG-STRIX-GeForce-RTX-3080-10GB-GDDR6X-PCIE-4' - }, - { - brand: 'asus', - model: 'strix oc white', - series: '3080', - url: - 'https://www.pbtech.com/au/product/VGAAS33086/ASUS-ROG-STRIX-GeForce-RTX-3080-O10G-Gaming-WHITE' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6900xt', - url: - 'https://www.pbtech.com/au/product/VGASAP16915/Sapphire-Nitro-AMD-Radeon-RX-6900-XT-OC-Gaming-Gra' - }, - { - brand: 'asrock', - model: 'taichi', - series: 'rx6800xt', - url: - 'https://www.pbtech.com/au/product/VGAASR06810/ASRock-Radeon-RX-6800-XT-Taichi-X-OC-Graphics-Card' - }, - { - brand: 'asrock', - model: 'challenger pro', - series: 'rx6800', - url: - 'https://www.pbtech.com/au/product/VGAASR06800/ASRock-Radeon-RX-6800-Challenger-Pro-Graphics-Card' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: 'rx6800', - url: - 'https://www.pbtech.com/au/product/VGAMSI66801/MSI-Radeon-RX-6800-Gaming-X-TRIO-16GB-GDDR6-PCIE-4' - }, - { - brand: 'sapphire', - model: 'pulse', - series: 'rx6800', - url: - 'https://www.pbtech.com/au/product/VGASAP16802/Sapphire-PULSE-AMD-Radeon-RX-6800-OC-Graphics-Card' - } - ], - name: 'pbtech' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: [ + { + container: + '#product_right_column > div.product_bgWrap > div.p_ov_stock_summary_dd > div > div', + text: ['In stock'], + }, + { + container: '.p_stock_title_dd', + text: ['In stock'], + }, + ], + maxPrice: { + container: 'div.p_price_dd > div.p_price > span.ginc', + euroFormat: false, + }, + outOfStock: { + container: + '#product_right_column > div.product_bgWrap > div.p_ov_stock_summary_dd > div > div', + text: ['Available on order', 'Unavailable', 'Out of stock'], + }, + }, + links: [ + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.pbtech.com/au/product/VGAAS33087/ASUS-ROG-STRIX-GeForce-RTX-3080-10GB-GDDR6X-PCIE-4', + }, + { + brand: 'asus', + model: 'strix oc white', + series: '3080', + url: + 'https://www.pbtech.com/au/product/VGAAS33086/ASUS-ROG-STRIX-GeForce-RTX-3080-O10G-Gaming-WHITE', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6900xt', + url: + 'https://www.pbtech.com/au/product/VGASAP16915/Sapphire-Nitro-AMD-Radeon-RX-6900-XT-OC-Gaming-Gra', + }, + { + brand: 'asrock', + model: 'taichi', + series: 'rx6800xt', + url: + 'https://www.pbtech.com/au/product/VGAASR06810/ASRock-Radeon-RX-6800-XT-Taichi-X-OC-Graphics-Card', + }, + { + brand: 'asrock', + model: 'challenger pro', + series: 'rx6800', + url: + 'https://www.pbtech.com/au/product/VGAASR06800/ASRock-Radeon-RX-6800-Challenger-Pro-Graphics-Card', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: 'rx6800', + url: + 'https://www.pbtech.com/au/product/VGAMSI66801/MSI-Radeon-RX-6800-Gaming-X-TRIO-16GB-GDDR6-PCIE-4', + }, + { + brand: 'sapphire', + model: 'pulse', + series: 'rx6800', + url: + 'https://www.pbtech.com/au/product/VGASAP16802/Sapphire-PULSE-AMD-Radeon-RX-6800-OC-Graphics-Card', + }, + ], + name: 'pbtech', }; diff --git a/src/store/model/pcbyte.ts b/src/store/model/pcbyte.ts index 5b984e6698..a5e57e7b10 100644 --- a/src/store/model/pcbyte.ts +++ b/src/store/model/pcbyte.ts @@ -1,248 +1,247 @@ import {Store} from './store'; export const PCByte: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: '.in-stock-label', - text: ['in stock'] - }, - maxPrice: { - container: - 'div.price-line.d-flex.mb-3 > div:nth-child(1) > span > span', - euroFormat: false - }, - outOfStock: { - container: 'a.btn:nth-child(3)', - text: ['Pre Order', 'Pre-Order'] - } - }, - links: [ - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/asus-nvidia-geforce-rtx-3080-tuf-gaming-10gb-video-card-tuf-rtx3080-10g-gaming-56837?search=rtx+3080' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/asus-nvidia-geforce-rtx-3080-tuf-gaming-oc-10gb-video-card-tuf-rtx3080-o10g-gaming-56838' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/asus-nvidia-geforce-rtx-3080-rog-strix-oc-10gb-video-card-rog-strix-rtx3080-o10g-gaming-57717' - }, - { - brand: 'asus', - model: 'strix oc white', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/asus-nvidia-geforce-rtx-3080-rog-strix-oc-10gb-video-card-white-rog-strix-rtx3080-o10g-white-151575' - }, - { - brand: 'galax', - model: 'sg oc', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/galax-nvidia-geforce-rtx-3080-sg-1-click-oc-video-card-38nwm3md99nn-57223' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-eagle-10g-video-card-gv-n3080eagle-10gd-63192' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-eagle-oc-10gb-video-card-gv-n3080eagle-oc-10gd-24750' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-vision-oc-10g-video-card-gv-n3080vision-oc-10gd-57540' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-gaming-oc-10gb-video-card-gv-n3080gaming-oc-10gd-53154' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-aorus-master-10g-video-card-gv-n3080aorus-m-10gd-57539' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-aorus-xtreme-10gb-video-card-gv-n3080aorus-x-10gd-60222' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/msi-nvidia-geforce-rtx-3080-ventus-3x-10g-oc-video-card-53151' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/msi-nvidia-geforce-rtx-3080-gaming-x-trio-10g-video-card-53150' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.pcbyte.com.au/store/product/msi-nvidia-geforce-rtx-3080-suprim-x-10g-video-card-64075' - }, - { - brand: 'asrock', - model: 'taichi', - series: 'rx6800xt', - url: - 'https://www.pcbyte.com.au/store/product/asrock-amd-radeon-rx-6800-xt-taichi-x-16g-oc-video-card-rx6800xt-tcx-16go-78693' - }, - { - brand: 'asrock', - model: 'phantom gaming', - series: 'rx6800xt', - url: - 'https://www.pcbyte.com.au/store/product/asrock-amd-radeon-rx-6800-xt-phantom-gaming-d-16g-oc-video-card-rx6800xt-pgd-16go-78692' - }, - { - brand: 'asus', - model: 'tuf oc', - series: 'rx6800', - url: - 'https://www.pcbyte.com.au/store/product/asus-amd-radeon-rx-6800-tuf-gaming-oc-16gb-video-card-tuf-rx6800-o16g-gaming-171072' - }, - { - brand: 'asus', - model: 'strix oc', - series: 'rx6800', - url: - 'https://www.pcbyte.com.au/store/product/asus-amd-radeon-rx-6800-rog-strix-oc-16gb-video-card-rog-strix-rx6800-o16g-gaming-171073' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800', - url: - 'https://www.pcbyte.com.au/store/product/gigabyte-amd-radeon-rx-6800-gaming-oc-16gb-video-card-gv-r68gaming-oc-16gd-78455' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800xt', - url: - 'https://www.pcbyte.com.au/store/product/gigabyte-amd-radeon-rx-6800-xt-gaming-oc-16gb-video-card-gv-r68xtgaming-oc-16gd-78453' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: 'rx6800xt', - url: - 'https://www.pcbyte.com.au/store/product/gigabyte-amd-radeon-rx-6800-xt-aorus-master-16g-video-card-gv-r68xtaorus-m-16gd-151405' - }, - { - brand: 'gigabyte', - model: 'aorus master type-c', - series: 'rx6800xt', - url: - 'https://www.pcbyte.com.au/store/product/gigabyte-amd-radeon-rx-6800-xt-aorus-master-type-c-16g-video-card-gv-r68xtaorus-m-16gc-151404' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: 'rx6800', - url: - 'https://www.pcbyte.com.au/store/product/msi-amd-radeon-rx-6800-gaming-x-trio-16g-video-card-151402' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: 'rx6800xt', - url: - 'https://www.pcbyte.com.au/store/product/msi-amd-radeon-rx-6800-xt-gaming-x-trio-16gb-video-card-152871' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6800', - url: - 'https://www.pcbyte.com.au/store/product/sapphire-amd-radeon-rx-6800-nitro-16gb-video-card-11305-01-20g-152047' - }, - { - brand: 'sapphire', - model: 'nitro+ se', - series: 'rx6800xt', - url: - 'https://www.pcbyte.com.au/store/product/sapphire-amd-radeon-rx-6800-xt-nitro-se-16gb-video-card-11304-01-20g-185859' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6900xt', - url: - 'https://www.pcbyte.com.au/store/product/gigabyte-amd-radeon-rx-6900-xt-gaming-oc-16g-video-card-gv-r69xtgaming-oc-16gd-205734' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6900xt', - url: - 'https://www.pcbyte.com.au/store/product/sapphire-amd-radeon-rx-6900-xt-nitro-16gb-video-card-11308-01-20g-185858' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.pcbyte.com.au/store/product/amd-ryzen-9-5950x-16-core-32-threads-3-4-4-9ghz-am4-cpu-processor-100-100000059wof-61095?search=5950x' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.pcbyte.com.au/store/product/amd-ryzen-9-5900x-12-core-24-threads-3-7-4-8ghz-am4-cpu-processor-100-100000061wof-61096?search=5900x' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.pcbyte.com.au/store/product/amd-ryzen-7-5800x-8-core-16-threads-3-8-4-7ghz-am4-cpu-processor-100-100000063wof-61098?search=5800x' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.pcbyte.com.au/store/product/amd-ryzen-5-5600x-6-core-12-threads-3-7-4-6ghz-am4-cpu-processor-100-100000065box-61099' - } - ], - name: 'pcbyte' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: '.in-stock-label', + text: ['in stock'], + }, + maxPrice: { + container: 'div.price-line.d-flex.mb-3 > div:nth-child(1) > span > span', + euroFormat: false, + }, + outOfStock: { + container: 'a.btn:nth-child(3)', + text: ['Pre Order', 'Pre-Order'], + }, + }, + links: [ + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/asus-nvidia-geforce-rtx-3080-tuf-gaming-10gb-video-card-tuf-rtx3080-10g-gaming-56837?search=rtx+3080', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/asus-nvidia-geforce-rtx-3080-tuf-gaming-oc-10gb-video-card-tuf-rtx3080-o10g-gaming-56838', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/asus-nvidia-geforce-rtx-3080-rog-strix-oc-10gb-video-card-rog-strix-rtx3080-o10g-gaming-57717', + }, + { + brand: 'asus', + model: 'strix oc white', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/asus-nvidia-geforce-rtx-3080-rog-strix-oc-10gb-video-card-white-rog-strix-rtx3080-o10g-white-151575', + }, + { + brand: 'galax', + model: 'sg oc', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/galax-nvidia-geforce-rtx-3080-sg-1-click-oc-video-card-38nwm3md99nn-57223', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-eagle-10g-video-card-gv-n3080eagle-10gd-63192', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-eagle-oc-10gb-video-card-gv-n3080eagle-oc-10gd-24750', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-vision-oc-10g-video-card-gv-n3080vision-oc-10gd-57540', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-gaming-oc-10gb-video-card-gv-n3080gaming-oc-10gd-53154', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-aorus-master-10g-video-card-gv-n3080aorus-m-10gd-57539', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/gigabyte-nvidia-geforce-rtx-3080-aorus-xtreme-10gb-video-card-gv-n3080aorus-x-10gd-60222', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/msi-nvidia-geforce-rtx-3080-ventus-3x-10g-oc-video-card-53151', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/msi-nvidia-geforce-rtx-3080-gaming-x-trio-10g-video-card-53150', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.pcbyte.com.au/store/product/msi-nvidia-geforce-rtx-3080-suprim-x-10g-video-card-64075', + }, + { + brand: 'asrock', + model: 'taichi', + series: 'rx6800xt', + url: + 'https://www.pcbyte.com.au/store/product/asrock-amd-radeon-rx-6800-xt-taichi-x-16g-oc-video-card-rx6800xt-tcx-16go-78693', + }, + { + brand: 'asrock', + model: 'phantom gaming', + series: 'rx6800xt', + url: + 'https://www.pcbyte.com.au/store/product/asrock-amd-radeon-rx-6800-xt-phantom-gaming-d-16g-oc-video-card-rx6800xt-pgd-16go-78692', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6800', + url: + 'https://www.pcbyte.com.au/store/product/asus-amd-radeon-rx-6800-tuf-gaming-oc-16gb-video-card-tuf-rx6800-o16g-gaming-171072', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6800', + url: + 'https://www.pcbyte.com.au/store/product/asus-amd-radeon-rx-6800-rog-strix-oc-16gb-video-card-rog-strix-rx6800-o16g-gaming-171073', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800', + url: + 'https://www.pcbyte.com.au/store/product/gigabyte-amd-radeon-rx-6800-gaming-oc-16gb-video-card-gv-r68gaming-oc-16gd-78455', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800xt', + url: + 'https://www.pcbyte.com.au/store/product/gigabyte-amd-radeon-rx-6800-xt-gaming-oc-16gb-video-card-gv-r68xtgaming-oc-16gd-78453', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: 'rx6800xt', + url: + 'https://www.pcbyte.com.au/store/product/gigabyte-amd-radeon-rx-6800-xt-aorus-master-16g-video-card-gv-r68xtaorus-m-16gd-151405', + }, + { + brand: 'gigabyte', + model: 'aorus master type-c', + series: 'rx6800xt', + url: + 'https://www.pcbyte.com.au/store/product/gigabyte-amd-radeon-rx-6800-xt-aorus-master-type-c-16g-video-card-gv-r68xtaorus-m-16gc-151404', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: 'rx6800', + url: + 'https://www.pcbyte.com.au/store/product/msi-amd-radeon-rx-6800-gaming-x-trio-16g-video-card-151402', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: 'rx6800xt', + url: + 'https://www.pcbyte.com.au/store/product/msi-amd-radeon-rx-6800-xt-gaming-x-trio-16gb-video-card-152871', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6800', + url: + 'https://www.pcbyte.com.au/store/product/sapphire-amd-radeon-rx-6800-nitro-16gb-video-card-11305-01-20g-152047', + }, + { + brand: 'sapphire', + model: 'nitro+ se', + series: 'rx6800xt', + url: + 'https://www.pcbyte.com.au/store/product/sapphire-amd-radeon-rx-6800-xt-nitro-se-16gb-video-card-11304-01-20g-185859', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6900xt', + url: + 'https://www.pcbyte.com.au/store/product/gigabyte-amd-radeon-rx-6900-xt-gaming-oc-16g-video-card-gv-r69xtgaming-oc-16gd-205734', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6900xt', + url: + 'https://www.pcbyte.com.au/store/product/sapphire-amd-radeon-rx-6900-xt-nitro-16gb-video-card-11308-01-20g-185858', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.pcbyte.com.au/store/product/amd-ryzen-9-5950x-16-core-32-threads-3-4-4-9ghz-am4-cpu-processor-100-100000059wof-61095?search=5950x', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.pcbyte.com.au/store/product/amd-ryzen-9-5900x-12-core-24-threads-3-7-4-8ghz-am4-cpu-processor-100-100000061wof-61096?search=5900x', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.pcbyte.com.au/store/product/amd-ryzen-7-5800x-8-core-16-threads-3-8-4-7ghz-am4-cpu-processor-100-100000063wof-61098?search=5800x', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.pcbyte.com.au/store/product/amd-ryzen-5-5600x-6-core-12-threads-3-7-4-6ghz-am4-cpu-processor-100-100000065box-61099', + }, + ], + name: 'pcbyte', }; diff --git a/src/store/model/pccg.ts b/src/store/model/pccg.ts index 9b18faeb21..be0f56351c 100644 --- a/src/store/model/pccg.ts +++ b/src/store/model/pccg.ts @@ -1,145 +1,145 @@ import {Store} from './store'; export const Pccg: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: 'div.price-box > div.stock-label', - text: ['IN STOCK'] - }, - outOfStock: { - container: 'div.price-box > div.stock-label', - text: ['CHECK BACK LATER!'] - } - }, - links: [ - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.pccasegear.com/products/51675/asus-geforce-rtx-3080-tuf-gaming-10gb' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.pccasegear.com/products/51767/asus-geforce-rtx-3080-tuf-gaming-oc-10gb' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.pccasegear.com/products/52274/asus-rog-strix-geforce-rtx-3080-10gb' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.pccasegear.com/products/51850/asus-rog-strix-geforce-rtx-3080-oc-10gb' - }, - { - brand: 'galax', - model: 'sg oc', - series: '3080', - url: - 'https://www.pccasegear.com/products/51687/galax-geforce-rtx-3080-sg-1-click-oc-10gb' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.pccasegear.com/products/51766/gigabyte-geforce-rtx-3080-vision-oc-10gb' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.pccasegear.com/products/51678/gigabyte-geforce-rtx-3080-gaming-oc-10gb' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.pccasegear.com/products/52012/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3080', - url: - 'https://www.pccasegear.com/products/52679/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10gb' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://www.pccasegear.com/products/52410/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-wb-10gb' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.pccasegear.com/products/51679/gigabyte-geforce-rtx-3080-eagle-oc-10gb' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.pccasegear.com/products/51765/gigabyte-aorus-geforce-rtx-3080-master-10gb' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://www.pccasegear.com/products/51685/inno3d-geforce-rtx-3080-ichill-x4-10gb' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://www.pccasegear.com/products/51684/inno3d-geforce-rtx-3080-ichill-x3-10gb' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: - 'https://www.pccasegear.com/products/52277/inno3d-geforce-rtx-3080-twin-x2-oc-10gb' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.pccasegear.com/products/52533/msi-geforce-rtx-3080-suprim-x-oc-10gb' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.pccasegear.com/products/51681/msi-geforce-rtx-3080-ventus-3x-oc-10gb' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.pccasegear.com/products/51752/msi-geforce-rtx-3080-gaming-x-trio-10gb' - } - ], - name: 'pccg' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: 'div.price-box > div.stock-label', + text: ['IN STOCK'], + }, + outOfStock: { + container: 'div.price-box > div.stock-label', + text: ['CHECK BACK LATER!'], + }, + }, + links: [ + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.pccasegear.com/products/51675/asus-geforce-rtx-3080-tuf-gaming-10gb', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.pccasegear.com/products/51767/asus-geforce-rtx-3080-tuf-gaming-oc-10gb', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.pccasegear.com/products/52274/asus-rog-strix-geforce-rtx-3080-10gb', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.pccasegear.com/products/51850/asus-rog-strix-geforce-rtx-3080-oc-10gb', + }, + { + brand: 'galax', + model: 'sg oc', + series: '3080', + url: + 'https://www.pccasegear.com/products/51687/galax-geforce-rtx-3080-sg-1-click-oc-10gb', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.pccasegear.com/products/51766/gigabyte-geforce-rtx-3080-vision-oc-10gb', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.pccasegear.com/products/51678/gigabyte-geforce-rtx-3080-gaming-oc-10gb', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.pccasegear.com/products/52012/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3080', + url: + 'https://www.pccasegear.com/products/52679/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10gb', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://www.pccasegear.com/products/52410/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-wb-10gb', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.pccasegear.com/products/51679/gigabyte-geforce-rtx-3080-eagle-oc-10gb', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.pccasegear.com/products/51765/gigabyte-aorus-geforce-rtx-3080-master-10gb', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://www.pccasegear.com/products/51685/inno3d-geforce-rtx-3080-ichill-x4-10gb', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://www.pccasegear.com/products/51684/inno3d-geforce-rtx-3080-ichill-x3-10gb', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: + 'https://www.pccasegear.com/products/52277/inno3d-geforce-rtx-3080-twin-x2-oc-10gb', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.pccasegear.com/products/52533/msi-geforce-rtx-3080-suprim-x-oc-10gb', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.pccasegear.com/products/51681/msi-geforce-rtx-3080-ventus-3x-oc-10gb', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.pccasegear.com/products/51752/msi-geforce-rtx-3080-gaming-x-trio-10gb', + }, + ], + name: 'pccg', }; diff --git a/src/store/model/pccomponentes.ts b/src/store/model/pccomponentes.ts index d3203af3d2..f2b7b5cd10 100644 --- a/src/store/model/pccomponentes.ts +++ b/src/store/model/pccomponentes.ts @@ -1,319 +1,318 @@ import {Store} from './store'; export const PCComponentes: Store = { - currency: '€', - labels: { - inStock: { - container: '#btnsWishAddBuy', - text: ['Comprar'] - }, - maxPrice: { - container: '#precio-main', - euroFormat: true - }, - outOfStock: { - container: '#btnsWishAddBuy', - text: ['Avísame'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.pccomponentes.com/gigabyte-geforce-gtx-1660-super-oc-6gb-gddr6' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-eagle-oc-10g-10gb-gddr6x' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.pccomponentes.com/msi-geforce-rtx-3080-ventus-3x-oc-10gb-gddr6x' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.pccomponentes.com/asus-tuf-geforce-rtx-3080-10gb-gddr6x' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-gaming-oc-10g-10gb-gddr6x' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.pccomponentes.com/msi-geforce-rtx-3080-gaming-x-trio-10gb-gddr6x' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.pccomponentes.com/asus-tuf-geforce-rtx-3080-oc-10gb-gddr6x' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.pccomponentes.com/asus-rog-strix-geforce-rtx-3080-10g-gaming-oc-10gb-gddr6x' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3080-trinity-10gb-gddr6x' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.pccomponentes.com/asus-rog-strix-geforce-rtx-3080-gaming-10gb-gddr6x' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3080-trinity-oc-10gb-gddr6x' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-vision-oc-10gb-gddr6x' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-gaming-10gb-gddr6x' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.pccomponentes.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3080-master-10gb-gddr6x' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-gddr6x' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: - 'https://www.pccomponentes.com/evga-geforce-rtx-3080-ftw3-gaming-10gb-gddr6x' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.pccomponentes.com/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10gb-gddr6x' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.pccomponentes.com/pny-geforce-rtx-3080-epic-x-rgb-triple-fan-xlr8-gaming-edition-10gb-gddr6x' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.pccomponentes.com/amd-ryzen-5-5600x-37ghz' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.pccomponentes.com/amd-ryzen-7-5800x-38ghz' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.pccomponentes.com/amd-ryzen-9-5900x-37-ghz' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.pccomponentes.com/amd-ryzen-9-5950x-34-ghz' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3070-twin-edge-oc-8gb-gddr6' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: - 'https://www.pccomponentes.com/msi-geforce-rtx-3070-gaming-x-trio-8gb-gddr6' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: - 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-gaming-oc-8gb-gddr6' - }, - { - brand: 'msi', - model: 'ventus 2x', - series: '3070', - url: - 'https://www.pccomponentes.com/msi-geforce-rtx-3070-ventus-2x-oc-8gb-gddr6' - }, - { - brand: 'asus', - model: 'gaming oc', - series: '3070', - url: - 'https://www.pccomponentes.com/asus-tuf-gaming-geforce-rtx-3070-oc-8gb-gddr6' - }, - { - brand: 'evga', - model: 'xc3', - series: '3070', - url: - 'https://www.pccomponentes.com/evga-geforce-rtx-3070-xc3-black-gaming-8gb-gddr6' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: - 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-eagle-oc-8gb-gddr6' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: - 'https://www.pccomponentes.com/asus-geforce-rtx-3070-dual-oc-edition-8gb-gddr6' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: - 'https://www.pccomponentes.com/asus-geforce-rtx-3070-dual-8gb-gddr6' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://www.pccomponentes.com/asus-rog-strix-gaming-geforce-rtx-3070-oc-8gb-gddr6' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3070', - url: - 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-vision-oc-8gb-gddr6' - }, - { - brand: 'pny', - model: 'dual fan', - series: '3070', - url: - 'https://www.pccomponentes.com/pny-geforce-rtx-3070-dual-fan-8gb-gddr6' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3070', - url: - 'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3070-master-8gb-gddr6' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3070', - url: - 'https://www.pccomponentes.com/pny-geforce-rtx-3070-xlr8-gaming-epic-x-rgb-8gb' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3070', - url: - 'https://www.pccomponentes.com/evga-geforce-rtx-3070-ftw3-ultra-gaming-8gb-gddr6' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3070', - url: - 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-eagle-8gb-gddr6' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://www.pccomponentes.com/msi-geforce-rtx-3070-ventus-3x-oc-8gb-gddr6' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: - 'https://www.pccomponentes.com/asus-rog-strix-gaming-geforce-rtx-3070-8gb-gddr6' - } - ], - name: 'pccomponentes' + currency: '€', + labels: { + inStock: { + container: '#btnsWishAddBuy', + text: ['Comprar'], + }, + maxPrice: { + container: '#precio-main', + euroFormat: true, + }, + outOfStock: { + container: '#btnsWishAddBuy', + text: ['Avísame'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.pccomponentes.com/gigabyte-geforce-gtx-1660-super-oc-6gb-gddr6', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-eagle-oc-10g-10gb-gddr6x', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.pccomponentes.com/msi-geforce-rtx-3080-ventus-3x-oc-10gb-gddr6x', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.pccomponentes.com/asus-tuf-geforce-rtx-3080-10gb-gddr6x', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-gaming-oc-10g-10gb-gddr6x', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.pccomponentes.com/msi-geforce-rtx-3080-gaming-x-trio-10gb-gddr6x', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.pccomponentes.com/asus-tuf-geforce-rtx-3080-oc-10gb-gddr6x', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.pccomponentes.com/asus-rog-strix-geforce-rtx-3080-10g-gaming-oc-10gb-gddr6x', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3080-trinity-10gb-gddr6x', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.pccomponentes.com/asus-rog-strix-geforce-rtx-3080-gaming-10gb-gddr6x', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3080-trinity-oc-10gb-gddr6x', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3080-vision-oc-10gb-gddr6x', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.pccomponentes.com/evga-geforce-rtx-3080-xc3-gaming-10gb-gddr6x', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.pccomponentes.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3080-master-10gb-gddr6x', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3080-xtreme-10gb-gddr6x', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: + 'https://www.pccomponentes.com/evga-geforce-rtx-3080-ftw3-gaming-10gb-gddr6x', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.pccomponentes.com/pny-geforce-rtx-3080-xlr8-gaming-epic-x-rgb-10gb-gddr6x', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.pccomponentes.com/pny-geforce-rtx-3080-epic-x-rgb-triple-fan-xlr8-gaming-edition-10gb-gddr6x', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.pccomponentes.com/amd-ryzen-5-5600x-37ghz', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.pccomponentes.com/amd-ryzen-7-5800x-38ghz', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.pccomponentes.com/amd-ryzen-9-5900x-37-ghz', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.pccomponentes.com/amd-ryzen-9-5950x-34-ghz', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://www.pccomponentes.com/zotac-gaming-geforce-rtx-3070-twin-edge-oc-8gb-gddr6', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: + 'https://www.pccomponentes.com/msi-geforce-rtx-3070-gaming-x-trio-8gb-gddr6', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: + 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-gaming-oc-8gb-gddr6', + }, + { + brand: 'msi', + model: 'ventus 2x', + series: '3070', + url: + 'https://www.pccomponentes.com/msi-geforce-rtx-3070-ventus-2x-oc-8gb-gddr6', + }, + { + brand: 'asus', + model: 'gaming oc', + series: '3070', + url: + 'https://www.pccomponentes.com/asus-tuf-gaming-geforce-rtx-3070-oc-8gb-gddr6', + }, + { + brand: 'evga', + model: 'xc3', + series: '3070', + url: + 'https://www.pccomponentes.com/evga-geforce-rtx-3070-xc3-black-gaming-8gb-gddr6', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: + 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-eagle-oc-8gb-gddr6', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: + 'https://www.pccomponentes.com/asus-geforce-rtx-3070-dual-oc-edition-8gb-gddr6', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: 'https://www.pccomponentes.com/asus-geforce-rtx-3070-dual-8gb-gddr6', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://www.pccomponentes.com/asus-rog-strix-gaming-geforce-rtx-3070-oc-8gb-gddr6', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3070', + url: + 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-vision-oc-8gb-gddr6', + }, + { + brand: 'pny', + model: 'dual fan', + series: '3070', + url: + 'https://www.pccomponentes.com/pny-geforce-rtx-3070-dual-fan-8gb-gddr6', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3070', + url: + 'https://www.pccomponentes.com/gigabyte-aorus-geforce-rtx-3070-master-8gb-gddr6', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3070', + url: + 'https://www.pccomponentes.com/pny-geforce-rtx-3070-xlr8-gaming-epic-x-rgb-8gb', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3070', + url: + 'https://www.pccomponentes.com/evga-geforce-rtx-3070-ftw3-ultra-gaming-8gb-gddr6', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3070', + url: + 'https://www.pccomponentes.com/gigabyte-geforce-rtx-3070-eagle-8gb-gddr6', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://www.pccomponentes.com/msi-geforce-rtx-3070-ventus-3x-oc-8gb-gddr6', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: + 'https://www.pccomponentes.com/asus-rog-strix-gaming-geforce-rtx-3070-8gb-gddr6', + }, + ], + name: 'pccomponentes', }; diff --git a/src/store/model/pcking.ts b/src/store/model/pcking.ts index 734bd49697..d6d28db11d 100644 --- a/src/store/model/pcking.ts +++ b/src/store/model/pcking.ts @@ -1,213 +1,213 @@ import {Store} from './store'; export const PCKing: Store = { - currency: '€', - labels: { - inStock: { - container: '.es_order_box-article_detail', - text: ['sofort lieferbar [Versand]', 'abholbereit [PC-KING]'] - }, - maxPrice: { - container: 'div.es_product_price-article_detail > b', - euroFormat: true - }, - outOfStock: [ - { - container: '.es_order_box-article_detail', - text: ['nicht lieferbar'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=12608766&s_supplier_aid=12608766' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794745' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=10&s_supplier_aid=14794746' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794754' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794753' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14796022' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794747' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794750' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14772705' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14772706' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794752' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794720' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794721' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15140741' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15140740' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15125015' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15140739' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15152168' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15140898' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15140899' - }, - { - brand: 'gigabyte', - model: 'turbo', - series: '3090', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15145820' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3090', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14796780' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3090', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15121636' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14753078' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15188115' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15188116' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15188118' - } - ], - name: 'pcking' + currency: '€', + labels: { + inStock: { + container: '.es_order_box-article_detail', + text: ['sofort lieferbar [Versand]', 'abholbereit [PC-KING]'], + }, + maxPrice: { + container: 'div.es_product_price-article_detail > b', + euroFormat: true, + }, + outOfStock: [ + { + container: '.es_order_box-article_detail', + text: ['nicht lieferbar'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=12608766&s_supplier_aid=12608766', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794745', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=10&s_supplier_aid=14794746', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794754', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794753', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14796022', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794747', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794750', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14772705', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14772706', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794752', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794720', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14794721', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15140741', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15140740', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15125015', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15140739', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15152168', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15140898', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15140899', + }, + { + brand: 'gigabyte', + model: 'turbo', + series: '3090', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15145820', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3090', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14796780', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15121636', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14753078', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15188115', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15188116', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=15188118', + }, + ], + name: 'pcking', }; diff --git a/src/store/model/playstation.ts b/src/store/model/playstation.ts index e4573f9d10..c632f63c80 100644 --- a/src/store/model/playstation.ts +++ b/src/store/model/playstation.ts @@ -2,63 +2,63 @@ import {Store} from './store'; import fetch from 'node-fetch'; export const PlayStation: Store = { - currency: '$', - labels: { - inStock: [ - { - container: '.productHero-info .add-to-cart:not(.hide)', - text: ['Add'] - }, - { - container: '.bulleted-info.queue', - text: ['queue'] - } - ], - outOfStock: { - container: '.productHero-info .out-stock-wrpr:not(.hide)', - text: ['Out of Stock'] - } - }, - links: [ - { - brand: 'test:brand', - itemNumber: '3005715', - model: 'test:model', - series: 'test:series', - url: - 'https://direct.playstation.com/en-us/accessories/accessory/dualsense-wireless-controller.3005715' - }, - { - brand: 'sony', - itemNumber: '3005816', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://direct.playstation.com/en-us/consoles/console/playstation5-console.3005816' - }, - { - brand: 'sony', - itemNumber: '3005817', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://direct.playstation.com/en-us/consoles/console/playstation5-digital-edition-console.3005817' - } - ], - name: 'playstation', - realTimeInventoryLookup: async (itemNumber: string) => { - const request_url = - 'https://api.direct.playstation.com/commercewebservices/ps-direct-us/products/productList?fields=BASIC&productCodes=' + - itemNumber; - const response = await fetch(request_url); - const response_json = await response.json(); - if ( - response_json.products[0].stock.stockLevelStatus !== 'outOfStock' && - response_json.products[0].maxOrderQuantity >= 0 - ) { - return true; - } + currency: '$', + labels: { + inStock: [ + { + container: '.productHero-info .add-to-cart:not(.hide)', + text: ['Add'], + }, + { + container: '.bulleted-info.queue', + text: ['queue'], + }, + ], + outOfStock: { + container: '.productHero-info .out-stock-wrpr:not(.hide)', + text: ['Out of Stock'], + }, + }, + links: [ + { + brand: 'test:brand', + itemNumber: '3005715', + model: 'test:model', + series: 'test:series', + url: + 'https://direct.playstation.com/en-us/accessories/accessory/dualsense-wireless-controller.3005715', + }, + { + brand: 'sony', + itemNumber: '3005816', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://direct.playstation.com/en-us/consoles/console/playstation5-console.3005816', + }, + { + brand: 'sony', + itemNumber: '3005817', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://direct.playstation.com/en-us/consoles/console/playstation5-digital-edition-console.3005817', + }, + ], + name: 'playstation', + realTimeInventoryLookup: async (itemNumber: string) => { + const request_url = + 'https://api.direct.playstation.com/commercewebservices/ps-direct-us/products/productList?fields=BASIC&productCodes=' + + itemNumber; + const response = await fetch(request_url); + const response_json = await response.json(); + if ( + response_json.products[0].stock.stockLevelStatus !== 'outOfStock' && + response_json.products[0].maxOrderQuantity >= 0 + ) { + return true; + } - return false; - } + return false; + }, }; diff --git a/src/store/model/pny.ts b/src/store/model/pny.ts index fabfeb5adb..bf0c8c0460 100644 --- a/src/store/model/pny.ts +++ b/src/store/model/pny.ts @@ -1,65 +1,65 @@ import {Store} from './store'; export const Pny: Store = { - currency: '$', - labels: { - inStock: { - container: '#ctl01_lbtnAddToCart', - text: ['add to cart'] - }, - maxPrice: { - container: 'span[itemprop="price"]', - euroFormat: false - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.pny.com/pny-geforce-gtx-1660-super-gaming-oc-sf' - }, - { - brand: 'pny', - model: 'dual fan', - series: '3070', - url: 'https://www.pny.com/pny-geforce-rtx-3070-8gb-df' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3070', - url: - 'https://www.pny.com/geforce-rtx-3070-xlr8-gaming-epic-x-rgb-triple-fan' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.pny.com/geforce-rtx-3080-xlr8-gaming-epic-x-rgb-triple-fan-m' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.pny.com/geforce-rtx-3080-xlr8-gaming-epic-x-rgb-triple-fan-p' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3090', - url: - 'https://www.pny.com/geforce-rtx-3090-xlr8-gaming-epic-x-rgb-triple-fan-m' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3090', - url: - 'https://www.pny.com/geforce-rtx-3090-xlr8-gaming-epic-x-rgb-triple-fan-p' - } - ], - name: 'pny' + currency: '$', + labels: { + inStock: { + container: '#ctl01_lbtnAddToCart', + text: ['add to cart'], + }, + maxPrice: { + container: 'span[itemprop="price"]', + euroFormat: false, + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.pny.com/pny-geforce-gtx-1660-super-gaming-oc-sf', + }, + { + brand: 'pny', + model: 'dual fan', + series: '3070', + url: 'https://www.pny.com/pny-geforce-rtx-3070-8gb-df', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3070', + url: + 'https://www.pny.com/geforce-rtx-3070-xlr8-gaming-epic-x-rgb-triple-fan', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.pny.com/geforce-rtx-3080-xlr8-gaming-epic-x-rgb-triple-fan-m', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.pny.com/geforce-rtx-3080-xlr8-gaming-epic-x-rgb-triple-fan-p', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3090', + url: + 'https://www.pny.com/geforce-rtx-3090-xlr8-gaming-epic-x-rgb-triple-fan-m', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3090', + url: + 'https://www.pny.com/geforce-rtx-3090-xlr8-gaming-epic-x-rgb-triple-fan-p', + }, + ], + name: 'pny', }; diff --git a/src/store/model/proshop-de.ts b/src/store/model/proshop-de.ts index 9ef4b40316..61ee210ec6 100644 --- a/src/store/model/proshop-de.ts +++ b/src/store/model/proshop-de.ts @@ -1,287 +1,287 @@ import {Store} from './store'; export const ProshopDE: Store = { - currency: '€', - labels: { - inStock: { - container: 'button[data-form-action="addToBasket"]', - text: ['bestellen'] - }, - maxPrice: { - container: - '.site-currency-wrapper > span[class="site-currency-attention"]', - euroFormat: true - }, - outOfStock: { - container: '.site-currency-attention', - text: ['Die Ware ist leider nicht mehr verfügbar.'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.proshop.de/2797958' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: 'https://www.proshop.de/2876843' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: 'https://www.proshop.de/2876845' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: 'https://www.proshop.de/2876851' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: 'https://www.proshop.de/2876853' - }, - { - brand: 'asus', - model: 'tuf', - series: '3070', - url: 'https://www.proshop.de/2876854' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: 'https://www.proshop.de/2876856' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3070', - url: 'https://www.proshop.de/2878385' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: 'https://www.proshop.de/2878386' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: 'https://www.proshop.de/2878390' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3070', - url: 'https://www.proshop.de/2878390' - }, - { - brand: 'inno3d', - model: 'ichill x2', - series: '3070', - url: 'https://www.proshop.de/2883916' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3070', - url: 'https://www.proshop.de/2883917' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3070', - url: 'https://www.proshop.de/2883918' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3070', - url: 'https://www.proshop.de/2883919' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: 'https://www.proshop.de/2876871' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: 'https://www.proshop.de/2876873' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.proshop.de/2876875' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: 'https://www.proshop.de/2876857' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.proshop.de/2876859' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.proshop.de/2876763' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.proshop.de/2876861' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://www.proshop.de/2876835' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.proshop.de/2876837' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.proshop.de/2876838' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: 'https://www.proshop.de/2878401' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: 'https://www.proshop.de/2878969' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: 'https://www.proshop.de/2878971' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: 'https://www.proshop.de/2878968' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.proshop.de/2876877' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3080', - url: 'https://www.proshop.de/2876878' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.proshop.de/2876879' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: 'https://www.proshop.de/2876865' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: 'https://www.proshop.de/2876867' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: 'https://www.proshop.de/2876764' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: 'https://www.proshop.de/2876869' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: 'https://www.proshop.de/2876840' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: 'https://www.proshop.de/2876839' - }, - { - brand: 'gigabyte', - model: 'turbo', - series: '3090', - url: 'https://www.proshop.de/2878410' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: 'https://www.proshop.de/2876881' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.proshop.de/2884168' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.proshop.de/2884171' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.proshop.de/2884173' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.proshop.de/2884175' - } - ], - name: 'proshop-de' + currency: '€', + labels: { + inStock: { + container: 'button[data-form-action="addToBasket"]', + text: ['bestellen'], + }, + maxPrice: { + container: + '.site-currency-wrapper > span[class="site-currency-attention"]', + euroFormat: true, + }, + outOfStock: { + container: '.site-currency-attention', + text: ['Die Ware ist leider nicht mehr verfügbar.'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.proshop.de/2797958', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: 'https://www.proshop.de/2876843', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: 'https://www.proshop.de/2876845', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: 'https://www.proshop.de/2876851', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: 'https://www.proshop.de/2876853', + }, + { + brand: 'asus', + model: 'tuf', + series: '3070', + url: 'https://www.proshop.de/2876854', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: 'https://www.proshop.de/2876856', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3070', + url: 'https://www.proshop.de/2878385', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: 'https://www.proshop.de/2878386', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: 'https://www.proshop.de/2878390', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3070', + url: 'https://www.proshop.de/2878390', + }, + { + brand: 'inno3d', + model: 'ichill x2', + series: '3070', + url: 'https://www.proshop.de/2883916', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3070', + url: 'https://www.proshop.de/2883917', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3070', + url: 'https://www.proshop.de/2883918', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3070', + url: 'https://www.proshop.de/2883919', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: 'https://www.proshop.de/2876871', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.proshop.de/2876873', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.proshop.de/2876875', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.proshop.de/2876857', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.proshop.de/2876859', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.proshop.de/2876763', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.proshop.de/2876861', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.proshop.de/2876835', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.proshop.de/2876837', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.proshop.de/2876838', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.proshop.de/2878401', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.proshop.de/2878969', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.proshop.de/2878971', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.proshop.de/2878968', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.proshop.de/2876877', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3080', + url: 'https://www.proshop.de/2876878', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.proshop.de/2876879', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: 'https://www.proshop.de/2876865', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.proshop.de/2876867', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.proshop.de/2876764', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.proshop.de/2876869', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.proshop.de/2876840', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: 'https://www.proshop.de/2876839', + }, + { + brand: 'gigabyte', + model: 'turbo', + series: '3090', + url: 'https://www.proshop.de/2878410', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.proshop.de/2876881', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.proshop.de/2884168', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.proshop.de/2884171', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.proshop.de/2884173', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.proshop.de/2884175', + }, + ], + name: 'proshop-de', }; diff --git a/src/store/model/proshop-dk.ts b/src/store/model/proshop-dk.ts index 6dcb26520d..204bec44d2 100644 --- a/src/store/model/proshop-dk.ts +++ b/src/store/model/proshop-dk.ts @@ -1,629 +1,629 @@ import {Store} from './store'; export const ProshopDK: Store = { - currency: 'kr.', - labels: { - inStock: { - container: '.site-stock', - text: ['1-2 dages levering', 'fjernlager'] - }, - maxPrice: { - container: - '.site-currency-wrapper > span[class="site-currency-attention"]', - euroFormat: true - }, - outOfStock: { - container: '.site-stock', - text: ['bestilt'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.proshop.dk/2694767' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3060ti', - url: 'https://www.proshop.dk/2910054' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3060ti', - url: 'https://www.proshop.dk/2910052' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3060ti', - url: 'https://www.proshop.dk/2911560' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3060ti', - url: 'https://www.proshop.dk/2886986' - }, - { - brand: 'inno3d', - model: 'twin x2', - series: '3060ti', - url: 'https://www.proshop.dk/2911556' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3060ti', - url: 'https://www.proshop.dk/2886982' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3060ti', - url: 'https://www.proshop.dk/2887734' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3060ti', - url: 'https://www.proshop.dk/2887735' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3060ti', - url: 'https://www.proshop.dk/2887737' - }, - { - brand: 'asus', - model: 'dual', - series: '3060ti', - url: 'https://www.proshop.dk/2886988' - }, - { - brand: 'gigabyte', - model: 'gaming oc pro', - series: '3060ti', - url: 'https://www.proshop.dk/2887738' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3060ti', - url: 'https://www.proshop.dk/2887736' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3060ti', - url: 'https://www.proshop.dk/2908274' - }, - { - brand: 'asus', - model: 'tuf', - series: '3060ti', - url: 'https://www.proshop.dk/2886984' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3060ti', - url: 'https://www.proshop.dk/2908273' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3060ti', - url: 'https://www.proshop.dk/2886990' - }, - { - brand: 'asus', - model: 'dual mini', - series: '3060ti', - url: 'https://www.proshop.dk/2914081' - }, - { - brand: 'asus', - model: 'strix', - series: '3060ti', - url: 'https://www.proshop.dk/2886980' - }, - { - brand: 'asus', - model: 'dual mini oc', - series: '3060ti', - url: 'https://www.proshop.dk/2914082' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3060ti', - url: 'https://www.proshop.dk/2914133' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: 'https://www.proshop.dk/2876871' - }, - { - brand: 'msi', - model: 'suprim', - series: '3070', - url: 'https://www.proshop.dk/2908888' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: 'https://www.proshop.dk/2876873' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: 'https://www.proshop.dk/2876875' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3070', - url: 'https://www.proshop.dk/2885269' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: 'https://www.proshop.dk/2876845' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: 'https://www.proshop.dk/2876856' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: 'https://www.proshop.dk/2878390' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3070', - url: 'https://www.proshop.dk/2878383' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3070', - url: 'https://www.proshop.dk/2878392' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: 'https://www.proshop.dk/2878386' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: 'https://www.proshop.dk/2876853' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: 'https://www.proshop.dk/2876851' - }, - { - brand: 'asus', - model: 'tuf', - series: '3070', - url: 'https://www.proshop.dk/2876854' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3070', - url: 'https://www.proshop.dk/2883917' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: 'https://www.proshop.dk/2876843' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3070', - url: 'https://www.proshop.dk/2878385' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: 'https://www.proshop.dk/2911575' - }, - { - brand: 'inno3d', - model: 'twin x2', - series: '3070', - url: 'https://www.proshop.dk/2883916' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3070', - url: 'https://www.proshop.dk/2883919' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: 'https://www.proshop.dk/2911574' - }, - { - brand: 'asus', - model: 'ekwb', - series: '3070', - url: 'https://www.proshop.dk/2911577' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3070', - url: 'https://www.proshop.dk/2883918' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: 'https://www.proshop.dk/2911956' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3070', - url: 'https://www.proshop.dk/2912456' - }, - { - brand: 'palit', - model: 'gamerock oc', - series: '3070', - url: 'https://www.proshop.dk/2914382' - }, - { - brand: 'palit', - model: 'gamerock oc', - series: '3070', - url: 'https://www.proshop.dk/2914381' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: 'https://www.proshop.dk/2912910' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.proshop.dk/2876877' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: 'https://www.proshop.dk/2885270' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3080', - url: 'https://www.proshop.dk/2876878' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.proshop.dk/2876879' - }, - { - brand: 'msi', - model: 'gaming trio', - series: '3080', - url: 'https://www.proshop.dk/2876876' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.proshop.dk/2876859' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.proshop.dk/2876763' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.proshop.dk/2876861' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.proshop.dk/2911579' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.proshop.dk/2876838' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: 'https://www.proshop.dk/2878401' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://www.proshop.dk/2876835' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: 'https://www.proshop.dk/2876857' - }, - { - brand: 'asus', - model: 'ekwb', - series: '3080', - url: 'https://www.proshop.dk/2887568' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: 'https://www.proshop.dk/2878395' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: 'https://www.proshop.dk/2876836' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: 'https://www.proshop.dk/2878971' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: 'https://www.proshop.dk/2878968' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: 'https://www.proshop.dk/2911578' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: 'https://www.proshop.dk/2878969' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.proshop.dk/2876837' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3080', - url: 'https://www.proshop.dk/2878393' - }, - { - brand: 'pny', - model: 'xlr8 uprising', - series: '3080', - url: 'https://www.proshop.dk/2877066' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: 'https://www.proshop.dk/2877067' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: 'https://www.proshop.dk/2878394' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: 'https://www.proshop.dk/2876881' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3090', - url: 'https://www.proshop.dk/2885271' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: 'https://www.proshop.dk/2876883' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3090', - url: 'https://www.proshop.dk/2876882' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: 'https://www.proshop.dk/2876869' - }, - { - brand: 'msi', - model: 'gaming trio', - series: '3090', - url: 'https://www.proshop.dk/2876880' - }, - { - brand: 'inno3d', - model: 'gaming x3', - series: '3090', - url: 'https://www.proshop.dk/2878977' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3090', - url: 'https://www.proshop.dk/2878978' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3090', - url: 'https://www.proshop.dk/2878979' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: 'https://www.proshop.dk/2876867' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: 'https://www.proshop.dk/2876840' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: 'https://www.proshop.dk/2876764' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: 'https://www.proshop.dk/2911582' - }, - { - brand: 'asus', - model: 'ekwb', - series: '3090', - url: 'https://www.proshop.dk/2887569' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: 'https://www.proshop.dk/2876839' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3090', - url: 'https://www.proshop.dk/2878404' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3090', - url: 'https://www.proshop.dk/2878413' - }, - { - brand: 'inno3d', - model: 'ichill frostbite', - series: '3090', - url: 'https://www.proshop.dk/2887323' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: 'https://www.proshop.dk/2878405' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: 'https://www.proshop.dk/2911581' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: 'https://www.proshop.dk/2876841' - }, - { - brand: 'gigabyte', - model: 'turbo', - series: '3090', - url: 'https://www.proshop.dk/2878410' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3090', - url: 'https://www.proshop.dk/2878406' - }, - { - brand: 'palit', - model: 'gamerock oc', - series: '3090', - url: 'https://www.proshop.dk/2911898' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.proshop.dk/2884171' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.proshop.dk/2884173' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.proshop.dk/2884175' - } - ], - name: 'proshop-dk' + currency: 'kr.', + labels: { + inStock: { + container: '.site-stock', + text: ['1-2 dages levering', 'fjernlager'], + }, + maxPrice: { + container: + '.site-currency-wrapper > span[class="site-currency-attention"]', + euroFormat: true, + }, + outOfStock: { + container: '.site-stock', + text: ['bestilt'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.proshop.dk/2694767', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060ti', + url: 'https://www.proshop.dk/2910054', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3060ti', + url: 'https://www.proshop.dk/2910052', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: 'https://www.proshop.dk/2911560', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060ti', + url: 'https://www.proshop.dk/2886986', + }, + { + brand: 'inno3d', + model: 'twin x2', + series: '3060ti', + url: 'https://www.proshop.dk/2911556', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3060ti', + url: 'https://www.proshop.dk/2886982', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3060ti', + url: 'https://www.proshop.dk/2887734', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3060ti', + url: 'https://www.proshop.dk/2887735', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3060ti', + url: 'https://www.proshop.dk/2887737', + }, + { + brand: 'asus', + model: 'dual', + series: '3060ti', + url: 'https://www.proshop.dk/2886988', + }, + { + brand: 'gigabyte', + model: 'gaming oc pro', + series: '3060ti', + url: 'https://www.proshop.dk/2887738', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3060ti', + url: 'https://www.proshop.dk/2887736', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3060ti', + url: 'https://www.proshop.dk/2908274', + }, + { + brand: 'asus', + model: 'tuf', + series: '3060ti', + url: 'https://www.proshop.dk/2886984', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3060ti', + url: 'https://www.proshop.dk/2908273', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3060ti', + url: 'https://www.proshop.dk/2886990', + }, + { + brand: 'asus', + model: 'dual mini', + series: '3060ti', + url: 'https://www.proshop.dk/2914081', + }, + { + brand: 'asus', + model: 'strix', + series: '3060ti', + url: 'https://www.proshop.dk/2886980', + }, + { + brand: 'asus', + model: 'dual mini oc', + series: '3060ti', + url: 'https://www.proshop.dk/2914082', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3060ti', + url: 'https://www.proshop.dk/2914133', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: 'https://www.proshop.dk/2876871', + }, + { + brand: 'msi', + model: 'suprim', + series: '3070', + url: 'https://www.proshop.dk/2908888', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.proshop.dk/2876873', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.proshop.dk/2876875', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3070', + url: 'https://www.proshop.dk/2885269', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: 'https://www.proshop.dk/2876845', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: 'https://www.proshop.dk/2876856', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: 'https://www.proshop.dk/2878390', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3070', + url: 'https://www.proshop.dk/2878383', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3070', + url: 'https://www.proshop.dk/2878392', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: 'https://www.proshop.dk/2878386', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: 'https://www.proshop.dk/2876853', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: 'https://www.proshop.dk/2876851', + }, + { + brand: 'asus', + model: 'tuf', + series: '3070', + url: 'https://www.proshop.dk/2876854', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3070', + url: 'https://www.proshop.dk/2883917', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: 'https://www.proshop.dk/2876843', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3070', + url: 'https://www.proshop.dk/2878385', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: 'https://www.proshop.dk/2911575', + }, + { + brand: 'inno3d', + model: 'twin x2', + series: '3070', + url: 'https://www.proshop.dk/2883916', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3070', + url: 'https://www.proshop.dk/2883919', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: 'https://www.proshop.dk/2911574', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3070', + url: 'https://www.proshop.dk/2911577', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3070', + url: 'https://www.proshop.dk/2883918', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: 'https://www.proshop.dk/2911956', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3070', + url: 'https://www.proshop.dk/2912456', + }, + { + brand: 'palit', + model: 'gamerock oc', + series: '3070', + url: 'https://www.proshop.dk/2914382', + }, + { + brand: 'palit', + model: 'gamerock oc', + series: '3070', + url: 'https://www.proshop.dk/2914381', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: 'https://www.proshop.dk/2912910', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.proshop.dk/2876877', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: 'https://www.proshop.dk/2885270', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3080', + url: 'https://www.proshop.dk/2876878', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.proshop.dk/2876879', + }, + { + brand: 'msi', + model: 'gaming trio', + series: '3080', + url: 'https://www.proshop.dk/2876876', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.proshop.dk/2876859', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.proshop.dk/2876763', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.proshop.dk/2876861', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.proshop.dk/2911579', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.proshop.dk/2876838', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.proshop.dk/2878401', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.proshop.dk/2876835', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.proshop.dk/2876857', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3080', + url: 'https://www.proshop.dk/2887568', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: 'https://www.proshop.dk/2878395', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: 'https://www.proshop.dk/2876836', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.proshop.dk/2878971', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.proshop.dk/2878968', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.proshop.dk/2911578', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.proshop.dk/2878969', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.proshop.dk/2876837', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3080', + url: 'https://www.proshop.dk/2878393', + }, + { + brand: 'pny', + model: 'xlr8 uprising', + series: '3080', + url: 'https://www.proshop.dk/2877066', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: 'https://www.proshop.dk/2877067', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: 'https://www.proshop.dk/2878394', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.proshop.dk/2876881', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3090', + url: 'https://www.proshop.dk/2885271', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.proshop.dk/2876883', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3090', + url: 'https://www.proshop.dk/2876882', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.proshop.dk/2876869', + }, + { + brand: 'msi', + model: 'gaming trio', + series: '3090', + url: 'https://www.proshop.dk/2876880', + }, + { + brand: 'inno3d', + model: 'gaming x3', + series: '3090', + url: 'https://www.proshop.dk/2878977', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3090', + url: 'https://www.proshop.dk/2878978', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: 'https://www.proshop.dk/2878979', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.proshop.dk/2876867', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.proshop.dk/2876840', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.proshop.dk/2876764', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.proshop.dk/2911582', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3090', + url: 'https://www.proshop.dk/2887569', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: 'https://www.proshop.dk/2876839', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3090', + url: 'https://www.proshop.dk/2878404', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3090', + url: 'https://www.proshop.dk/2878413', + }, + { + brand: 'inno3d', + model: 'ichill frostbite', + series: '3090', + url: 'https://www.proshop.dk/2887323', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: 'https://www.proshop.dk/2878405', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: 'https://www.proshop.dk/2911581', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: 'https://www.proshop.dk/2876841', + }, + { + brand: 'gigabyte', + model: 'turbo', + series: '3090', + url: 'https://www.proshop.dk/2878410', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3090', + url: 'https://www.proshop.dk/2878406', + }, + { + brand: 'palit', + model: 'gamerock oc', + series: '3090', + url: 'https://www.proshop.dk/2911898', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.proshop.dk/2884171', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.proshop.dk/2884173', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.proshop.dk/2884175', + }, + ], + name: 'proshop-dk', }; diff --git a/src/store/model/rosman-melb.ts b/src/store/model/rosman-melb.ts index e6fedcc6cf..d151ae6351 100644 --- a/src/store/model/rosman-melb.ts +++ b/src/store/model/rosman-melb.ts @@ -1,130 +1,129 @@ import {Store} from './store'; export const RosmanMelb: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: - '#Availability > div > table > tbody > tr:nth-child(2) > td:nth-child(1)', - text: ['1', '2', '3', '4', '5', '6', '7', '8', '9'] - }, - maxPrice: { - container: 'span.price.price--withTax.price--main', - euroFormat: false - }, - outOfStock: { - container: - '#Availability > div > table > tbody > tr:nth-child(2) > td:nth-child(1)', - text: ['ETA', 'Call Us'] - } - }, - links: [ - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://rosmancomputers.com.au/gigabyte-nvidia-gv-n3090turbo-24gd1/' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://rosmancomputers.com.au/asus-nvidia-geforce-rtx-3080-10gb-2100mhz-core-clock-4750mhz-memory-clock/' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://rosmancomputers.com.au/asus-nvidia-tuf-gaming-geforce-rtx-3080-10gb-buffed-up-design-with-chart-topping-thermal-performance/' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://rosmancomputers.com.au/asus-nvidia-rog-strix-geforce-rtx-3080-buffed-up-design-with-chart-topping-thermal-performance/' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://rosmancomputers.com.au/gigabyte-geforce-rtx-3080-eagle-oc-10gb/' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://rosmancomputers.com.au/gigabyte-nvidia-gv-n3080aorusm-10gd1/' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://rosmancomputers.com.au/aorus-geforce-rtx-3080-xtreme-10g/' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://rosmancomputers.com.au/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10gb-video-card/' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://rosmancomputers.com.au/gigabyte-gv-n3080aorusx-wb-10gd-nvidia/' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-ichill-x4-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-4xfans-750w-3-years-warranty/' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-ichill-x3-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-3xfans-750w-3-years-warranty/' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: - 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-twin-x2-oc-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-3xfans-750w-3-years-warranty/' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://rosmancomputers.com.au/amd-ryzen-9-5950x-16-core-32-threads-max-freq-4-9ghz-72mb-cache-socket-am4-105w-without-cooler/' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://rosmancomputers.com.au/amd-ryzen-9-5900x-12-core-24-threads-max-freq-4-8ghz-70mb-cache-socket-am4-105w-without-cooler-100-100000061wo/' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://rosmancomputers.com.au/amd-ryzen-5-5600x-6-core-12-threads-max-freq-4-6ghz-35mb-cache-socket-am4-105w-with-wraith-stealth-cooler/' - } - ], - name: 'rosman-melb' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: + '#Availability > div > table > tbody > tr:nth-child(2) > td:nth-child(1)', + text: ['1', '2', '3', '4', '5', '6', '7', '8', '9'], + }, + maxPrice: { + container: 'span.price.price--withTax.price--main', + euroFormat: false, + }, + outOfStock: { + container: + '#Availability > div > table > tbody > tr:nth-child(2) > td:nth-child(1)', + text: ['ETA', 'Call Us'], + }, + }, + links: [ + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://rosmancomputers.com.au/gigabyte-nvidia-gv-n3090turbo-24gd1/', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://rosmancomputers.com.au/asus-nvidia-geforce-rtx-3080-10gb-2100mhz-core-clock-4750mhz-memory-clock/', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://rosmancomputers.com.au/asus-nvidia-tuf-gaming-geforce-rtx-3080-10gb-buffed-up-design-with-chart-topping-thermal-performance/', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://rosmancomputers.com.au/asus-nvidia-rog-strix-geforce-rtx-3080-buffed-up-design-with-chart-topping-thermal-performance/', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://rosmancomputers.com.au/gigabyte-geforce-rtx-3080-eagle-oc-10gb/', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://rosmancomputers.com.au/gigabyte-nvidia-gv-n3080aorusm-10gd1/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: 'https://rosmancomputers.com.au/aorus-geforce-rtx-3080-xtreme-10g/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://rosmancomputers.com.au/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10gb-video-card/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://rosmancomputers.com.au/gigabyte-gv-n3080aorusx-wb-10gd-nvidia/', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-ichill-x4-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-4xfans-750w-3-years-warranty/', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-ichill-x3-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-3xfans-750w-3-years-warranty/', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: + 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-twin-x2-oc-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-3xfans-750w-3-years-warranty/', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://rosmancomputers.com.au/amd-ryzen-9-5950x-16-core-32-threads-max-freq-4-9ghz-72mb-cache-socket-am4-105w-without-cooler/', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://rosmancomputers.com.au/amd-ryzen-9-5900x-12-core-24-threads-max-freq-4-8ghz-70mb-cache-socket-am4-105w-without-cooler-100-100000061wo/', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://rosmancomputers.com.au/amd-ryzen-5-5600x-6-core-12-threads-max-freq-4-6ghz-35mb-cache-socket-am4-105w-with-wraith-stealth-cooler/', + }, + ], + name: 'rosman-melb', }; diff --git a/src/store/model/rosman.ts b/src/store/model/rosman.ts index 3a99e915aa..c1e84c6e14 100644 --- a/src/store/model/rosman.ts +++ b/src/store/model/rosman.ts @@ -1,130 +1,129 @@ import {Store} from './store'; export const Rosman: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: - '#Availability > div:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(4)', - text: ['1', '2', '3', '4', '5', '6', '7', '8', '9'] - }, - maxPrice: { - container: 'span.price.price--withTax.price--main', - euroFormat: false - }, - outOfStock: { - container: - '#Availability > div:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(4)', - text: ['ETA', 'Call Us'] - } - }, - links: [ - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://rosmancomputers.com.au/gigabyte-nvidia-gv-n3090turbo-24gd1/' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://rosmancomputers.com.au/asus-nvidia-geforce-rtx-3080-10gb-2100mhz-core-clock-4750mhz-memory-clock/' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://rosmancomputers.com.au/asus-nvidia-tuf-gaming-geforce-rtx-3080-10gb-buffed-up-design-with-chart-topping-thermal-performance/' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://rosmancomputers.com.au/asus-nvidia-rog-strix-geforce-rtx-3080-buffed-up-design-with-chart-topping-thermal-performance/' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://rosmancomputers.com.au/gigabyte-geforce-rtx-3080-eagle-oc-10gb/' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://rosmancomputers.com.au/gigabyte-nvidia-gv-n3080aorusm-10gd1/' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://rosmancomputers.com.au/aorus-geforce-rtx-3080-xtreme-10g/' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://rosmancomputers.com.au/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10gb-video-card/' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://rosmancomputers.com.au/gigabyte-gv-n3080aorusx-wb-10gd-nvidia/' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-ichill-x4-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-4xfans-750w-3-years-warranty/' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-ichill-x3-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-3xfans-750w-3-years-warranty/' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: - 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-twin-x2-oc-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-3xfans-750w-3-years-warranty/' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://rosmancomputers.com.au/amd-ryzen-9-5950x-16-core-32-threads-max-freq-4-9ghz-72mb-cache-socket-am4-105w-without-cooler/' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://rosmancomputers.com.au/amd-ryzen-9-5900x-12-core-24-threads-max-freq-4-8ghz-70mb-cache-socket-am4-105w-without-cooler-100-100000061wo/' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://rosmancomputers.com.au/amd-ryzen-5-5600x-6-core-12-threads-max-freq-4-6ghz-35mb-cache-socket-am4-105w-with-wraith-stealth-cooler/' - } - ], - name: 'rosman' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: + '#Availability > div:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(4)', + text: ['1', '2', '3', '4', '5', '6', '7', '8', '9'], + }, + maxPrice: { + container: 'span.price.price--withTax.price--main', + euroFormat: false, + }, + outOfStock: { + container: + '#Availability > div:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(4)', + text: ['ETA', 'Call Us'], + }, + }, + links: [ + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://rosmancomputers.com.au/gigabyte-nvidia-gv-n3090turbo-24gd1/', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://rosmancomputers.com.au/asus-nvidia-geforce-rtx-3080-10gb-2100mhz-core-clock-4750mhz-memory-clock/', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://rosmancomputers.com.au/asus-nvidia-tuf-gaming-geforce-rtx-3080-10gb-buffed-up-design-with-chart-topping-thermal-performance/', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://rosmancomputers.com.au/asus-nvidia-rog-strix-geforce-rtx-3080-buffed-up-design-with-chart-topping-thermal-performance/', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://rosmancomputers.com.au/gigabyte-geforce-rtx-3080-eagle-oc-10gb/', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://rosmancomputers.com.au/gigabyte-nvidia-gv-n3080aorusm-10gd1/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: 'https://rosmancomputers.com.au/aorus-geforce-rtx-3080-xtreme-10g/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://rosmancomputers.com.au/gigabyte-aorus-geforce-rtx-3080-xtreme-waterforce-10gb-video-card/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://rosmancomputers.com.au/gigabyte-gv-n3080aorusx-wb-10gd-nvidia/', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-ichill-x4-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-4xfans-750w-3-years-warranty/', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-ichill-x3-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-3xfans-750w-3-years-warranty/', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: + 'https://rosmancomputers.com.au/inno3d-nvidia-rtx-3080-twin-x2-oc-mhz-10gb-gddr6x-3xdp-1xhdmi-atx-3xfans-750w-3-years-warranty/', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://rosmancomputers.com.au/amd-ryzen-9-5950x-16-core-32-threads-max-freq-4-9ghz-72mb-cache-socket-am4-105w-without-cooler/', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://rosmancomputers.com.au/amd-ryzen-9-5900x-12-core-24-threads-max-freq-4-8ghz-70mb-cache-socket-am4-105w-without-cooler-100-100000061wo/', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://rosmancomputers.com.au/amd-ryzen-5-5600x-6-core-12-threads-max-freq-4-6ghz-35mb-cache-socket-am4-105w-with-wraith-stealth-cooler/', + }, + ], + name: 'rosman', }; diff --git a/src/store/model/saturn.ts b/src/store/model/saturn.ts index 4dcbd8879f..70f7b0a0d3 100644 --- a/src/store/model/saturn.ts +++ b/src/store/model/saturn.ts @@ -1,221 +1,221 @@ import {Store} from './store'; export const Saturn: Store = { - backoffStatusCodes: [403, 429, 503], - currency: '€', - labels: { - captcha: { - container: 'p', - text: ['Das ging uns leider zu schnell.'] - }, - maxPrice: { - container: 'span[font-family="price"]', - euroFormat: false - }, - outOfStock: [ - { - container: '#root', - text: ['Dieser Artikel ist aktuell nicht verfügbar.'] - }, - { - container: '#root', - text: ['Leider keine Lieferung möglich'] - }, - { - container: '#root', - text: ['Nicht verfügbar'] - }, - { - container: '#root', - text: ['Dieser Artikel ist dauerhaft ausverkauft'] - }, - { - container: '#root', - text: ['Dieser Artikel ist bald wieder für Sie verfügbar'] - } - ] - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.saturn.de/de/product/-2641856.html' - }, - { - brand: 'asus', - model: 'dual', - series: '3060ti', - url: 'https://www.saturn.de/de/product/-2701239.html' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3060ti', - url: 'https://www.saturn.de/de/product/-2704436.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: 'https://www.saturn.de/de/product/-2691244.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: 'https://www.saturn.de/de/product/-2691439.html' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3070', - url: 'https://www.saturn.de/de/product/-2695942.html' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: 'https://www.saturn.de/de/product/-2691365.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: 'https://www.saturn.de/de/product/-2681869.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.saturn.de/de/product/-2681871.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.saturn.de/de/product/-2681859.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.saturn.de/de/product/-2681861.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.saturn.de/de/product/-2683942.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.saturn.de/de/product/-2683937.html' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: 'https://www.saturn.de/de/product/-2684241.html' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: 'https://www.saturn.de/de/product/-2684238.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.saturn.de/de/product/-2683227.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.saturn.de/de/product/-2683229.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: 'https://www.saturn.de/de/product/-2683243.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: 'https://www.saturn.de/de/product/-2681863.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: 'https://www.saturn.de/de/product/-2681866.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: 'https://www.saturn.de/de/product/-2681855.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: 'https://www.saturn.de/de/product/-2681857.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: 'https://www.saturn.de/de/product/-2691441.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: 'https://www.saturn.de/de/product/-2691440.html' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3090', - url: 'https://www.saturn.de/de/product/-2684235.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: 'https://www.saturn.de/de/product/-2683226.html' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.saturn.de/de/product/-2661938.html' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.saturn.de/de/product/-2661939.html' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.saturn.de/de/product/-2677360.html' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.saturn.de/de/product/-2677359.html' - } - ], - name: 'saturn' + backoffStatusCodes: [403, 429, 503], + currency: '€', + labels: { + captcha: { + container: 'p', + text: ['Das ging uns leider zu schnell.'], + }, + maxPrice: { + container: 'span[font-family="price"]', + euroFormat: false, + }, + outOfStock: [ + { + container: '#root', + text: ['Dieser Artikel ist aktuell nicht verfügbar.'], + }, + { + container: '#root', + text: ['Leider keine Lieferung möglich'], + }, + { + container: '#root', + text: ['Nicht verfügbar'], + }, + { + container: '#root', + text: ['Dieser Artikel ist dauerhaft ausverkauft'], + }, + { + container: '#root', + text: ['Dieser Artikel ist bald wieder für Sie verfügbar'], + }, + ], + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.saturn.de/de/product/-2641856.html', + }, + { + brand: 'asus', + model: 'dual', + series: '3060ti', + url: 'https://www.saturn.de/de/product/-2701239.html', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3060ti', + url: 'https://www.saturn.de/de/product/-2704436.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: 'https://www.saturn.de/de/product/-2691244.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: 'https://www.saturn.de/de/product/-2691439.html', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3070', + url: 'https://www.saturn.de/de/product/-2695942.html', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: 'https://www.saturn.de/de/product/-2691365.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.saturn.de/de/product/-2681869.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.saturn.de/de/product/-2681871.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.saturn.de/de/product/-2681859.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.saturn.de/de/product/-2681861.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.saturn.de/de/product/-2683942.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.saturn.de/de/product/-2683937.html', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.saturn.de/de/product/-2684241.html', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.saturn.de/de/product/-2684238.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.saturn.de/de/product/-2683227.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.saturn.de/de/product/-2683229.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: 'https://www.saturn.de/de/product/-2683243.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: 'https://www.saturn.de/de/product/-2681863.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.saturn.de/de/product/-2681866.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.saturn.de/de/product/-2681855.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: 'https://www.saturn.de/de/product/-2681857.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.saturn.de/de/product/-2691441.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: 'https://www.saturn.de/de/product/-2691440.html', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3090', + url: 'https://www.saturn.de/de/product/-2684235.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.saturn.de/de/product/-2683226.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/-2661938.html', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.saturn.de/de/product/-2661939.html', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.saturn.de/de/product/-2677360.html', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.saturn.de/de/product/-2677359.html', + }, + ], + name: 'saturn', }; diff --git a/src/store/model/saveonit.ts b/src/store/model/saveonit.ts index 453ee1dc4c..77671a444d 100644 --- a/src/store/model/saveonit.ts +++ b/src/store/model/saveonit.ts @@ -1,173 +1,173 @@ import {Store} from './store'; export const SaveOnIt: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: '.supplier', - text: ['In Stock', '1', '2', '3', '4', '5', '6', '7', '8', '9'] - }, - maxPrice: { - container: '.money', - euroFormat: false - }, - outOfStock: { - container: '.supplier', - text: ['Pre-Order', 'On Order'] - } - }, - links: [ - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165506' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165507' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165536' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165879' - }, - { - brand: 'galax', - model: 'sg oc', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165599' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165501' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165504' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165520' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165519' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165578' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165691' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165692' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165575' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165564' - }, - { - brand: 'inno3d', - model: 'twin x2 oc', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165576' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165827' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165514' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: 'https://www.saveonit.com.au/products/productdetails/65165505' - }, - { - brand: 'asrock', - model: 'phantom gaming', - series: 'rx6900xt', - url: - 'https://www.saveonit.com.au/product/asrock-rx6900xt-pgd-16go-rx6900xt-16g-phantom-gaming-d' - }, - { - brand: 'gigabyte', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.saveonit.com.au/product/gigabyte-gv-r69xt-16gc-b-rx6900xt-16gb-video-card' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.saveonit.com.au/product/amd-ryzen-9-5950x-16-core-3-4-ghz-cpu-100-100000059wof' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.saveonit.com.au/product/amd-ryzen-9-5900x-12-core-3-7-ghz-cpu-100-100000061wof' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.saveonit.com.au/product/amd-ryzen-7-5800x-8-core-3-8ghz-cpu-100-100000063wof' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.saveonit.com.au/product/amd-ryzen-5-5600x-6-core-3-7-ghz-cpu-100-100000065box' - } - ], - name: 'saveonit' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: '.supplier', + text: ['In Stock', '1', '2', '3', '4', '5', '6', '7', '8', '9'], + }, + maxPrice: { + container: '.money', + euroFormat: false, + }, + outOfStock: { + container: '.supplier', + text: ['Pre-Order', 'On Order'], + }, + }, + links: [ + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165506', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165507', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165536', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165879', + }, + { + brand: 'galax', + model: 'sg oc', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165599', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165501', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165504', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165520', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165519', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165578', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165691', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165692', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165575', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165564', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165576', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165827', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165514', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.saveonit.com.au/products/productdetails/65165505', + }, + { + brand: 'asrock', + model: 'phantom gaming', + series: 'rx6900xt', + url: + 'https://www.saveonit.com.au/product/asrock-rx6900xt-pgd-16go-rx6900xt-16g-phantom-gaming-d', + }, + { + brand: 'gigabyte', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.saveonit.com.au/product/gigabyte-gv-r69xt-16gc-b-rx6900xt-16gb-video-card', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.saveonit.com.au/product/amd-ryzen-9-5950x-16-core-3-4-ghz-cpu-100-100000059wof', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.saveonit.com.au/product/amd-ryzen-9-5900x-12-core-3-7-ghz-cpu-100-100000061wof', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.saveonit.com.au/product/amd-ryzen-7-5800x-8-core-3-8ghz-cpu-100-100000063wof', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.saveonit.com.au/product/amd-ryzen-5-5600x-6-core-3-7-ghz-cpu-100-100000065box', + }, + ], + name: 'saveonit', }; diff --git a/src/store/model/scan.ts b/src/store/model/scan.ts index 1cd1fbbad9..d6f6574c74 100644 --- a/src/store/model/scan.ts +++ b/src/store/model/scan.ts @@ -2,123 +2,123 @@ import {Store} from './store'; import {getProductLinksBuilder} from './helpers/card'; export const Scan: Store = { - currency: '£', - disableAdBlocker: true, - labels: { - captcha: [ - { - container: '#challenge-form', - text: ['hcaptcha_submit'] - } - ], - inStock: { - container: '.buyPanel .priceAvailability', - text: ['add to basket', 'in stock'] - }, - maxPrice: { - container: '.buyPanel .price', - euroFormat: false // Note: Scan uses non-euroFromat as price seperator - }, - outOfStock: { - container: '.buyPanel .priceAvailability', - text: ['pre order'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.scan.co.uk/products/msi-geforce-rtx-2060-ventus-xs-oc-6gb-gddr6-vr-ready-graphics-card-1920-core-1710mhz-boost' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.scan.co.uk/products/playstation-5-console' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.scan.co.uk/products/playstation-5-digital-edition' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.scan.co.uk/products/amd-ryzen-5-5600x-am4-zen-3-6-core-12-thread-37ghz-46ghz-turbo-35mb-cache-pcie-40-65w-cpu' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.scan.co.uk/products/amd-ryzen-7-5800x-am4-zen-3-8-core-16-thread-38ghz-47ghz-turbo-36mb-cache-pcie-40-105w-cpu' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.scan.co.uk/products/amd-ryzen-9-5900x-am4-zen-3-12-core-24-thread-37ghz-48ghz-turbo-70mb-cache-pcie-40-105w-cpu' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.scan.co.uk/products/amd-ryzen-9-5950x-am4-zen-3-16-core-32-thread-34ghz-49ghz-turbo-72mb-cache-pcie-40-105w-cpu' - } - ], - linksBuilder: { - builder: getProductLinksBuilder({ - productsSelector: 'div.productList ul.productColumns li.product', - sitePrefix: 'https://www.scan.co.uk', - titleSelector: '.details .description', - urlSelector: 'a[href]' - }), - ttl: 300000, - urls: [ - { - series: 'rx6800', - url: - 'https://www.scan.co.uk/shop/computer-hardware/gpu-amd/amd-radeon-rx-6800-pcie-40-graphics-cards' - }, - { - series: 'rx6800xt', - url: - 'https://www.scan.co.uk/shop/computer-hardware/gpu-amd/amd-radeon-rx-6800-xt-pcie-40-graphics-cards' - }, - { - series: 'rx6900xt', - url: - 'https://www.scan.co.uk/shop/computer-hardware/gpu-amd/amd-radeon-rx-6900-xt-pcie-40-graphics-cards' - }, - { - series: '3060ti', - url: - 'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/geforce-rtx-3060-ti-graphics-cards' - }, - { - series: '3070', - url: - 'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3070-graphics-cards' - }, - { - series: '3080', - url: - 'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3080-graphics-cards' - }, - { - series: '3090', - url: - 'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3090-graphics-cards' - } - ] - }, - name: 'scan', - waitUntil: 'domcontentloaded' + currency: '£', + disableAdBlocker: true, + labels: { + captcha: [ + { + container: '#challenge-form', + text: ['hcaptcha_submit'], + }, + ], + inStock: { + container: '.buyPanel .priceAvailability', + text: ['add to basket', 'in stock'], + }, + maxPrice: { + container: '.buyPanel .price', + euroFormat: false, // Note: Scan uses non-euroFromat as price seperator + }, + outOfStock: { + container: '.buyPanel .priceAvailability', + text: ['pre order'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.scan.co.uk/products/msi-geforce-rtx-2060-ventus-xs-oc-6gb-gddr6-vr-ready-graphics-card-1920-core-1710mhz-boost', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.scan.co.uk/products/playstation-5-console', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.scan.co.uk/products/playstation-5-digital-edition', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.scan.co.uk/products/amd-ryzen-5-5600x-am4-zen-3-6-core-12-thread-37ghz-46ghz-turbo-35mb-cache-pcie-40-65w-cpu', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.scan.co.uk/products/amd-ryzen-7-5800x-am4-zen-3-8-core-16-thread-38ghz-47ghz-turbo-36mb-cache-pcie-40-105w-cpu', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.scan.co.uk/products/amd-ryzen-9-5900x-am4-zen-3-12-core-24-thread-37ghz-48ghz-turbo-70mb-cache-pcie-40-105w-cpu', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.scan.co.uk/products/amd-ryzen-9-5950x-am4-zen-3-16-core-32-thread-34ghz-49ghz-turbo-72mb-cache-pcie-40-105w-cpu', + }, + ], + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: 'div.productList ul.productColumns li.product', + sitePrefix: 'https://www.scan.co.uk', + titleSelector: '.details .description', + urlSelector: 'a[href]', + }), + ttl: 300000, + urls: [ + { + series: 'rx6800', + url: + 'https://www.scan.co.uk/shop/computer-hardware/gpu-amd/amd-radeon-rx-6800-pcie-40-graphics-cards', + }, + { + series: 'rx6800xt', + url: + 'https://www.scan.co.uk/shop/computer-hardware/gpu-amd/amd-radeon-rx-6800-xt-pcie-40-graphics-cards', + }, + { + series: 'rx6900xt', + url: + 'https://www.scan.co.uk/shop/computer-hardware/gpu-amd/amd-radeon-rx-6900-xt-pcie-40-graphics-cards', + }, + { + series: '3060ti', + url: + 'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/geforce-rtx-3060-ti-graphics-cards', + }, + { + series: '3070', + url: + 'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3070-graphics-cards', + }, + { + series: '3080', + url: + 'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3080-graphics-cards', + }, + { + series: '3090', + url: + 'https://www.scan.co.uk/shop/computer-hardware/gpu-nvidia/nvidia-geforce-rtx-3090-graphics-cards', + }, + ], + }, + name: 'scan', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/scorptec.ts b/src/store/model/scorptec.ts index d4323eb838..5c3d1662d1 100644 --- a/src/store/model/scorptec.ts +++ b/src/store/model/scorptec.ts @@ -1,201 +1,201 @@ import {Store} from './store'; export const Scorptec: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: '#delivery-wrapper > div.product-stock-text', - text: ['in stock'] - }, - outOfStock: { - container: '#delivery-wrapper > div.product-stock-text', - text: ['sold out'] - } - }, - links: [ - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85443-rog-strix-rtx3080-10g-gaming' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85382-rog-strix-rtx3080-o10g-gaming' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85076-tuf-rtx3080-10g-gaming' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85302-tuf-rtx3080-o10g-gaming' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85194-10g-p5-3895-kr' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85195-10g-p5-3897-kr' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85193-10g-p5-3881-kr' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85269-10g-p5-3883-kr' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85130-10g-p5-3885-kr' - }, - { - brand: 'galax', - model: 'sg oc', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85142-38nwm3md99nn' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85046-gv-n3080gaming-oc-10gd' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85711-gv-n3080aorus-x-10gd' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/86435-gv-n3080aorusx-w-10gd' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/86434-gv-n3080aorusx-wb-10gd' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/86088-gv-n3080eagle-10gd' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85048-gv-n3080eagle-oc-10gd' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85328-gv-n3080aorus-m-10gd' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85329-gv-n3080vision-oc-10gd' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85334-c30804-106xx-1810va36' - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85333-c30803-106xx-1810va37' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/86640-geforce-rtx-3080-suprim-x-10g' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85147-geforce-rtx-3080-ventus-3x-10g-oc' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85146-geforce-rtx-3080-gaming-x-trio-10g' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/86188-zt-a30800f-10p' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85038-zt-a30800d-10p' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85326-zt-a30800j-10p' - } - ], - name: 'scorptec' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: '#delivery-wrapper > div.product-stock-text', + text: ['in stock'], + }, + outOfStock: { + container: '#delivery-wrapper > div.product-stock-text', + text: ['sold out'], + }, + }, + links: [ + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85443-rog-strix-rtx3080-10g-gaming', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85382-rog-strix-rtx3080-o10g-gaming', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85076-tuf-rtx3080-10g-gaming', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85302-tuf-rtx3080-o10g-gaming', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85194-10g-p5-3895-kr', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85195-10g-p5-3897-kr', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85193-10g-p5-3881-kr', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85269-10g-p5-3883-kr', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85130-10g-p5-3885-kr', + }, + { + brand: 'galax', + model: 'sg oc', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85142-38nwm3md99nn', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85046-gv-n3080gaming-oc-10gd', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85711-gv-n3080aorus-x-10gd', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/86435-gv-n3080aorusx-w-10gd', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/86434-gv-n3080aorusx-wb-10gd', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/86088-gv-n3080eagle-10gd', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85048-gv-n3080eagle-oc-10gd', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85328-gv-n3080aorus-m-10gd', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85329-gv-n3080vision-oc-10gd', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85334-c30804-106xx-1810va36', + }, + { + brand: 'inno3d', + model: 'ichill x3', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85333-c30803-106xx-1810va37', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/86640-geforce-rtx-3080-suprim-x-10g', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85147-geforce-rtx-3080-ventus-3x-10g-oc', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85146-geforce-rtx-3080-gaming-x-trio-10g', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/86188-zt-a30800f-10p', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85038-zt-a30800d-10p', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.scorptec.com.au/product/graphics-cards/nvidia/85326-zt-a30800j-10p', + }, + ], + name: 'scorptec', }; diff --git a/src/store/model/shopto.ts b/src/store/model/shopto.ts index 784299dfb8..087069f064 100644 --- a/src/store/model/shopto.ts +++ b/src/store/model/shopto.ts @@ -1,35 +1,34 @@ import {Store} from './store'; export const ShopTo: Store = { - currency: '£', - labels: { - inStock: { - container: '.orderbox_inventory', - text: ['In Stock'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.shopto.net/en/ps5du00-dualsense-controller-playstation-5-p195100/' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.shopto.net/en/ps5hw01-playstation-5-console-p191472/' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.shopto.net/en/ps5hw02-playstation-5-digital-console-p195341/' - } - ], - name: 'shopto' + currency: '£', + labels: { + inStock: { + container: '.orderbox_inventory', + text: ['In Stock'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.shopto.net/en/ps5du00-dualsense-controller-playstation-5-p195100/', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.shopto.net/en/ps5hw01-playstation-5-console-p191472/', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.shopto.net/en/ps5hw02-playstation-5-digital-console-p195341/', + }, + ], + name: 'shopto', }; diff --git a/src/store/model/smythstoys-ie.ts b/src/store/model/smythstoys-ie.ts index ce2b61c510..24d848333e 100644 --- a/src/store/model/smythstoys-ie.ts +++ b/src/store/model/smythstoys-ie.ts @@ -1,38 +1,38 @@ import {Store} from './store'; export const SmythsToysIE: Store = { - currency: '€', - disableAdBlocker: true, - labels: { - inStock: { - container: '#addToCartButton', - text: ['add to basket'] - }, - maxPrice: { - container: '.price_tag', - euroFormat: false - }, - outOfStock: { - container: '.instoreMessage', - text: ['out of stock'] - } - }, - links: [ - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.smythstoys.com/ie/en-ie/video-games-and-tablets/xbox-gaming/xbox-series-x-%7c-s/xbox-series-x-%7c-s-consoles/xbox-series-x-1tb-console/p/192012' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.smythstoys.com/ie/en-ie/video-games-and-tablets/playstation-5/playstation-5-consoles/playstation-5-console/p/191259' - } - ], - name: 'smythstoys-ie', - waitUntil: 'domcontentloaded' + currency: '€', + disableAdBlocker: true, + labels: { + inStock: { + container: '#addToCartButton', + text: ['add to basket'], + }, + maxPrice: { + container: '.price_tag', + euroFormat: false, + }, + outOfStock: { + container: '.instoreMessage', + text: ['out of stock'], + }, + }, + links: [ + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.smythstoys.com/ie/en-ie/video-games-and-tablets/xbox-gaming/xbox-series-x-%7c-s/xbox-series-x-%7c-s-consoles/xbox-series-x-1tb-console/p/192012', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.smythstoys.com/ie/en-ie/video-games-and-tablets/playstation-5/playstation-5-consoles/playstation-5-console/p/191259', + }, + ], + name: 'smythstoys-ie', + waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/smythstoys.ts b/src/store/model/smythstoys.ts index d8f37aac30..f44ed50a45 100644 --- a/src/store/model/smythstoys.ts +++ b/src/store/model/smythstoys.ts @@ -1,43 +1,43 @@ import {Store} from './store'; export const SmythsToys: Store = { - currency: '£', - labels: { - inStock: { - container: '#addToCartButton', - text: ['add to basket'] - }, - maxPrice: { - container: '.price_tag', - euroFormat: false - }, - outOfStock: { - container: '.instoreMessage', - text: ['out of stock'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.smythstoys.com/uk/en-gb/video-games-and-tablets/video-games/call-of-duty-video-games/call-of-duty-black-ops-cold-war/call-of-duty-black-ops-cold-war-ps5/p/191951' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.smythstoys.com/uk/en-gb/video-games-and-tablets/playstation-5/playstation-5-consoles/playstation-5-console/p/191259' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.smythstoys.com/uk/en-gb/video-games-and-tablets/playstation-5/playstation-5-consoles/playstation-5-digital-edition-console/p/191430' - } - ], - name: 'smythstoys' + currency: '£', + labels: { + inStock: { + container: '#addToCartButton', + text: ['add to basket'], + }, + maxPrice: { + container: '.price_tag', + euroFormat: false, + }, + outOfStock: { + container: '.instoreMessage', + text: ['out of stock'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.smythstoys.com/uk/en-gb/video-games-and-tablets/video-games/call-of-duty-video-games/call-of-duty-black-ops-cold-war/call-of-duty-black-ops-cold-war-ps5/p/191951', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.smythstoys.com/uk/en-gb/video-games-and-tablets/playstation-5/playstation-5-consoles/playstation-5-console/p/191259', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.smythstoys.com/uk/en-gb/video-games-and-tablets/playstation-5/playstation-5-consoles/playstation-5-digital-edition-console/p/191430', + }, + ], + name: 'smythstoys', }; diff --git a/src/store/model/spielegrotte.ts b/src/store/model/spielegrotte.ts index d166d6d549..26f95cffcf 100644 --- a/src/store/model/spielegrotte.ts +++ b/src/store/model/spielegrotte.ts @@ -1,45 +1,45 @@ import {Store} from './store'; export const Spielegrotte: Store = { - currency: '€', - labels: { - inStock: [ - { - container: - 'html > body > table > tbody > tr > td > div > table > tbody > tr > td > center > table > tbody > tr > td > a.klein > img', - text: [''] - } - ], - maxPrice: { - container: - 'html > body > table > tbody > tr > td > div > table > tbody > tr > td > center > table > tbody > tr > td > font > b', - euroFormat: true - }, - outOfStock: { - container: - 'html > body > table > tbody > tr > td > div > table > tbody > tr > td > center > font > b', - text: ['Dieses Produkt ist leider neu nicht mehr verfügbar'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: 'https://www.spielegrotte.de/index.php?kat=100056&anr=54288' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.spielegrotte.de/index.php?kat=100100&anr=56005' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.spielegrotte.de/index.php?kat=100100&anr=56006' - } - ], - name: 'spielegrotte' + currency: '€', + labels: { + inStock: [ + { + container: + 'html > body > table > tbody > tr > td > div > table > tbody > tr > td > center > table > tbody > tr > td > a.klein > img', + text: [''], + }, + ], + maxPrice: { + container: + 'html > body > table > tbody > tr > td > div > table > tbody > tr > td > center > table > tbody > tr > td > font > b', + euroFormat: true, + }, + outOfStock: { + container: + 'html > body > table > tbody > tr > td > div > table > tbody > tr > td > center > font > b', + text: ['Dieses Produkt ist leider neu nicht mehr verfügbar'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.spielegrotte.de/index.php?kat=100056&anr=54288', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.spielegrotte.de/index.php?kat=100100&anr=56005', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.spielegrotte.de/index.php?kat=100100&anr=56006', + }, + ], + name: 'spielegrotte', }; diff --git a/src/store/model/store.ts b/src/store/model/store.ts index 2bdcb4ef33..325af69fed 100644 --- a/src/store/model/store.ts +++ b/src/store/model/store.ts @@ -1,238 +1,238 @@ import {Browser, LoadEvent} from 'puppeteer'; export type Element = { - container?: string; - text: string[]; + container?: string; + text: string[]; }; export type Pricing = { - container: string; - euroFormat?: boolean; + container: string; + euroFormat?: boolean; }; export type Brand = - | 'test:brand' - | 'captcha-deterrent' - | 'amd' - | 'asrock' - | 'asus' - | 'colorful' - | 'corsair' - | 'evga' - | 'gainward' - | 'galax' - | 'gigabyte' - | 'inno3d' - | 'kfa2' - | 'leadtek' - | 'microsoft' - | 'msi' - | 'nvidia' - | 'palit' - | 'pny' - | 'sapphire' - | 'sony' - | 'xfx' - | 'powercolor' - | 'zotac'; + | 'test:brand' + | 'captcha-deterrent' + | 'amd' + | 'asrock' + | 'asus' + | 'colorful' + | 'corsair' + | 'evga' + | 'gainward' + | 'galax' + | 'gigabyte' + | 'inno3d' + | 'kfa2' + | 'leadtek' + | 'microsoft' + | 'msi' + | 'nvidia' + | 'palit' + | 'pny' + | 'sapphire' + | 'sony' + | 'xfx' + | 'powercolor' + | 'zotac'; export type Series = - | 'test:series' - | 'captcha-deterrent' - | '3060ti' - | '3070' - | '3080' - | '3090' - | 'darkhero' - | 'rx6800' - | 'rx6800xt' - | 'rx6900xt' - | 'ryzen5600' - | 'ryzen5800' - | 'ryzen5900' - | 'ryzen5950' - | 'sonyps5c' - | 'sonyps5de' - | 'sf' - | 'xboxsx' - | 'xboxss'; + | 'test:series' + | 'captcha-deterrent' + | '3060ti' + | '3070' + | '3080' + | '3090' + | 'darkhero' + | 'rx6800' + | 'rx6800xt' + | 'rx6900xt' + | 'ryzen5600' + | 'ryzen5800' + | 'ryzen5900' + | 'ryzen5950' + | 'sonyps5c' + | 'sonyps5de' + | 'sf' + | 'xboxsx' + | 'xboxss'; export type Model = - | 'test:model' - | 'captcha-deterrent' - | '5600x' - | '5800x' - | '5900x' - | '5950x' - | '600 platinum' - | '750 platinum' - | 'amd reference' - | 'amp extreme holo' - | 'amp holo' - | 'aorus master' - | 'aorus master type-c' - | 'aorus xtreme' - | 'aorus xtreme waterforce' - | 'aorus xtreme waterforce wb' - | 'aorus' - | 'battle-ax' - | 'challenger' - | 'challenger pro' - | 'crosshair viii' - | 'dual fan' - | 'dual oc' - | 'dual' - | 'dual mini' - | 'dual mini oc' - | 'eagle oc' - | 'eagle' - | 'ekwb' - | 'founders edition' - | 'ftw3' - | 'ftw3 black' - | 'ftw3 ultra' - | 'ftw3 ultra hybrid' - | 'ftw3 ultra hydro copper' - | 'gamerock' - | 'gamerock oc' - | 'gaming oc' - | 'gaming oc pro' - | 'gaming pro oc' - | 'gaming pro' - | 'gaming trio' - | 'gaming x trio' - | 'gaming x3' - | 'ghost oc' - | 'suprim x' - | 'suprim' - | 'gaming' - | 'hurricane' - | 'ichill x2' - | 'ichill x3' - | 'ichill x4' - | 'ichill frostbite' - | 'igame advanced' - | 'igame advanced oc' - | 'igame ultra oc' - | 'igame vulcan oc' - | 'ko oc' - | 'ko' - | 'nitro+' - | 'nitro+ se' - | 'nitro oc se' - | 'nitro oc' - | 'phantom gaming' - | 'phantom gs' - | 'phoenix gs oc' - | 'phoenix gs' - | 'phoenix' - | 'ps5 console' - | 'ps5 digital' - | 'pulse' - | 'red devil' - | 'red dragon' - | 'sg oc' - | 'sg' - | 'merc' - | 'strix lc' - | 'strix oc' - | 'strix' - | 'strix oc white' - | 'strix white' - | 'taichi' - | 'trinity oc' - | 'trinity' - | 'tuf oc' - | 'tuf' - | 'turbo' - | 'twin edge oc white' - | 'twin edge oc' - | 'twin edge' - | 'twin x2 oc' - | 'twin x2' - | 'uprising' - | 'ventus 2x oc' - | 'ventus 2x' - | 'ventus 3x oc' - | 'ventus 3x' - | 'vision oc' - | 'vision' - | 'xbox series s' - | 'xbox series x' - | 'xc black' - | 'xc gaming' - | 'xc3 black' - | 'xc3 ultra' - | 'xc3 ultra hybrid' - | 'xc3' - | 'xlr8 epic x' - | 'xlr8 gaming' - | 'xlr8 revel' - | 'xlr8 uprising'; + | 'test:model' + | 'captcha-deterrent' + | '5600x' + | '5800x' + | '5900x' + | '5950x' + | '600 platinum' + | '750 platinum' + | 'amd reference' + | 'amp extreme holo' + | 'amp holo' + | 'aorus master' + | 'aorus master type-c' + | 'aorus xtreme' + | 'aorus xtreme waterforce' + | 'aorus xtreme waterforce wb' + | 'aorus' + | 'battle-ax' + | 'challenger' + | 'challenger pro' + | 'crosshair viii' + | 'dual fan' + | 'dual oc' + | 'dual' + | 'dual mini' + | 'dual mini oc' + | 'eagle oc' + | 'eagle' + | 'ekwb' + | 'founders edition' + | 'ftw3' + | 'ftw3 black' + | 'ftw3 ultra' + | 'ftw3 ultra hybrid' + | 'ftw3 ultra hydro copper' + | 'gamerock' + | 'gamerock oc' + | 'gaming oc' + | 'gaming oc pro' + | 'gaming pro oc' + | 'gaming pro' + | 'gaming trio' + | 'gaming x trio' + | 'gaming x3' + | 'ghost oc' + | 'suprim x' + | 'suprim' + | 'gaming' + | 'hurricane' + | 'ichill x2' + | 'ichill x3' + | 'ichill x4' + | 'ichill frostbite' + | 'igame advanced' + | 'igame advanced oc' + | 'igame ultra oc' + | 'igame vulcan oc' + | 'ko oc' + | 'ko' + | 'nitro+' + | 'nitro+ se' + | 'nitro oc se' + | 'nitro oc' + | 'phantom gaming' + | 'phantom gs' + | 'phoenix gs oc' + | 'phoenix gs' + | 'phoenix' + | 'ps5 console' + | 'ps5 digital' + | 'pulse' + | 'red devil' + | 'red dragon' + | 'sg oc' + | 'sg' + | 'merc' + | 'strix lc' + | 'strix oc' + | 'strix' + | 'strix oc white' + | 'strix white' + | 'taichi' + | 'trinity oc' + | 'trinity' + | 'tuf oc' + | 'tuf' + | 'turbo' + | 'twin edge oc white' + | 'twin edge oc' + | 'twin edge' + | 'twin x2 oc' + | 'twin x2' + | 'uprising' + | 'ventus 2x oc' + | 'ventus 2x' + | 'ventus 3x oc' + | 'ventus 3x' + | 'vision oc' + | 'vision' + | 'xbox series s' + | 'xbox series x' + | 'xc black' + | 'xc gaming' + | 'xc3 black' + | 'xc3 ultra' + | 'xc3 ultra hybrid' + | 'xc3' + | 'xlr8 epic x' + | 'xlr8 gaming' + | 'xlr8 revel' + | 'xlr8 uprising'; export type Link = { - brand: Brand; - cartUrl?: string; - itemNumber?: string; - labels?: Labels; - model: Model; - openCartAction?: (browser: Browser) => Promise; - price?: number | null; - series: Series; - screenshot?: string; - url: string; + brand: Brand; + cartUrl?: string; + itemNumber?: string; + labels?: Labels; + model: Model; + openCartAction?: (browser: Browser) => Promise; + price?: number | null; + series: Series; + screenshot?: string; + url: string; }; export type LabelQuery = Element[] | Element | string[]; export type Labels = { - bannedSeller?: LabelQuery; - captcha?: LabelQuery; - container?: string; - inStock?: LabelQuery; - outOfStock?: LabelQuery; - maxPrice?: Pricing; + bannedSeller?: LabelQuery; + captcha?: LabelQuery; + container?: string; + inStock?: LabelQuery; + outOfStock?: LabelQuery; + maxPrice?: Pricing; }; export type CaptchaDeterrent = { - hardLinks?: string[]; - searchUrl?: string; - searchTerms?: string[]; + hardLinks?: string[]; + searchUrl?: string; + searchTerms?: string[]; }; export type StatusCodeRangeArray = Array; export type Store = { - realTimeInventoryLookup?: (itemNumber: string) => Promise; - /** - * The range of status codes which will trigger backoff, i.e. an increasing - * delay between requests. Setting an empty array will disable the feature. - * If not defined, the default range will be used: 403. - */ - backoffStatusCodes?: StatusCodeRangeArray; - disableAdBlocker?: boolean; - links: Link[]; - linksBuilder?: { - builder: (docElement: cheerio.Cheerio, series: Series) => Link[]; - ttl?: number; - urls: Array<{series: Series; url: string | string[]}>; - }; - labels: Labels; - name: string; - currency: '£' | '$' | '€' | 'R$' | 'kr.' | ''; - setupAction?: (browser: Browser) => void; - /** - * The range of status codes which considered successful, i.e. without error - * allowing request parsing to continue. Setting an empty array will cause - * all requests to fail. If not defined, the default range will be used: - * 0 -> 399 inclusive. - */ - successStatusCodes?: StatusCodeRangeArray; - waitUntil?: LoadEvent; - minPageSleep?: number; - maxPageSleep?: number; + realTimeInventoryLookup?: (itemNumber: string) => Promise; + /** + * The range of status codes which will trigger backoff, i.e. an increasing + * delay between requests. Setting an empty array will disable the feature. + * If not defined, the default range will be used: 403. + */ + backoffStatusCodes?: StatusCodeRangeArray; + disableAdBlocker?: boolean; + links: Link[]; + linksBuilder?: { + builder: (docElement: cheerio.Cheerio, series: Series) => Link[]; + ttl?: number; + urls: Array<{series: Series; url: string | string[]}>; + }; + labels: Labels; + name: string; + currency: '£' | '$' | '€' | 'R$' | 'kr.' | ''; + setupAction?: (browser: Browser) => void; + /** + * The range of status codes which considered successful, i.e. without error + * allowing request parsing to continue. Setting an empty array will cause + * all requests to fail. If not defined, the default range will be used: + * 0 -> 399 inclusive. + */ + successStatusCodes?: StatusCodeRangeArray; + waitUntil?: LoadEvent; + minPageSleep?: number; + maxPageSleep?: number; - proxyList?: string[]; - currentProxyIndex?: number; - captchaDeterrent?: CaptchaDeterrent; + proxyList?: string[]; + currentProxyIndex?: number; + captchaDeterrent?: CaptchaDeterrent; }; diff --git a/src/store/model/storm.ts b/src/store/model/storm.ts index 392681553c..4257c14807 100644 --- a/src/store/model/storm.ts +++ b/src/store/model/storm.ts @@ -1,86 +1,86 @@ import {Store} from './store'; export const StormComputers: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: 'div.summary.entry-summary > form > button', - text: ['ADD TO CART'] - }, - maxPrice: { - container: '.price', - euroFormat: false - }, - outOfStock: { - container: 'div.summary.entry-summary > p.stock.out-of-stock', - text: ['Out of stock', 'pre-order', 'preorder'] - } - }, - links: [ - { - brand: 'colorful', - model: 'igame ultra oc', - series: '3080', - url: - 'https://www.stormcomputers.com.au/product/colorful-igame-rtx-3080-ultra/' - }, - { - brand: 'colorful', - model: 'igame advanced oc', - series: '3080', - url: - 'https://www.stormcomputers.com.au/product/colorful-igame-geforce-igame-rtx-3080-advanced-10gb-graphics-card/' - }, - { - brand: 'colorful', - model: 'igame vulcan oc', - series: '3080', - url: - 'https://www.stormcomputers.com.au/product/igame-geforce-rtx-3080-vulcan-oc-10g-v/' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.stormcomputers.com.au/product/asus-geforce-rtx3090-rog-strix-gaming-oc-24gb-gddr6x-rog-strix-rtx3090-o24g-gaming/' - }, - { - brand: 'colorful', - model: 'battle-ax', - series: '3090', - url: - 'https://www.stormcomputers.com.au/product/colorful-geforce-rtx-3090-nb/' - }, - { - brand: 'colorful', - model: 'igame advanced oc', - series: '3090', - url: - 'https://www.stormcomputers.com.au/product/colorful-igame-geforce-rtx-3090-advanced-oc/' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.stormcomputers.com.au/product/amd-ryzen-9-5900x-zen-3-cpu-12c-24t-tdp-105w-boost-up-to-4-8ghz-base-3-7ghz-total-cache-70mb-no-cooler/' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.stormcomputers.com.au/product/amd-ryzen-7-5800x-zen-3-cpu-8c-16t-tdp-105w-boost-up-to-4-7ghz-base-3-8ghz-total-cache-36mb-no-cooler/' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.stormcomputers.com.au/product/amd-ryzen-5-5600x-zen-3-cpu-6c-12t-tdp-65w-boost-up-to-4-6ghz-base-3-7ghz-total-cache-35mb-wraith-stealth-cooler/' - } - ], - name: 'storm-computer' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: 'div.summary.entry-summary > form > button', + text: ['ADD TO CART'], + }, + maxPrice: { + container: '.price', + euroFormat: false, + }, + outOfStock: { + container: 'div.summary.entry-summary > p.stock.out-of-stock', + text: ['Out of stock', 'pre-order', 'preorder'], + }, + }, + links: [ + { + brand: 'colorful', + model: 'igame ultra oc', + series: '3080', + url: + 'https://www.stormcomputers.com.au/product/colorful-igame-rtx-3080-ultra/', + }, + { + brand: 'colorful', + model: 'igame advanced oc', + series: '3080', + url: + 'https://www.stormcomputers.com.au/product/colorful-igame-geforce-igame-rtx-3080-advanced-10gb-graphics-card/', + }, + { + brand: 'colorful', + model: 'igame vulcan oc', + series: '3080', + url: + 'https://www.stormcomputers.com.au/product/igame-geforce-rtx-3080-vulcan-oc-10g-v/', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.stormcomputers.com.au/product/asus-geforce-rtx3090-rog-strix-gaming-oc-24gb-gddr6x-rog-strix-rtx3090-o24g-gaming/', + }, + { + brand: 'colorful', + model: 'battle-ax', + series: '3090', + url: + 'https://www.stormcomputers.com.au/product/colorful-geforce-rtx-3090-nb/', + }, + { + brand: 'colorful', + model: 'igame advanced oc', + series: '3090', + url: + 'https://www.stormcomputers.com.au/product/colorful-igame-geforce-rtx-3090-advanced-oc/', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.stormcomputers.com.au/product/amd-ryzen-9-5900x-zen-3-cpu-12c-24t-tdp-105w-boost-up-to-4-8ghz-base-3-7ghz-total-cache-70mb-no-cooler/', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.stormcomputers.com.au/product/amd-ryzen-7-5800x-zen-3-cpu-8c-16t-tdp-105w-boost-up-to-4-7ghz-base-3-8ghz-total-cache-36mb-no-cooler/', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.stormcomputers.com.au/product/amd-ryzen-5-5600x-zen-3-cpu-6c-12t-tdp-65w-boost-up-to-4-6ghz-base-3-7ghz-total-cache-35mb-wraith-stealth-cooler/', + }, + ], + name: 'storm-computer', }; diff --git a/src/store/model/target.ts b/src/store/model/target.ts index 1f285257cb..2c74f9cba5 100644 --- a/src/store/model/target.ts +++ b/src/store/model/target.ts @@ -1,48 +1,48 @@ import {Store} from './store'; export const Target: Store = { - currency: '$', - labels: { - inStock: [ - { - container: '[data-test="preorderButton"]', - text: ['Preorder now'] - }, - { - container: '[data-test="shipItButton"]', - text: ['Ship it'] - } - ], - maxPrice: { - container: '[data-test="product-price"]' - } - }, - links: [ - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.target.com/p/playstation-5-console/-/A-81114595' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.target.com/p/playstation-5-digital-edition-console/-/A-81114596' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.target.com/p/xbox-series-x-console/-/A-80790841' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.target.com/p/xbox-series-s-console/-/A-80790842' - } - ], - name: 'target' + currency: '$', + labels: { + inStock: [ + { + container: '[data-test="preorderButton"]', + text: ['Preorder now'], + }, + { + container: '[data-test="shipItButton"]', + text: ['Ship it'], + }, + ], + maxPrice: { + container: '[data-test="product-price"]', + }, + }, + links: [ + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.target.com/p/playstation-5-console/-/A-81114595', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.target.com/p/playstation-5-digital-edition-console/-/A-81114596', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.target.com/p/xbox-series-x-console/-/A-80790841', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.target.com/p/xbox-series-s-console/-/A-80790842', + }, + ], + name: 'target', }; diff --git a/src/store/model/tesco-ie.ts b/src/store/model/tesco-ie.ts index 8ea73e48ab..35ec9937e0 100644 --- a/src/store/model/tesco-ie.ts +++ b/src/store/model/tesco-ie.ts @@ -1,34 +1,33 @@ import {Store} from './store'; export const TescoIE: Store = { - currency: '€', - labels: { - inStock: { - container: 'input.submit:nth-child(5)', - text: ['add'] - }, - maxPrice: { - container: '.linePriceAbbr' - }, - outOfStock: { - container: '.noStockTxtCentered > strong:nth-child(1)', - text: ['Sorry, this product is currently not available'] - } - }, - links: [ - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://secure.tesco.ie/groceries/Product/Details/?id=307835209' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: 'https://www.tesco.ie/groceries/product/details/?id=307756010' - } - ], - name: 'tesco-ie' + currency: '€', + labels: { + inStock: { + container: 'input.submit:nth-child(5)', + text: ['add'], + }, + maxPrice: { + container: '.linePriceAbbr', + }, + outOfStock: { + container: '.noStockTxtCentered > strong:nth-child(1)', + text: ['Sorry, this product is currently not available'], + }, + }, + links: [ + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://secure.tesco.ie/groceries/Product/Details/?id=307835209', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.tesco.ie/groceries/product/details/?id=307756010', + }, + ], + name: 'tesco-ie', }; diff --git a/src/store/model/topachat.ts b/src/store/model/topachat.ts index ac33e2da5a..fd5f559ea9 100644 --- a/src/store/model/topachat.ts +++ b/src/store/model/topachat.ts @@ -1,297 +1,297 @@ import {Store} from './store'; export const TopAchat: Store = { - currency: '€', - labels: { - inStock: { - container: 'input.cart.button[value="Ajouter au panier"]', - text: [''] - }, - maxPrice: { - container: 'span.priceFinal.fp44' - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in11019393.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005183.html' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005509.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005184.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005320.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005070.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005289.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005319.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005071.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005199.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005262.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005263.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005223.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005222.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005225.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005224.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005291.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005292.html' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005289.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005290.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005334.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005296.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005297.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005293.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005294.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005295.html' - }, - { - brand: 'gainward', - model: 'phoenix', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005267.html' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005268.html' - }, - { - brand: 'gainward', - model: 'phoenix', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005269.html' - }, - { - brand: 'gainward', - model: 'phoenix gs', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005270.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005228.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005227.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005226.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005229.html' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005271.html' - }, - { - brand: 'palit', - model: 'gaming pro oc', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005272.html' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005273.html' - }, - { - brand: 'palit', - model: 'gaming pro oc', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005266.html' - }, - { - brand: 'kfa2', - model: 'sg', - series: '3080', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005256.html' - }, - { - brand: 'kfa2', - model: 'sg', - series: '3090', - url: - 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005257.html' - } - ], - name: 'topachat' + currency: '€', + labels: { + inStock: { + container: 'input.cart.button[value="Ajouter au panier"]', + text: [''], + }, + maxPrice: { + container: 'span.priceFinal.fp44', + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in11019393.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005183.html', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005509.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005184.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005320.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005070.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005289.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005319.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005071.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005199.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005262.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005263.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005223.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005222.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005225.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005224.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005291.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005292.html', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005289.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005290.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005334.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005296.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005297.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005293.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005294.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005295.html', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005267.html', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005268.html', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005269.html', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005270.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005228.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005227.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005226.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005229.html', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005271.html', + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005272.html', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005273.html', + }, + { + brand: 'palit', + model: 'gaming pro oc', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005266.html', + }, + { + brand: 'kfa2', + model: 'sg', + series: '3080', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005256.html', + }, + { + brand: 'kfa2', + model: 'sg', + series: '3090', + url: + 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005257.html', + }, + ], + name: 'topachat', }; diff --git a/src/store/model/toysrus.ts b/src/store/model/toysrus.ts index 0ce43d3637..710dfa6a77 100644 --- a/src/store/model/toysrus.ts +++ b/src/store/model/toysrus.ts @@ -1,49 +1,49 @@ import {Store} from './store'; export const ToysRUs: Store = { - currency: '$', - labels: { - inStock: { - container: 'li.b-product_status', - text: ['in stock'] - }, - maxPrice: { - container: '.b-price-value' - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.toysrus.ca/en/Hasbro-Gaming---Operation-Game---styles-may-vary/99D52A22.html' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.toysrus.ca/en/PlayStation-5-Console/C443A89B.html' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.toysrus.ca/en/PlayStation-5-Digital-Edition/E4A019FE.html' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.toysrus.ca/en/XBOX-Series-X-Console/84D9A92D.html' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.toysrus.ca/en/XBOX-Series-S-Console/A43E2AF7.html' - } - ], - name: 'toysrus' + currency: '$', + labels: { + inStock: { + container: 'li.b-product_status', + text: ['in stock'], + }, + maxPrice: { + container: '.b-price-value', + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.toysrus.ca/en/Hasbro-Gaming---Operation-Game---styles-may-vary/99D52A22.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.toysrus.ca/en/PlayStation-5-Console/C443A89B.html', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.toysrus.ca/en/PlayStation-5-Digital-Edition/E4A019FE.html', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.toysrus.ca/en/XBOX-Series-X-Console/84D9A92D.html', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.toysrus.ca/en/XBOX-Series-S-Console/A43E2AF7.html', + }, + ], + name: 'toysrus', }; diff --git a/src/store/model/umart.ts b/src/store/model/umart.ts index c4eadb093b..535156d03f 100644 --- a/src/store/model/umart.ts +++ b/src/store/model/umart.ts @@ -1,156 +1,156 @@ import {Store} from './store'; export const Umart: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: '#youhuo_delivery', - text: ['in stock'] - }, - maxPrice: { - container: '.goods-price', - euroFormat: false - }, - outOfStock: { - container: 'div.price-box > div.stock-label', - text: ['out of stock'] - } - }, - links: [ - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.umart.com.au/Asus-ROG-Strix-GeForce-RTX-3080-10G-Graphics-Card_56894G.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.umart.com.au/Asus-ROG-Strix-GeForce-RTX-3080-OC-10G-Graphics-Card_56893G.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.umart.com.au/Asus-GeForce-RTX-3080-TUF-Gaming-10G-Graphics-Card_56792G.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.umart.com.au/Asus-GeForce-RTX-3080-TUF-Gaming-OC-10G-Graphics-Card_56895G.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.umart.com.au/EVGA-GeForce-RTX-3080-FTW3-Ultra-Gaming-10G-Graphics-Card_57050G.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.umart.com.au/EVGA-GeForce-RTX-3080-XC3-Ultra-Gaming-10G-Graphics-Card_57049G.html' - }, - { - brand: 'galax', - model: 'sg oc', - series: '3080', - url: - 'https://www.umart.com.au/Galax-GeForce-RTX-3080-SG--1-Click-OC--10G-Graphics-Card_56817G.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.umart.com.au/Gigabyte-Aorus-GeForce-RTX-3080-Master-10G-Graphics-Card_56885G.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.umart.com.au/Gigabyte-AORUS-GeForce-RTX-3080-Xtreme-10G-Graphics-Card_56969G.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3080', - url: - 'https://www.umart.com.au/Gigabyte-Aorus-GeForce-RTX-3080-Xtreme-Waterforce-10G-Graphics-Card_57650G.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://www.umart.com.au/Gigabyte-GeForce-RTX-3080-Xtreme-WaterForce-WB-10G-Graphics-Card_57486G.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: - 'https://www.umart.com.au/Gigabyte-GeForce-RTX-3080-Eagle-10G-Graphics-Card_57335G.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.umart.com.au/Gigabyte-GeForce-RTX-3080-Eagle-OC-10G-Graphics-Card_56791G.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.umart.com.au/Gigabyte-GeForce-RTX-3080-Gaming-OC-10G-Graphics-Card_56790G.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.umart.com.au/Gigabyte-GeForce-RTX-3080-Vision-10G-OC-Graphics-Card_56886G.html' - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080', - url: - 'https://www.umart.com.au/Inno3D-GeForce-RTX-3080-iCHILL-X4-10G-Graphics-Card_56962G.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.umart.com.au/MSI-GeForce-RTX-3080-Gaming-X-Trio-10G-Graphics-Card_56788G.html' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.umart.com.au/MSI-GeForce-RTX-3080-Suprim-X-10G-Graphics-Card_57617G.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.umart.com.au/MSI-GeForce-RTX-3080-Ventus-3X-10G-Graphics-Card_56789G.html' - } - ], - name: 'umart' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: '#youhuo_delivery', + text: ['in stock'], + }, + maxPrice: { + container: '.goods-price', + euroFormat: false, + }, + outOfStock: { + container: 'div.price-box > div.stock-label', + text: ['out of stock'], + }, + }, + links: [ + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.umart.com.au/Asus-ROG-Strix-GeForce-RTX-3080-10G-Graphics-Card_56894G.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.umart.com.au/Asus-ROG-Strix-GeForce-RTX-3080-OC-10G-Graphics-Card_56893G.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.umart.com.au/Asus-GeForce-RTX-3080-TUF-Gaming-10G-Graphics-Card_56792G.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.umart.com.au/Asus-GeForce-RTX-3080-TUF-Gaming-OC-10G-Graphics-Card_56895G.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.umart.com.au/EVGA-GeForce-RTX-3080-FTW3-Ultra-Gaming-10G-Graphics-Card_57050G.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.umart.com.au/EVGA-GeForce-RTX-3080-XC3-Ultra-Gaming-10G-Graphics-Card_57049G.html', + }, + { + brand: 'galax', + model: 'sg oc', + series: '3080', + url: + 'https://www.umart.com.au/Galax-GeForce-RTX-3080-SG--1-Click-OC--10G-Graphics-Card_56817G.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.umart.com.au/Gigabyte-Aorus-GeForce-RTX-3080-Master-10G-Graphics-Card_56885G.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.umart.com.au/Gigabyte-AORUS-GeForce-RTX-3080-Xtreme-10G-Graphics-Card_56969G.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3080', + url: + 'https://www.umart.com.au/Gigabyte-Aorus-GeForce-RTX-3080-Xtreme-Waterforce-10G-Graphics-Card_57650G.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://www.umart.com.au/Gigabyte-GeForce-RTX-3080-Xtreme-WaterForce-WB-10G-Graphics-Card_57486G.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: + 'https://www.umart.com.au/Gigabyte-GeForce-RTX-3080-Eagle-10G-Graphics-Card_57335G.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.umart.com.au/Gigabyte-GeForce-RTX-3080-Eagle-OC-10G-Graphics-Card_56791G.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.umart.com.au/Gigabyte-GeForce-RTX-3080-Gaming-OC-10G-Graphics-Card_56790G.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.umart.com.au/Gigabyte-GeForce-RTX-3080-Vision-10G-OC-Graphics-Card_56886G.html', + }, + { + brand: 'inno3d', + model: 'ichill x4', + series: '3080', + url: + 'https://www.umart.com.au/Inno3D-GeForce-RTX-3080-iCHILL-X4-10G-Graphics-Card_56962G.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.umart.com.au/MSI-GeForce-RTX-3080-Gaming-X-Trio-10G-Graphics-Card_56788G.html', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.umart.com.au/MSI-GeForce-RTX-3080-Suprim-X-10G-Graphics-Card_57617G.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.umart.com.au/MSI-GeForce-RTX-3080-Ventus-3X-10G-Graphics-Card_56789G.html', + }, + ], + name: 'umart', }; diff --git a/src/store/model/unieuro.ts b/src/store/model/unieuro.ts index 4368804b26..961ead8ec9 100644 --- a/src/store/model/unieuro.ts +++ b/src/store/model/unieuro.ts @@ -1,46 +1,46 @@ import {Store} from './store'; export const Unieuro: Store = { - currency: '€', - labels: { - captcha: { - container: 'body', - text: ['Too Many Requests.'] - }, - inStock: { - container: '.price-container', - text: ['Aggiungi al carrello'] - } - }, - links: [ - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.unieuro.it/online/Playstation-5/PlayStation-5-pidSONPS5DISC' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.unieuro.it/online/Playstation-5/PlayStation-5-Digital-Edition-pidSONPS5DIGITAL' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: - 'https://www.unieuro.it/online/Xbox-Series/Xbox-Series-X-pidDBLRRT00008' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: - 'https://www.unieuro.it/online/Xbox-Series/Xbox-Series-S-pidDBLRRS00008' - } - ], - name: 'unieuro' + currency: '€', + labels: { + captcha: { + container: 'body', + text: ['Too Many Requests.'], + }, + inStock: { + container: '.price-container', + text: ['Aggiungi al carrello'], + }, + }, + links: [ + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: + 'https://www.unieuro.it/online/Playstation-5/PlayStation-5-pidSONPS5DISC', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.unieuro.it/online/Playstation-5/PlayStation-5-Digital-Edition-pidSONPS5DIGITAL', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: + 'https://www.unieuro.it/online/Xbox-Series/Xbox-Series-X-pidDBLRRT00008', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: + 'https://www.unieuro.it/online/Xbox-Series/Xbox-Series-S-pidDBLRRS00008', + }, + ], + name: 'unieuro', }; diff --git a/src/store/model/very.ts b/src/store/model/very.ts index 4865cf6906..3c42bc031b 100644 --- a/src/store/model/very.ts +++ b/src/store/model/very.ts @@ -3,97 +3,93 @@ import {logger} from '../../logger'; import {parseCard} from './helpers/card'; export const Very: Store = { - currency: '£', - labels: { - inStock: { - container: '.stockMessaging .indicator', - text: ['available', 'low stock'] - }, - maxPrice: { - container: '.priceNow', - euroFormat: false // Note: Very uses non-euroFromat as price seperator - }, - outOfStock: { - container: '.stockMessaging .indicator', - text: ['pre-order'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.very.co.uk/msi-geforce-gtx-1660-ti-gaming-x-6g-graphics-card/1600350984.prd' - } - ], - linksBuilder: { - builder: (docElement, series) => { - const productElements = docElement.find('.productList .product'); - const links: Link[] = []; - for (let i = 0; i < productElements.length; i++) { - const productElement = productElements.eq(i); - const titleElement = productElement - .find('.productTitle') - .first(); - const title = titleElement.text()?.replace(/\n/g, ' ').trim(); + currency: '£', + labels: { + inStock: { + container: '.stockMessaging .indicator', + text: ['available', 'low stock'], + }, + maxPrice: { + container: '.priceNow', + euroFormat: false, // Note: Very uses non-euroFromat as price seperator + }, + outOfStock: { + container: '.stockMessaging .indicator', + text: ['pre-order'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.very.co.uk/msi-geforce-gtx-1660-ti-gaming-x-6g-graphics-card/1600350984.prd', + }, + ], + linksBuilder: { + builder: (docElement, series) => { + const productElements = docElement.find('.productList .product'); + const links: Link[] = []; + for (let i = 0; i < productElements.length; i++) { + const productElement = productElements.eq(i); + const titleElement = productElement.find('.productTitle').first(); + const title = titleElement.text()?.replace(/\n/g, ' ').trim(); - if ( - !title || - ['RTX', series] - .map((x) => - title.toLowerCase().includes(x.toLowerCase()) - ) - .filter((x) => !x).length > 0 - ) { - continue; - } + if ( + !title || + ['RTX', series] + .map(x => title.toLowerCase().includes(x.toLowerCase())) + .filter(x => !x).length > 0 + ) { + continue; + } - const url = titleElement.attr()?.href; + const url = titleElement.attr()?.href; - if (!url) { - continue; - } + if (!url) { + continue; + } - const card = parseCard(title); + const card = parseCard(title); - if (card) { - links.push({ - brand: card.brand as any, - model: card.model, - series, - url - }); - } else { - logger.error(`Failed to parse card: ${title}`, {url}); - } - } + if (card) { + links.push({ + brand: card.brand as any, + model: card.model, + series, + url, + }); + } else { + logger.error(`Failed to parse card: ${title}`, {url}); + } + } - return links; - }, - ttl: 300000, - urls: [ - { - series: '3060ti', - url: - 'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100' - }, - { - series: '3070', - url: - 'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100' - }, - { - series: '3080', - url: - 'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100' - }, - { - series: '3090', - url: - 'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100' - } - ] - }, - name: 'very' + return links; + }, + ttl: 300000, + urls: [ + { + series: '3060ti', + url: + 'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100', + }, + { + series: '3070', + url: + 'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100', + }, + { + series: '3080', + url: + 'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100', + }, + { + series: '3090', + url: + 'https://www.very.co.uk/electricals/pc-components/graphics-cards/e/b/118786.end?sort=newin,0&numProducts=100', + }, + ], + }, + name: 'very', }; diff --git a/src/store/model/vsgamers.ts b/src/store/model/vsgamers.ts index 64b27749cc..30d805c4a7 100644 --- a/src/store/model/vsgamers.ts +++ b/src/store/model/vsgamers.ts @@ -1,267 +1,267 @@ import {Store} from './store'; export const VsGamers: Store = { - currency: '€', - labels: { - inStock: { - container: '#vs-product-sheet-dashboard', - text: ['COMPRAR', 'RESERVAR'] - }, - maxPrice: { - container: 'div[class="current ng-binding"]', - euroFormat: true - }, - outOfStock: { - container: '#vs-product-sheet-dashboard', - text: ['Avísame'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.vsgamers.es/product/silla-gaming-msi-mag-ch120-negro-rojo' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.vsgamers.es/product/procesador-amd-ryzen-5-5600x-37-ghz' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.vsgamers.es/product/procesador-amd-ryzen-7-5800x-38-ghz' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.vsgamers.es/product/procesador-amd-ryzen-9-5900x-37-ghz' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.vsgamers.es/product/procesador-amd-ryzen-9-5950x-34-ghz' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-zotac-gaming-geforce-rtx-3070-twin-edge-oc-8-gb-gddr6' - }, - { - brand: 'asus', - model: 'tuf', - series: '3070', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-tuf-gaming-geforce-rtx-3070-oc-8gb-gddr6' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3070-gaming-oc-8-gb-gddr6' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3070-gaming-oc-8-gb-gddr6' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtxr-3070-gaming-x-trio' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtxr-3070-ventus-2x-oc-8gb-gddr6' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtxr-3070-ventus-3x-oc-8gb-gddr6' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-dual-geforce-rtx-3070-gaming-8g-8-gb-gddr6' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-dual-geforce-rtx-3070-gaming-oc-8g-8-gb-gddr6' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix-geforce-rtx-3070-gaming-oc-8g-8-gb-gddr6x' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix-geforce-rtx-3070-gaming-8g-8-gb-gddr6x' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-zotac-gaming-nvidia-geforce-rtxr-3080-10-gb-gddr6x' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtx-3080-ventus-3x-10g-oc-10-gb-gddr6x' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtx-3080-gaming-x-trio-10g-10-gb-gddr6x' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-tuf-gaming-geforce-rtx-3080-10g-10-gb-gddr6x' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-tuf-gaming-geforce-rtx-3080-oc-10g-10-gb-gddr6x' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix-geforce-rtx-3080-gaming-10g-10-gb-gddr6x' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix-geforce-rtx-3080-gaming-oc-10g-10-gb-gddr6x' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3080-eagle-oc-10g-10-gb-gddr6x' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3080-gaming-oc-10g-10-gb-gddr6x' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-zotac-geforce-rtx-3080-trinity-10-gb-gddr6x' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-zotac-geforce-rtx-3090-trinity-24-gb-gddr6x' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-tuf-gaming-geforce-rtx-3090-24g-24-gb-gddr6x' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-tuf-gaming-geforce-rtx-3090-oc-24g-24-gb-gddr6x' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix-geforce-rtx-3090-gaming-24g-24-gb-gddr6x' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtx-3090-ventus-3x-24g-oc-24-gb-gddr6x' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtx-3090-gaming-x-trio-24g-24-gb-gddr6x' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix--geforce-rtxr-3090-gaming-oc-24gb-gddr6x' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3090-eagle-oc-24g-24-gb-gddr6x' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3090-gaming-oc-24g-24-gb-gddr6x' - } - ], - name: 'vsgamers' + currency: '€', + labels: { + inStock: { + container: '#vs-product-sheet-dashboard', + text: ['COMPRAR', 'RESERVAR'], + }, + maxPrice: { + container: 'div[class="current ng-binding"]', + euroFormat: true, + }, + outOfStock: { + container: '#vs-product-sheet-dashboard', + text: ['Avísame'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.vsgamers.es/product/silla-gaming-msi-mag-ch120-negro-rojo', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.vsgamers.es/product/procesador-amd-ryzen-5-5600x-37-ghz', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.vsgamers.es/product/procesador-amd-ryzen-7-5800x-38-ghz', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.vsgamers.es/product/procesador-amd-ryzen-9-5900x-37-ghz', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.vsgamers.es/product/procesador-amd-ryzen-9-5950x-34-ghz', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-zotac-gaming-geforce-rtx-3070-twin-edge-oc-8-gb-gddr6', + }, + { + brand: 'asus', + model: 'tuf', + series: '3070', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-tuf-gaming-geforce-rtx-3070-oc-8gb-gddr6', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3070-gaming-oc-8-gb-gddr6', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3070-gaming-oc-8-gb-gddr6', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtxr-3070-gaming-x-trio', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtxr-3070-ventus-2x-oc-8gb-gddr6', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtxr-3070-ventus-3x-oc-8gb-gddr6', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-dual-geforce-rtx-3070-gaming-8g-8-gb-gddr6', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-dual-geforce-rtx-3070-gaming-oc-8g-8-gb-gddr6', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix-geforce-rtx-3070-gaming-oc-8g-8-gb-gddr6x', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix-geforce-rtx-3070-gaming-8g-8-gb-gddr6x', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-zotac-gaming-nvidia-geforce-rtxr-3080-10-gb-gddr6x', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtx-3080-ventus-3x-10g-oc-10-gb-gddr6x', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtx-3080-gaming-x-trio-10g-10-gb-gddr6x', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-tuf-gaming-geforce-rtx-3080-10g-10-gb-gddr6x', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-tuf-gaming-geforce-rtx-3080-oc-10g-10-gb-gddr6x', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix-geforce-rtx-3080-gaming-10g-10-gb-gddr6x', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix-geforce-rtx-3080-gaming-oc-10g-10-gb-gddr6x', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3080-eagle-oc-10g-10-gb-gddr6x', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3080-gaming-oc-10g-10-gb-gddr6x', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-zotac-geforce-rtx-3080-trinity-10-gb-gddr6x', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-zotac-geforce-rtx-3090-trinity-24-gb-gddr6x', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-tuf-gaming-geforce-rtx-3090-24g-24-gb-gddr6x', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-tuf-gaming-geforce-rtx-3090-oc-24g-24-gb-gddr6x', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix-geforce-rtx-3090-gaming-24g-24-gb-gddr6x', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtx-3090-ventus-3x-24g-oc-24-gb-gddr6x', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-msi-geforce-rtx-3090-gaming-x-trio-24g-24-gb-gddr6x', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-asus-rog-strix--geforce-rtxr-3090-gaming-oc-24gb-gddr6x', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3090-eagle-oc-24g-24-gb-gddr6x', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.vsgamers.es/product/tarjeta-grafica-gigabyte-geforce-rtx-3090-gaming-oc-24g-24-gb-gddr6x', + }, + ], + name: 'vsgamers', }; diff --git a/src/store/model/vuugo.ts b/src/store/model/vuugo.ts index 94e924d1ba..397cd4bc0e 100644 --- a/src/store/model/vuugo.ts +++ b/src/store/model/vuugo.ts @@ -1,724 +1,724 @@ import {Store} from './store'; export const Vuugo: Store = { - currency: '$', - labels: { - inStock: { - container: '.green', - text: ['In Stock'] - }, - maxPrice: { - container: 'div.price:nth-child(12)' - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/hard-drives/seagate-hard-drive-ST1000LM048.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/cpu/amd-cpu-100-100000065BOX.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/cpu/amd-cpu-100-100000063WOF.html' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/cpu/amd-cpu-100-100000061WOF.html' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/cpu/amd-cpu-100-100000059WOF.html' - }, - { - brand: 'asrock', - model: 'amd reference', - series: 'rx6900xt', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asrock-video-cards-RX6900XT-16G.html' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-DUAL-RTX3060TI-O8G.html' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-DUAL-RTX3070-8G.html' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-DUAL-RTX3070-O8G.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3060TI-O8G-GAMING.html' - }, - { - brand: 'asus', - model: 'ko', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-KO-RTX3070-O8G-GAMING.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3070-O8G-GAMING.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3070-O8G-WH.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3080-O10G-GAMING.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3080-O10G-WH.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3090-O24G-GA.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3090-O24G-WH.html' - }, - { - brand: 'asus', - model: 'strix lc', - series: 'rx6800xt', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-LC-RX6800XT-O16G-GAMING.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: 'rx6800', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RX6800-O16G-GAMING.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3060TI-O8G-GAMING.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3070-O8G-GAMING.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3080-10G-GAMING.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3080-O10G-GAMING.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3090-O24G-GAMING.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3090-24G-GAMING.html' - }, - { - brand: 'asus', - model: 'ekwb', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-RTX3090-24G-EK.html' - }, - { - brand: 'asus', - model: 'ekwb', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-RTX3080-10G-EK.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: 'rx6800', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RX6800-O16G-GAMING.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: 'rx6800xt', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RX6800XT-O16G-GAMING.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: 'rx6900xt', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RX6900XT-O16G-GAMING.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3667-KR.html' - }, - { - brand: 'evga', - model: 'xc gaming', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3663-KR.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3765-KR.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3767-KR.html' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3751-KR.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3753-KR.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3755-KR.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-10G-P5-3895-KR.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-10G-P5-3897-KR.html' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-10G-P5-3881-KR.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-10G-P5-3883-KR.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-10G-P5-3885-KR.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-24G-P5-3985-KR.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-24G-P5-3987-KR.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-24G-P5-3973-KR.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-24G-P5-3975-KR.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N306TAORUS-M-8GD.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3070AORUS%20M-8GD.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080AORUS-M-10GD.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090AORUS-M-24GD.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080AORUS-X-10GD.html' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090AORUS-X-24GD.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N306TEAGLE-8GD.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N306TEAGLE-OC-8GD.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N306TGAMING-OC-8GD.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc pro', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N306TGAMINGOC-PRO-8GD.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3070EAGLE-8GD.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3070EAGLE-OC-8GD.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3070GAMING-OC-8GD.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080EAGLE-10GD.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080EAGLE-OC-10GD.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080GAMING-OC-10GD.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080VISION-OC-10GD.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090EAGLE-24GD.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090EAGLE-OC-24GD.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090GAMING-OC-24GD.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090VISION-OC-24GD.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3070VISION-OC-8GD.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-R68GAMING-OC-16GD.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: 'rx6800xt', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-R68XTGAMING-OC-16GD.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G306TGXT.html' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G306TV2XC.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3070GXT.html' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3070SX8.html' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3070V2XC.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3070V3XC.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3080GXT10.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3080V3X10C.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3090GXT24.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3090V3X24C.html' - }, - { - brand: 'msi', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-R6800GXT16.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: 'rx6800xt', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-R6800XTGXT16.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3060ti', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG3060T8DFXPPB.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG30708TFXPPB.html' - }, - { - brand: 'pny', - model: 'dual fan', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG30708DFMPB.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG309024TFXPPB.html' - }, - { - brand: 'pny', - model: 'xlr8 uprising', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG308010TFXMPB.html' - }, - { - brand: 'pny', - model: 'xlr8 epic x', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG308010TFXPPB.html' - }, - { - brand: 'pny', - model: 'xlr8 epic x', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG309024TFXMPB.html' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6800', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-11305-01-20G.html' - }, - { - brand: 'sapphire', - model: 'nitro+', - series: 'rx6800xt', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-11304-02-20G.html' - }, - { - brand: 'sapphire', - model: 'nitro+ se', - series: 'rx6800xt', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-11304-01-20G.html' - }, - { - brand: 'sapphire', - model: 'pulse', - series: 'rx6800', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-11305-02-20G.html' - }, - { - brand: 'sapphire', - model: 'pulse', - series: 'rx6800xt', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-11304-03-20G.html' - }, - { - brand: 'sapphire', - model: 'amd reference', - series: 'rx6800', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-21305-01-20G.html' - }, - { - brand: 'sapphire', - model: 'amd reference', - series: 'rx6800xt', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-21304-01-20G.html' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/zotac-video-cards-ZT-A30700H-10P.html' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/zotac-video-cards-ZT-A30700E-10P.html' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/zotac-video-cards-ZT-A30800J-10P.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/zotac-video-cards-ZT-A30800D-10P.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/zotac-video-cards-ZT-A30900D-10P.html' - } - ], - name: 'vuugo' + currency: '$', + labels: { + inStock: { + container: '.green', + text: ['In Stock'], + }, + maxPrice: { + container: 'div.price:nth-child(12)', + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/hard-drives/seagate-hard-drive-ST1000LM048.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/cpu/amd-cpu-100-100000065BOX.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/cpu/amd-cpu-100-100000063WOF.html', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/cpu/amd-cpu-100-100000061WOF.html', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/cpu/amd-cpu-100-100000059WOF.html', + }, + { + brand: 'asrock', + model: 'amd reference', + series: 'rx6900xt', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asrock-video-cards-RX6900XT-16G.html', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-DUAL-RTX3060TI-O8G.html', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-DUAL-RTX3070-8G.html', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-DUAL-RTX3070-O8G.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3060TI-O8G-GAMING.html', + }, + { + brand: 'asus', + model: 'ko', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-KO-RTX3070-O8G-GAMING.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3070-O8G-GAMING.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3070-O8G-WH.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3080-O10G-GAMING.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3080-O10G-WH.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3090-O24G-GA.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RTX3090-O24G-WH.html', + }, + { + brand: 'asus', + model: 'strix lc', + series: 'rx6800xt', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-LC-RX6800XT-O16G-GAMING.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6800', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-ROG-STRIX-RX6800-O16G-GAMING.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3060TI-O8G-GAMING.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3070-O8G-GAMING.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3080-10G-GAMING.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3080-O10G-GAMING.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3090-O24G-GAMING.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RTX3090-24G-GAMING.html', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-RTX3090-24G-EK.html', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-RTX3080-10G-EK.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6800', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RX6800-O16G-GAMING.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6800xt', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RX6800XT-O16G-GAMING.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6900xt', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/asus-video-cards-TUF-RX6900XT-O16G-GAMING.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3667-KR.html', + }, + { + brand: 'evga', + model: 'xc gaming', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3663-KR.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3765-KR.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3767-KR.html', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3751-KR.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3753-KR.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-08G-P5-3755-KR.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-10G-P5-3895-KR.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-10G-P5-3897-KR.html', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-10G-P5-3881-KR.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-10G-P5-3883-KR.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-10G-P5-3885-KR.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-24G-P5-3985-KR.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-24G-P5-3987-KR.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-24G-P5-3973-KR.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/evga-video-cards-24G-P5-3975-KR.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N306TAORUS-M-8GD.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3070AORUS%20M-8GD.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080AORUS-M-10GD.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090AORUS-M-24GD.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080AORUS-X-10GD.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090AORUS-X-24GD.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N306TEAGLE-8GD.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N306TEAGLE-OC-8GD.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N306TGAMING-OC-8GD.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc pro', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N306TGAMINGOC-PRO-8GD.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3070EAGLE-8GD.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3070EAGLE-OC-8GD.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3070GAMING-OC-8GD.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080EAGLE-10GD.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080EAGLE-OC-10GD.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080GAMING-OC-10GD.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3080VISION-OC-10GD.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090EAGLE-24GD.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090EAGLE-OC-24GD.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090GAMING-OC-24GD.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3090VISION-OC-24GD.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-N3070VISION-OC-8GD.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-R68GAMING-OC-16GD.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6800xt', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/gigabyte-video-cards-GV-R68XTGAMING-OC-16GD.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G306TGXT.html', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G306TV2XC.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3070GXT.html', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3070SX8.html', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3070V2XC.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3070V3XC.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3080GXT10.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3080V3X10C.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3090GXT24.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-G3090V3X24C.html', + }, + { + brand: 'msi', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-R6800GXT16.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: 'rx6800xt', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/msi-video-cards-R6800XTGXT16.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3060ti', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG3060T8DFXPPB.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG30708TFXPPB.html', + }, + { + brand: 'pny', + model: 'dual fan', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG30708DFMPB.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG309024TFXPPB.html', + }, + { + brand: 'pny', + model: 'xlr8 uprising', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG308010TFXMPB.html', + }, + { + brand: 'pny', + model: 'xlr8 epic x', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG308010TFXPPB.html', + }, + { + brand: 'pny', + model: 'xlr8 epic x', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/pny-video-cards-VCG309024TFXMPB.html', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6800', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-11305-01-20G.html', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6800xt', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-11304-02-20G.html', + }, + { + brand: 'sapphire', + model: 'nitro+ se', + series: 'rx6800xt', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-11304-01-20G.html', + }, + { + brand: 'sapphire', + model: 'pulse', + series: 'rx6800', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-11305-02-20G.html', + }, + { + brand: 'sapphire', + model: 'pulse', + series: 'rx6800xt', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-11304-03-20G.html', + }, + { + brand: 'sapphire', + model: 'amd reference', + series: 'rx6800', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-21305-01-20G.html', + }, + { + brand: 'sapphire', + model: 'amd reference', + series: 'rx6800xt', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/sapphire-video-cards-21304-01-20G.html', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/zotac-video-cards-ZT-A30700H-10P.html', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/zotac-video-cards-ZT-A30700E-10P.html', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/zotac-video-cards-ZT-A30800J-10P.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/zotac-video-cards-ZT-A30800D-10P.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.vuugo.com/computer-hardware/computer-parts/video-cards/zotac-video-cards-ZT-A30900D-10P.html', + }, + ], + name: 'vuugo', }; diff --git a/src/store/model/walmart-ca.ts b/src/store/model/walmart-ca.ts index 5ef8decac5..2d9a6257e2 100644 --- a/src/store/model/walmart-ca.ts +++ b/src/store/model/walmart-ca.ts @@ -1,57 +1,56 @@ import {Store} from './store'; export const WalmartCa: Store = { - currency: '$', - labels: { - inStock: { - container: '[data-automation="cta-button"]', - text: ['add to cart'] - }, - maxPrice: { - container: '[data-automation="buybox-price"]' - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.walmart.ca/en/ip/sandisk-64g-ultra-sdxc-uhs-1-memory-card-80mbs-c10-u1-full-hd-sd-card-sdsdunc-064g-cw6in/6000200452075' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: - 'https://www.walmart.ca/en/ip/playstation5-console/6000202198562' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.walmart.ca/en/ip/playstation5-digital-edition/6000202198823' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.walmart.ca/en/ip/xbox-series-x/6000201786332' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.walmart.ca/en/ip/xbox-series-s/6000201790919' - }, - { - brand: 'corsair', - model: '600 platinum', - series: 'sf', - url: - 'https://www.walmart.ca/en/ip/Corsair-SF-Series-SF600-600-Watt-80-PLUS-Gold-Certified-High-Performance-SFX-PSU/PRD6VH8WNKHD36Q' - } - ], - name: 'walmart-ca' + currency: '$', + labels: { + inStock: { + container: '[data-automation="cta-button"]', + text: ['add to cart'], + }, + maxPrice: { + container: '[data-automation="buybox-price"]', + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.walmart.ca/en/ip/sandisk-64g-ultra-sdxc-uhs-1-memory-card-80mbs-c10-u1-full-hd-sd-card-sdsdunc-064g-cw6in/6000200452075', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.walmart.ca/en/ip/playstation5-console/6000202198562', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.walmart.ca/en/ip/playstation5-digital-edition/6000202198823', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.walmart.ca/en/ip/xbox-series-x/6000201786332', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.walmart.ca/en/ip/xbox-series-s/6000201790919', + }, + { + brand: 'corsair', + model: '600 platinum', + series: 'sf', + url: + 'https://www.walmart.ca/en/ip/Corsair-SF-Series-SF600-600-Watt-80-PLUS-Gold-Certified-High-Performance-SFX-PSU/PRD6VH8WNKHD36Q', + }, + ], + name: 'walmart-ca', }; diff --git a/src/store/model/walmart.ts b/src/store/model/walmart.ts index e24dd871fd..af0926cd77 100644 --- a/src/store/model/walmart.ts +++ b/src/store/model/walmart.ts @@ -1,70 +1,69 @@ import {Store} from './store'; export const Walmart: Store = { - currency: '$', - labels: { - inStock: { - container: - '.button.spin-button.prod-ProductCTA--primary.button--primary', - text: ['add to cart'] - }, - maxPrice: { - container: 'span[class*="price-characteristic"]' - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.walmart.com/ip/Keurig-K-compact-Brewer-Black-Coffee-Maker/806217614' - }, - { - brand: 'sony', - model: 'ps5 console', - series: 'sonyps5c', - url: 'https://www.walmart.com/ip/PlayStation5-Console/363472942' - }, - { - brand: 'sony', - model: 'ps5 digital', - series: 'sonyps5de', - url: - 'https://www.walmart.com/ip/Sony-PlayStation-5-Digital-Edition/493824815' - }, - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.walmart.com/ip/Xbox-Series-X/443574645' - }, - { - brand: 'microsoft', - model: 'xbox series s', - series: 'xboxss', - url: 'https://www.walmart.com/ip/Xbox-Series-S/606518560' - }, - { - brand: 'corsair', - model: '750 platinum', - series: 'sf', - url: 'https://www.walmart.com/ip/SF750-Power-Supply/197046151' - }, - { - brand: 'corsair', - model: '600 platinum', - series: 'sf', - url: - 'https://www.walmart.com/ip/Corsair-SF-Series-600W-80-Platinum-Power-Supply/250717047' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://www.walmart.com/ip/AMD-Ryzen-9-5900X-12-core-24-thread-Desktop-Processor/159710953' - } - ], - name: 'walmart' + currency: '$', + labels: { + inStock: { + container: '.button.spin-button.prod-ProductCTA--primary.button--primary', + text: ['add to cart'], + }, + maxPrice: { + container: 'span[class*="price-characteristic"]', + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.walmart.com/ip/Keurig-K-compact-Brewer-Black-Coffee-Maker/806217614', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.walmart.com/ip/PlayStation5-Console/363472942', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: + 'https://www.walmart.com/ip/Sony-PlayStation-5-Digital-Edition/493824815', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.walmart.com/ip/Xbox-Series-X/443574645', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.walmart.com/ip/Xbox-Series-S/606518560', + }, + { + brand: 'corsair', + model: '750 platinum', + series: 'sf', + url: 'https://www.walmart.com/ip/SF750-Power-Supply/197046151', + }, + { + brand: 'corsair', + model: '600 platinum', + series: 'sf', + url: + 'https://www.walmart.com/ip/Corsair-SF-Series-600W-80-Platinum-Power-Supply/250717047', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://www.walmart.com/ip/AMD-Ryzen-9-5900X-12-core-24-thread-Desktop-Processor/159710953', + }, + ], + name: 'walmart', }; diff --git a/src/store/model/wellstechnology.ts b/src/store/model/wellstechnology.ts index c92e281dc7..446e7e5823 100644 --- a/src/store/model/wellstechnology.ts +++ b/src/store/model/wellstechnology.ts @@ -1,80 +1,80 @@ import {Store} from './store'; export const WellsTechnology: Store = { - backoffStatusCodes: [403, 429], - currency: '$', - labels: { - inStock: { - container: - '#addToCartForm-product-template > div.payment-buttons.payment-buttons--small > div > div > div > div', - text: ['Buy it now'] - }, - maxPrice: { - container: '#productPrice-product-template *', - euroFormat: false - }, - outOfStock: { - container: '#addToCartText-product-template', - text: ['Sold Out'] - } - }, - links: [ - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://wellstechnology.com.au/products/evga-geforce-rtx3080-xc3-10gb-gddr6x?_pos=1&_sid=bcf224e44&_ss=r&variant=36272043983014' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://wellstechnology.com.au/products/evga-geforce-rtx3080-ftw3-ultra-10gb-gddr6x?_pos=2&_sid=bcf224e44&_ss=r&variant=36271898919078' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://wellstechnology.com.au/products/gigabyte-n3080gaming-oc-10gd-rtx3080-video-card?_pos=3&_sid=bcf224e44&_ss=r&variant=36210887295142' - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce wb', - series: '3080', - url: - 'https://wellstechnology.com.au/products/gigabyte-aorus-rtx3080-xtreme-waterforce-wb?_pos=1&_sid=fd83b064b&_ss=r' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://wellstechnology.com.au/products/amd-ryzen-9-5950x-cpu?_pos=1&_sid=cc7b6903f&_ss=r&variant=37019002339494' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: - 'https://wellstechnology.com.au/products/amd-ryzen-5-5900x-cpu?_pos=1&_sid=b9234b72d&_ss=r&variant=36941124337830' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: - 'https://wellstechnology.com.au/products/amd-ryzen-5-5800x-cpu?_pos=1&_sid=35b306d65&_ss=r&variant=36941094387878' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: - 'https://wellstechnology.com.au/products/amd-ryzen-5-5600x-cpu?_pos=1&_sid=3f4c61e03&_ss=r&variant=36941063422118' - } - ], - name: 'wellstechnology' + backoffStatusCodes: [403, 429], + currency: '$', + labels: { + inStock: { + container: + '#addToCartForm-product-template > div.payment-buttons.payment-buttons--small > div > div > div > div', + text: ['Buy it now'], + }, + maxPrice: { + container: '#productPrice-product-template *', + euroFormat: false, + }, + outOfStock: { + container: '#addToCartText-product-template', + text: ['Sold Out'], + }, + }, + links: [ + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://wellstechnology.com.au/products/evga-geforce-rtx3080-xc3-10gb-gddr6x?_pos=1&_sid=bcf224e44&_ss=r&variant=36272043983014', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://wellstechnology.com.au/products/evga-geforce-rtx3080-ftw3-ultra-10gb-gddr6x?_pos=2&_sid=bcf224e44&_ss=r&variant=36271898919078', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://wellstechnology.com.au/products/gigabyte-n3080gaming-oc-10gd-rtx3080-video-card?_pos=3&_sid=bcf224e44&_ss=r&variant=36210887295142', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3080', + url: + 'https://wellstechnology.com.au/products/gigabyte-aorus-rtx3080-xtreme-waterforce-wb?_pos=1&_sid=fd83b064b&_ss=r', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://wellstechnology.com.au/products/amd-ryzen-9-5950x-cpu?_pos=1&_sid=cc7b6903f&_ss=r&variant=37019002339494', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: + 'https://wellstechnology.com.au/products/amd-ryzen-5-5900x-cpu?_pos=1&_sid=b9234b72d&_ss=r&variant=36941124337830', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: + 'https://wellstechnology.com.au/products/amd-ryzen-5-5800x-cpu?_pos=1&_sid=35b306d65&_ss=r&variant=36941094387878', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: + 'https://wellstechnology.com.au/products/amd-ryzen-5-5600x-cpu?_pos=1&_sid=3f4c61e03&_ss=r&variant=36941063422118', + }, + ], + name: 'wellstechnology', }; diff --git a/src/store/model/wipoid.ts b/src/store/model/wipoid.ts index a9a25eb5ca..455156b7e3 100644 --- a/src/store/model/wipoid.ts +++ b/src/store/model/wipoid.ts @@ -1,515 +1,513 @@ import {Store} from './store'; export const Wipoid: Store = { - currency: '$', - labels: { - inStock: { - container: '#add_to_cart', - text: ['COMPRAR'] - }, - maxPrice: { - container: '#our_price_display', - euroFormat: true - }, - outOfStock: { - container: '.buttons_bottom_block no-print', - text: ['Avísame cuando esté disponible!'] - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://www.wipoid.com/pny-geforce-rtx-1650-dual-fan-4gb-gddr6.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3060ti', - url: - 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3060-ti-8gb-gddr6.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3060ti', - url: - 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3060-ti-oc-8gb-gddr6.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3060ti', - url: - 'https://www.wipoid.com/gigabyte-aorus-geforce-rtx-3060-ti-master-8gb-gddr6.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3060ti', - url: - 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3060-ti-oc-edition-8gb-gddr6.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3060ti', - url: - 'https://www.wipoid.com/msi-geforce-rtx-3060-ti-gaming-x-trio-8gb-gddr6.html' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3060ti', - url: - 'https://www.wipoid.com/asus-dual-geforce-rtx-3060-ti-oc-edition-8gb-gddr6.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3060ti', - url: - 'https://www.wipoid.com/gigabyte-geforce-rtx-3060-ti-gaming-oc-8gb-gddr6.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc pro', - series: '3060ti', - url: - 'https://www.wipoid.com/gigabyte-geforce-rtx-3060-ti-gaming-pro-oc-8gb-gddr6.html' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3060ti', - url: - 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3060-ti-twin-edge-oc-8gb-gddr6.html' - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3060ti', - url: - 'https://www.wipoid.com/palit-geforce-rtx-3060-ti-gaming-pro-8gb-gddr6.html' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3060ti', - url: - 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3060-ti-twin-edge-8gb-gddr6.html' - }, - { - brand: 'gigabyte', - model: 'eagle', - series: '3060ti', - url: - 'https://www.wipoid.com/gigabyte-geforce-rtx-3060-ti-eagle-8gb-gddr6.html' - }, - { - brand: 'msi', - model: 'ventus 2x oc', - series: '3060ti', - url: - 'https://www.wipoid.com/msi-geforce-rtx-3060-ti-ventus-2x-oc-8gb-gddr6.html' - }, - { - brand: 'palit', - model: 'dual', - series: '3060ti', - url: - 'https://www.wipoid.com/palit-geforce-rtx-3060-ti-dual-8gb-gddr6.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: - 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3070-oc-8gb-gddr6.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3070', - url: - 'https://www.wipoid.com/evga-geforce-rtx-3070-ftw3-ultra-gaming-8gb-gddr6.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3070', - url: - 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3070-oc-edition-8gb-gddr6.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3070', - url: - 'https://www.wipoid.com/gigabyte-aorus-geforce-rtx-3070-master-8gb-gddr6.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3070', - url: - 'https://www.wipoid.com/gigabyte-aorus-geforce-rtx-3070-master-8gb-gddr6.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3070', - url: - 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3070-8gb-gddr6.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3070', - url: - 'https://www.wipoid.com/gigabyte-geforce-rtx-3070-gaming-oc-8gb-gddr6.html' - }, - { - brand: 'asus', - model: 'dual oc', - series: '3070', - url: - 'https://www.wipoid.com/asus-dual-geforce-rtx-3070-oc-edition-8gb-gddr6.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3070', - url: - 'https://www.wipoid.com/gigabyte-geforce-rtx-3070-eagle-oc-8gb-gddr6.html' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3070', - url: - 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3070-amp-holo-8gb-gddr6.html' - }, - { - brand: 'asus', - model: 'dual', - series: '3070', - url: - 'https://www.wipoid.com/asus-dual-geforce-rtx-3070-8gb-gddr6.html' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3070-twin-edge-oc-white-gddr6.html' - }, - { - brand: 'pny', - model: 'xlr8 epic x', - series: '3070', - url: - 'https://www.wipoid.com/pny-geforce-rtx-3070-xlr8-gaming-epic-x-8gb-gddr6x.html' - }, - { - brand: 'pny', - model: 'dual fan', - series: '3070', - url: - 'https://www.wipoid.com/pny-geforce-rtx-3070-dual-fan-8gb-gddr6.html' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3070-twin-edge-oc-8gb-gddr6.html' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3070-twin-edge-8gb-gddr6.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080', - url: - 'https://www.wipoid.com/gigabyte-geforce-rtx-3070-vision-oc-8gb-gddr6.html' - }, - { - brand: 'msi', - model: 'ventus 3x oc', - series: '3080', - url: - 'https://www.wipoid.com/msi-geforce-rtx-3080-ventus-3x-10gb-gddr6x.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3080', - url: - 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3080-10gb-gddr6x.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080', - url: - 'https://www.wipoid.com/gigabyte-geforce-rtx-3080-gaming-oc-10gb-gddr6x.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080', - url: - 'https://www.wipoid.com/msi-geforce-rtx-3080-gaming-x-trio-10gb-gddr6x.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3080', - url: - 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3080-oc-edition-10gb-gddr6x.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3080', - url: - 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3080-oc-edition-10gb-gddr6x.html' - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080', - url: - 'https://www.wipoid.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3080-trinity-10gb-gddr6x.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3080', - url: - 'https://www.wipoid.com/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3080', - url: - 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3080-10gb-gddr6x.html' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3080-trinity-oc-10gb-gddr6x.html' - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080', - url: - 'https://www.wipoid.com/gigabyte-geforce-rtx-3080-vision-oc-10gb-gddr6x.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.wipoid.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080', - url: - 'https://www.wipoid.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x.html' - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3080', - url: - 'https://www.wipoid.com/gigabyte-aorus-geforce-rtx-3080-master-10gb-gddr6x.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: - 'https://www.wipoid.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.wipoid.com/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-10gb-gddr6x.html' - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3080', - url: - 'https://www.wipoid.com/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-10gb-gddr6x.html' - }, - { - brand: 'msi', - model: 'suprim x', - series: '3080', - url: - 'https://www.wipoid.com/msi-geforce-rtx-3080-suprim-x-10gb-gddr6x.html' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: - 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3080-amp-holo-10gb-gddr6x.html' - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080', - url: - 'https://www.wipoid.com/evga-geforce-rtx-3080-ftw3-gaming-10gb-gddr6x.html' - }, - { - brand: 'evga', - model: 'xc3', - series: '3080', - url: - 'https://www.wipoid.com/evga-geforce-rtx-3080-xc3-gaming-10gb-gddr6x.html' - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3090', - url: - 'https://www.wipoid.com/evga-geforce-rtx-3090-ftw3-ultra-gaming-24gb-gddr6x.html' - }, - { - brand: 'asus', - model: 'ekwb', - series: '3090', - url: - 'https://www.wipoid.com/asus-ekwb-geforce-rtx-3090-24gb-gddr6x.html' - }, - { - brand: 'asus', - model: 'strix white', - series: '3090', - url: - 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3090-oc-edition-white-24gb-gddr6x.html' - }, - { - brand: 'asus', - model: 'tuf oc', - series: '3090', - url: - 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3090-oc-edition-24gb-gddr6x.html' - }, - { - brand: 'asus', - model: 'strix oc', - series: '3090', - url: - 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3090-oc-edition-24gb-gddr6x.html' - }, - { - brand: 'asus', - model: 'strix', - series: '3090', - url: - 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3090-24gb-gddr6x.html' - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3090', - url: - 'https://www.wipoid.com/gigabyte-geforce-rtx-3090-oc-24gb-gddr6x.html' - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3090', - url: - 'https://www.wipoid.com/msi-geforce-rtx-3090-gaming-x-trio-24gb-gddr6x.html' - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3090', - url: - 'https://www.wipoid.com/gigabyte-geforce-rtx-3090-eagle-oc-24gb-gddr6x.html' - }, - { - brand: 'asus', - model: 'tuf', - series: '3090', - url: - 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3090-24gb-gddr6x.html' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3090-trinity-24gb-gddr6x.html' - }, - { - brand: 'msi', - model: 'ventus 3x', - series: '3090', - url: - 'https://www.wipoid.com/msi-geforce-rtx-3090-ventus-3x-24gb-gddr6x.html' - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: - 'https://www.wipoid.com/evga-geforce-rtx-3090-xc3-ultra-gaming-24gb-gddr6x.html' - }, - { - brand: 'amd', - model: '5600x', - series: 'ryzen5600', - url: 'https://www.wipoid.com/amd-ryzen-5-5600x-3-7ghz.html' - }, - { - brand: 'amd', - model: '5800x', - series: 'ryzen5800', - url: 'https://www.wipoid.com/amd-ryzen-7-5800x-3-8ghz.html' - }, - { - brand: 'amd', - model: '5900x', - series: 'ryzen5900', - url: 'https://www.wipoid.com/amd-ryzen-9-5900x-3-7ghz.html' - }, - { - brand: 'amd', - model: '5950x', - series: 'ryzen5950', - url: 'https://www.wipoid.com/amd-ryzen-9-5950x-3-4ghz.html' - } - ], - name: 'wipoid' + currency: '$', + labels: { + inStock: { + container: '#add_to_cart', + text: ['COMPRAR'], + }, + maxPrice: { + container: '#our_price_display', + euroFormat: true, + }, + outOfStock: { + container: '.buttons_bottom_block no-print', + text: ['Avísame cuando esté disponible!'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://www.wipoid.com/pny-geforce-rtx-1650-dual-fan-4gb-gddr6.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3060ti', + url: + 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3060-ti-8gb-gddr6.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3060ti', + url: + 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3060-ti-oc-8gb-gddr6.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3060ti', + url: + 'https://www.wipoid.com/gigabyte-aorus-geforce-rtx-3060-ti-master-8gb-gddr6.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060ti', + url: + 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3060-ti-oc-edition-8gb-gddr6.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060ti', + url: + 'https://www.wipoid.com/msi-geforce-rtx-3060-ti-gaming-x-trio-8gb-gddr6.html', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3060ti', + url: + 'https://www.wipoid.com/asus-dual-geforce-rtx-3060-ti-oc-edition-8gb-gddr6.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3060ti', + url: + 'https://www.wipoid.com/gigabyte-geforce-rtx-3060-ti-gaming-oc-8gb-gddr6.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc pro', + series: '3060ti', + url: + 'https://www.wipoid.com/gigabyte-geforce-rtx-3060-ti-gaming-pro-oc-8gb-gddr6.html', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3060ti', + url: + 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3060-ti-twin-edge-oc-8gb-gddr6.html', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3060ti', + url: + 'https://www.wipoid.com/palit-geforce-rtx-3060-ti-gaming-pro-8gb-gddr6.html', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3060ti', + url: + 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3060-ti-twin-edge-8gb-gddr6.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3060ti', + url: + 'https://www.wipoid.com/gigabyte-geforce-rtx-3060-ti-eagle-8gb-gddr6.html', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: + 'https://www.wipoid.com/msi-geforce-rtx-3060-ti-ventus-2x-oc-8gb-gddr6.html', + }, + { + brand: 'palit', + model: 'dual', + series: '3060ti', + url: + 'https://www.wipoid.com/palit-geforce-rtx-3060-ti-dual-8gb-gddr6.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: + 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3070-oc-8gb-gddr6.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3070', + url: + 'https://www.wipoid.com/evga-geforce-rtx-3070-ftw3-ultra-gaming-8gb-gddr6.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: + 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3070-oc-edition-8gb-gddr6.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3070', + url: + 'https://www.wipoid.com/gigabyte-aorus-geforce-rtx-3070-master-8gb-gddr6.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3070', + url: + 'https://www.wipoid.com/gigabyte-aorus-geforce-rtx-3070-master-8gb-gddr6.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: + 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3070-8gb-gddr6.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: + 'https://www.wipoid.com/gigabyte-geforce-rtx-3070-gaming-oc-8gb-gddr6.html', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3070', + url: + 'https://www.wipoid.com/asus-dual-geforce-rtx-3070-oc-edition-8gb-gddr6.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3070', + url: + 'https://www.wipoid.com/gigabyte-geforce-rtx-3070-eagle-oc-8gb-gddr6.html', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3070', + url: + 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3070-amp-holo-8gb-gddr6.html', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: 'https://www.wipoid.com/asus-dual-geforce-rtx-3070-8gb-gddr6.html', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3070-twin-edge-oc-white-gddr6.html', + }, + { + brand: 'pny', + model: 'xlr8 epic x', + series: '3070', + url: + 'https://www.wipoid.com/pny-geforce-rtx-3070-xlr8-gaming-epic-x-8gb-gddr6x.html', + }, + { + brand: 'pny', + model: 'dual fan', + series: '3070', + url: + 'https://www.wipoid.com/pny-geforce-rtx-3070-dual-fan-8gb-gddr6.html', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3070-twin-edge-oc-8gb-gddr6.html', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3070-twin-edge-8gb-gddr6.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: + 'https://www.wipoid.com/gigabyte-geforce-rtx-3070-vision-oc-8gb-gddr6.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: + 'https://www.wipoid.com/msi-geforce-rtx-3080-ventus-3x-10gb-gddr6x.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: + 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3080-10gb-gddr6x.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: + 'https://www.wipoid.com/gigabyte-geforce-rtx-3080-gaming-oc-10gb-gddr6x.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080', + url: + 'https://www.wipoid.com/msi-geforce-rtx-3080-gaming-x-trio-10gb-gddr6x.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3080', + url: + 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3080-oc-edition-10gb-gddr6x.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3080', + url: + 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3080-oc-edition-10gb-gddr6x.html', + }, + { + brand: 'evga', + model: 'xc3 black', + series: '3080', + url: + 'https://www.wipoid.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3080-trinity-10gb-gddr6x.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3080', + url: + 'https://www.wipoid.com/evga-geforce-rtx-3080-xc3-ultra-gaming-10gb-gddr6x.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: + 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3080-10gb-gddr6x.html', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3080-trinity-oc-10gb-gddr6x.html', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: + 'https://www.wipoid.com/gigabyte-geforce-rtx-3080-vision-oc-10gb-gddr6x.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.wipoid.com/evga-geforce-rtx-3080-xc3-black-gaming-10gb-gddr6x.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3080', + url: + 'https://www.wipoid.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x.html', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: + 'https://www.wipoid.com/gigabyte-aorus-geforce-rtx-3080-master-10gb-gddr6x.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: + 'https://www.wipoid.com/evga-geforce-rtx-3080-ftw3-ultra-gaming-10gb-gddr6x.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.wipoid.com/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-10gb-gddr6x.html', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: + 'https://www.wipoid.com/pny-geforce-rtx-3080-10gb-xlr8-gaming-epic-x-rgb-10gb-gddr6x.html', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: + 'https://www.wipoid.com/msi-geforce-rtx-3080-suprim-x-10gb-gddr6x.html', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: + 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3080-amp-holo-10gb-gddr6x.html', + }, + { + brand: 'evga', + model: 'ftw3', + series: '3080', + url: + 'https://www.wipoid.com/evga-geforce-rtx-3080-ftw3-gaming-10gb-gddr6x.html', + }, + { + brand: 'evga', + model: 'xc3', + series: '3080', + url: + 'https://www.wipoid.com/evga-geforce-rtx-3080-xc3-gaming-10gb-gddr6x.html', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3090', + url: + 'https://www.wipoid.com/evga-geforce-rtx-3090-ftw3-ultra-gaming-24gb-gddr6x.html', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3090', + url: 'https://www.wipoid.com/asus-ekwb-geforce-rtx-3090-24gb-gddr6x.html', + }, + { + brand: 'asus', + model: 'strix white', + series: '3090', + url: + 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3090-oc-edition-white-24gb-gddr6x.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3090', + url: + 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3090-oc-edition-24gb-gddr6x.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: + 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3090-oc-edition-24gb-gddr6x.html', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: + 'https://www.wipoid.com/asus-rog-strix-geforce-rtx-3090-24gb-gddr6x.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: + 'https://www.wipoid.com/gigabyte-geforce-rtx-3090-oc-24gb-gddr6x.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: + 'https://www.wipoid.com/msi-geforce-rtx-3090-gaming-x-trio-24gb-gddr6x.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: + 'https://www.wipoid.com/gigabyte-geforce-rtx-3090-eagle-oc-24gb-gddr6x.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: + 'https://www.wipoid.com/asus-tuf-gaming-geforce-rtx-3090-24gb-gddr6x.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://www.wipoid.com/zotac-gaming-geforce-rtx-3090-trinity-24gb-gddr6x.html', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '3090', + url: + 'https://www.wipoid.com/msi-geforce-rtx-3090-ventus-3x-24gb-gddr6x.html', + }, + { + brand: 'evga', + model: 'xc3 ultra', + series: '3090', + url: + 'https://www.wipoid.com/evga-geforce-rtx-3090-xc3-ultra-gaming-24gb-gddr6x.html', + }, + { + brand: 'amd', + model: '5600x', + series: 'ryzen5600', + url: 'https://www.wipoid.com/amd-ryzen-5-5600x-3-7ghz.html', + }, + { + brand: 'amd', + model: '5800x', + series: 'ryzen5800', + url: 'https://www.wipoid.com/amd-ryzen-7-5800x-3-8ghz.html', + }, + { + brand: 'amd', + model: '5900x', + series: 'ryzen5900', + url: 'https://www.wipoid.com/amd-ryzen-9-5900x-3-7ghz.html', + }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.wipoid.com/amd-ryzen-9-5950x-3-4ghz.html', + }, + ], + name: 'wipoid', }; diff --git a/src/store/model/xbox.ts b/src/store/model/xbox.ts index 198626b4c6..359677e1ea 100644 --- a/src/store/model/xbox.ts +++ b/src/store/model/xbox.ts @@ -1,21 +1,21 @@ import {Store} from './store'; export const Xbox: Store = { - currency: '$', - labels: { - outOfStock: { - container: - '.src-pages-BundleBuilder-components-BundleBuilderHeader-__BundleBuilderHeader-module___checkoutButton', - text: ['out of stock'] - } - }, - links: [ - { - brand: 'microsoft', - model: 'xbox series x', - series: 'xboxsx', - url: 'https://www.xbox.com/en-us/configure/8WJ714N3RBTL' - } - ], - name: 'xbox' + currency: '$', + labels: { + outOfStock: { + container: + '.src-pages-BundleBuilder-components-BundleBuilderHeader-__BundleBuilderHeader-module___checkoutButton', + text: ['out of stock'], + }, + }, + links: [ + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.xbox.com/en-us/configure/8WJ714N3RBTL', + }, + ], + name: 'xbox', }; diff --git a/src/store/model/zotac.ts b/src/store/model/zotac.ts index bb44750edc..cc1c112a3e 100644 --- a/src/store/model/zotac.ts +++ b/src/store/model/zotac.ts @@ -1,82 +1,82 @@ import {Store} from './store'; export const Zotac: Store = { - backoffStatusCodes: [403, 503], - currency: '$', - labels: { - inStock: { - container: '.add-to-cart-wrapper', - text: ['add to cart'] - }, - maxPrice: { - container: 'div[class="product-shop"] span[class="price"]', - euroFormat: false - } - }, - links: [ - { - brand: 'test:brand', - model: 'test:model', - series: 'test:series', - url: - 'https://store.zotac.com/zotac-gaming-geforce-rtx-2060-twin-fan-zt-t20600f-10m' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3060ti', - url: - 'https://store.zotac.com/zotac-gaming-geforce-rtx-3060-ti-twin-edge-zt-a30610e-10m' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3060ti', - url: - 'https://store.zotac.com/zotac-gaming-geforce-rtx-3060-ti-twin-edge-oc-zt-a30610h-10m' - }, - { - brand: 'zotac', - model: 'twin edge', - series: '3070', - url: - 'https://store.zotac.com/zotac-gaming-geforce-rtx-3070-twin-edge-zt-a30700e-10p' - }, - { - brand: 'zotac', - model: 'twin edge oc', - series: '3070', - url: - 'https://store.zotac.com/zotac-gaming-geforce-rtx-3070-twin-edge-oc-zt-a30700h-10p' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080', - url: - 'https://store.zotac.com/zotac-gaming-geforce-rtx-3080-trinity-zt-a30800d-10p' - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3080', - url: - 'https://store.zotac.com/zotac-gaming-geforce-rtx-3080-trinity-oc-zt-a30800j-10p' - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080', - url: - 'https://www.zotacstore.com/us/zotac-gaming-geforce-rtx-3080-amp-holo-zt-a30800f-10p' - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: - 'https://store.zotac.com/zotac-gaming-geforce-rtx-3090-trinity-zt-a30900d-10p' - } - ], - name: 'zotac' + backoffStatusCodes: [403, 503], + currency: '$', + labels: { + inStock: { + container: '.add-to-cart-wrapper', + text: ['add to cart'], + }, + maxPrice: { + container: 'div[class="product-shop"] span[class="price"]', + euroFormat: false, + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: + 'https://store.zotac.com/zotac-gaming-geforce-rtx-2060-twin-fan-zt-t20600f-10m', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3060ti', + url: + 'https://store.zotac.com/zotac-gaming-geforce-rtx-3060-ti-twin-edge-zt-a30610e-10m', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3060ti', + url: + 'https://store.zotac.com/zotac-gaming-geforce-rtx-3060-ti-twin-edge-oc-zt-a30610h-10m', + }, + { + brand: 'zotac', + model: 'twin edge', + series: '3070', + url: + 'https://store.zotac.com/zotac-gaming-geforce-rtx-3070-twin-edge-zt-a30700e-10p', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: + 'https://store.zotac.com/zotac-gaming-geforce-rtx-3070-twin-edge-oc-zt-a30700h-10p', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: + 'https://store.zotac.com/zotac-gaming-geforce-rtx-3080-trinity-zt-a30800d-10p', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: + 'https://store.zotac.com/zotac-gaming-geforce-rtx-3080-trinity-oc-zt-a30800j-10p', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3080', + url: + 'https://www.zotacstore.com/us/zotac-gaming-geforce-rtx-3080-amp-holo-zt-a30800f-10p', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3090', + url: + 'https://store.zotac.com/zotac-gaming-geforce-rtx-3090-trinity-zt-a30900d-10p', + }, + ], + name: 'zotac', }; diff --git a/src/store/timestamp-url-parameter.ts b/src/store/timestamp-url-parameter.ts index 5a5950dc73..22b3619d57 100644 --- a/src/store/timestamp-url-parameter.ts +++ b/src/store/timestamp-url-parameter.ts @@ -4,5 +4,5 @@ * @return string in format &=1111111111111 (time since epoch in ms) */ export function timestampUrlParameter(): string { - return `&_=${Date.now()}`; + return `&_=${Date.now()}`; } diff --git a/src/types/play-sound.d.ts b/src/types/play-sound.d.ts index fc586619e9..15ca340e26 100644 --- a/src/types/play-sound.d.ts +++ b/src/types/play-sound.d.ts @@ -1,28 +1,25 @@ declare module 'play-sound' { - export interface Options { - players?: string[]; - player?: string; - } + export interface Options { + players?: string[]; + player?: string; + } - export type PlayOptions = Record; + export type PlayOptions = Record; - export interface PlaySound { - player: string; + export interface PlaySound { + player: string; - play: (( - file: string, - callback: (error: Error) => void - ) => PlayerProcess) & - (( - file: string, - options: PlayOptions, - callback: (error: Error) => void - ) => PlayerProcess); - } + play: ((file: string, callback: (error: Error) => void) => PlayerProcess) & + (( + file: string, + options: PlayOptions, + callback: (error: Error) => void + ) => PlayerProcess); + } - export interface PlayerProcess { - kill: () => void; - } + export interface PlayerProcess { + kill: () => void; + } - export default function (options?: Options): PlaySound; + export default function (options?: Options): PlaySound; } diff --git a/src/types/puppeteer-extra-plugin-block-resources.d.ts b/src/types/puppeteer-extra-plugin-block-resources.d.ts index 319631e34d..fe1878119d 100644 --- a/src/types/puppeteer-extra-plugin-block-resources.d.ts +++ b/src/types/puppeteer-extra-plugin-block-resources.d.ts @@ -1,25 +1,25 @@ declare module 'puppeteer-extra-plugin-block-resources' { - import {PuppeteerExtraPlugin} from 'puppeteer-extra'; + import {PuppeteerExtraPlugin} from 'puppeteer-extra'; - export type ResourceType = - | 'document' - | 'eventsource' - | 'fetch' - | 'font' - | 'image' - | 'manifest' - | 'media' - | 'other' - | 'script' - | 'stylesheet' - | 'texttrack' - | 'websocket' - | 'xhr'; + export type ResourceType = + | 'document' + | 'eventsource' + | 'fetch' + | 'font' + | 'image' + | 'manifest' + | 'media' + | 'other' + | 'script' + | 'stylesheet' + | 'texttrack' + | 'websocket' + | 'xhr'; - export interface Options { - availableTypes?: Set; - blockedTypes?: Set; - } + export interface Options { + availableTypes?: Set; + blockedTypes?: Set; + } - export default function (options?: Options): PuppeteerExtraPlugin; + export default function (options?: Options): PuppeteerExtraPlugin; } diff --git a/src/types/pushbullet.d.ts b/src/types/pushbullet.d.ts index 70a15c5335..c484121e42 100644 --- a/src/types/pushbullet.d.ts +++ b/src/types/pushbullet.d.ts @@ -1,106 +1,91 @@ declare module '@jef/pushbullet' { - export type DeviceParameters = string | number | Record; + export type DeviceParameters = string | number | Record; - export type PushBulletCallback = - | ((error: Error) => void) - | ((error?: null, response: any) => void); + export type PushBulletCallback = + | ((error: Error) => void) + | ((error?: null, response: any) => void); - export interface ListOptions { - active?: boolean; - cursor?: string; - limit?: number; - } + export interface ListOptions { + active?: boolean; + cursor?: string; + limit?: number; + } - export interface HistoryOptions extends ListOptions { - modified_after?: number; - } + export interface HistoryOptions extends ListOptions { + modified_after?: number; + } - export interface PushBulletStream { - connect: () => void; - close: () => void; - on: (( - event: 'connect' | 'close' | 'nop', - callback: () => void - ) => void) & - ((event: 'error', callback: (error: any) => void) => void) & - ((event: 'message', callback: (message: any) => void) => void) & - ((event: 'tickle', callback: (tickle: any) => void) => void) & - ((event: 'push', callback: (push: any) => void) => void); - } + export interface PushBulletStream { + connect: () => void; + close: () => void; + on: ((event: 'connect' | 'close' | 'nop', callback: () => void) => void) & + ((event: 'error', callback: (error: any) => void) => void) & + ((event: 'message', callback: (message: any) => void) => void) & + ((event: 'tickle', callback: (tickle: any) => void) => void) & + ((event: 'push', callback: (push: any) => void) => void); + } - export class PushBullet { - constructor(apiKey: string, options?: {fullResponses: boolean}): this; - me(callback: PushBulletCallback); - devices(options: ListOptions, callback: PushBulletCallback); - devices(callback: PushBulletCallback); - createDevice( - options: Record, - callback: PushBulletCallback - ); - updateDevice( - deviceIden: string, - deviceOptions: Record, - callback: PushBulletCallback - ); - deleteDevice(deviceIden: string, callback: PushBulletCallback); - note( - deviceParameters: DeviceParameters, - title: string, - body: string, - callback: PushBulletCallback - ); - link( - deviceParameters: DeviceParameters, - name: string, - url: string, - body: string, - callback: PushBulletCallback - ); - file( - deviceParameters: DeviceParameters, - filePath: string, - message: string, - callback: PushBulletCallback - ); - dismissPush(pushIden: DeviceParameters, callback: PushBulletCallback); - deletePush(pushIden: DeviceParameters, callback: PushBulletCallback); - deleteAllPushes(callback: PushBulletCallback); - history(options: HistoryOptions, callback: PushBulletCallback); - history(callback: PushBulletCallback); - subscriptions(options: ListOptions, callback: PushBulletCallback); - subscriptions(callback: PushBulletCallback); - subscribe(channelTag: string, callback: PushBulletCallback); - unsubscribe(subscriptionIden: string, callback: PushBulletCallback); - muteSubscription( - subscriptionIden: string, - callback: PushBulletCallback - ); - unmuteSubscription( - subscriptionIden: string, - callback: PushBulletCallback - ); - channelInfo(channelTag: string, callback: PushBulletCallback); - chats(options: ListOptions, callback: PushBulletCallback); - chats(callback: PushBulletCallback); - createChat(email: string, callback: PushBulletCallback); - deleteChat(chatIden: string, callback: PushBulletCallback); - muteChat(chatIden: string, callback: PushBulletCallback); - unmuteChat(chatIden: string, callback: PushBulletCallback); - sendSMS(options: Record, callback: PushBulletCallback); - sendClipboard( - options: Record, - callback: PushBulletCallback - ); - dismissEphemeral( - options: Record, - callback: PushBulletCallback - ); - stream(): PushBulletStream; - enableEncryption( - encryptionPassword: string, - userIden: string - ): PushBulletStream; - } + export class PushBullet { + constructor(apiKey: string, options?: {fullResponses: boolean}): this; + me(callback: PushBulletCallback); + devices(options: ListOptions, callback: PushBulletCallback); + devices(callback: PushBulletCallback); + createDevice(options: Record, callback: PushBulletCallback); + updateDevice( + deviceIden: string, + deviceOptions: Record, + callback: PushBulletCallback + ); + deleteDevice(deviceIden: string, callback: PushBulletCallback); + note( + deviceParameters: DeviceParameters, + title: string, + body: string, + callback: PushBulletCallback + ); + link( + deviceParameters: DeviceParameters, + name: string, + url: string, + body: string, + callback: PushBulletCallback + ); + file( + deviceParameters: DeviceParameters, + filePath: string, + message: string, + callback: PushBulletCallback + ); + dismissPush(pushIden: DeviceParameters, callback: PushBulletCallback); + deletePush(pushIden: DeviceParameters, callback: PushBulletCallback); + deleteAllPushes(callback: PushBulletCallback); + history(options: HistoryOptions, callback: PushBulletCallback); + history(callback: PushBulletCallback); + subscriptions(options: ListOptions, callback: PushBulletCallback); + subscriptions(callback: PushBulletCallback); + subscribe(channelTag: string, callback: PushBulletCallback); + unsubscribe(subscriptionIden: string, callback: PushBulletCallback); + muteSubscription(subscriptionIden: string, callback: PushBulletCallback); + unmuteSubscription(subscriptionIden: string, callback: PushBulletCallback); + channelInfo(channelTag: string, callback: PushBulletCallback); + chats(options: ListOptions, callback: PushBulletCallback); + chats(callback: PushBulletCallback); + createChat(email: string, callback: PushBulletCallback); + deleteChat(chatIden: string, callback: PushBulletCallback); + muteChat(chatIden: string, callback: PushBulletCallback); + unmuteChat(chatIden: string, callback: PushBulletCallback); + sendSMS(options: Record, callback: PushBulletCallback); + sendClipboard(options: Record, callback: PushBulletCallback); + dismissEphemeral( + options: Record, + callback: PushBulletCallback + ); + stream(): PushBulletStream; + enableEncryption( + encryptionPassword: string, + userIden: string + ): PushBulletStream; + } - export default PushBullet; + export default PushBullet; } diff --git a/src/types/pushover-notifications.d.ts b/src/types/pushover-notifications.d.ts index e24ee31166..be55eeb8f8 100644 --- a/src/types/pushover-notifications.d.ts +++ b/src/types/pushover-notifications.d.ts @@ -1,59 +1,59 @@ declare module 'pushover-notifications' { - export type PushoverCallback = - | ((error: Error) => void) - | ((error?: null, response: any) => void); + export type PushoverCallback = + | ((error: Error) => void) + | ((error?: null, response: any) => void); - export type Sound = - | 'pushover' - | 'bike' - | 'bugle' - | 'cashregister' - | 'classical' - | 'cosmic' - | 'falling' - | 'gamelan' - | 'incoming' - | 'intermission' - | 'magic' - | 'mechanical' - | 'pianobar' - | 'siren' - | 'spacealarm' - | 'tugboat' - | 'alien' - | 'climb' - | 'persistent' - | 'echo' - | 'updown' - | 'vibrate' - | 'none'; + export type Sound = + | 'pushover' + | 'bike' + | 'bugle' + | 'cashregister' + | 'classical' + | 'cosmic' + | 'falling' + | 'gamelan' + | 'incoming' + | 'intermission' + | 'magic' + | 'mechanical' + | 'pianobar' + | 'siren' + | 'spacealarm' + | 'tugboat' + | 'alien' + | 'climb' + | 'persistent' + | 'echo' + | 'updown' + | 'vibrate' + | 'none'; - export interface PushoverOptions { - token: string; - user: string; - httpOptions?: {proxy: string}; - onerror?: (error: Error | string) => void; - update_sounds?: boolean; - } + export interface PushoverOptions { + token: string; + user: string; + httpOptions?: {proxy: string}; + onerror?: (error: Error | string) => void; + update_sounds?: boolean; + } - export interface PushoverMessage { - device?: string; - expire?: number; - file?: string | {name: string; data: string}; - message: string; - priority?: number; - retry?: number; - sound?: Sound; - timestamp?: number; - title?: string; - url?: string; - url_title?: string; - } + export interface PushoverMessage { + device?: string; + expire?: number; + file?: string | {name: string; data: string}; + message: string; + priority?: number; + retry?: number; + sound?: Sound; + timestamp?: number; + title?: string; + url?: string; + url_title?: string; + } - export class Pushover { - constructor(options: PushoverOptions); - send(message: PushoverMessage, callback: PushoverCallback); - } + export class Pushover { + constructor(options: PushoverOptions); + send(message: PushoverMessage, callback: PushoverCallback); + } - export default Pushover; + export default Pushover; } diff --git a/src/util.ts b/src/util.ts index dada204b2c..a96059b9c1 100644 --- a/src/util.ts +++ b/src/util.ts @@ -6,99 +6,97 @@ import {logger} from './logger'; import topUserAgents from 'top-user-agents'; export function getSleepTime(store: Store) { - const minSleep = store.minPageSleep as number; - return ( - minSleep + Math.random() * ((store.maxPageSleep as number) - minSleep) - ); + const minSleep = store.minPageSleep as number; + return minSleep + Math.random() * ((store.maxPageSleep as number) - minSleep); } export async function delay(ms: number) { - return new Promise((resolve) => { - setTimeout(resolve, ms); - }); + return new Promise(resolve => { + setTimeout(resolve, ms); + }); } export function noop() { - // Do nothing + // Do nothing } export function isStatusCodeInRange( - statusCode: number, - range: StatusCodeRangeArray + statusCode: number, + range: StatusCodeRangeArray ) { - for (const value of range) { - let min: number; - let max: number; - if (typeof value === 'number') { - min = value; - max = value; - } else { - [min, max] = value; - } + for (const value of range) { + let min: number; + let max: number; + if (typeof value === 'number') { + min = value; + max = value; + } else { + [min, max] = value; + } - if (min <= statusCode && statusCode <= max) { - return true; - } - } + if (min <= statusCode && statusCode <= max) { + return true; + } + } - return false; + return false; } export async function usingResponse( - browser: Browser, - url: string, - cb: (response: Response | null, page: Page, browser: Browser) => Promise + browser: Browser, + url: string, + cb: (response: Response | null, page: Page, browser: Browser) => Promise ): Promise { - return usingPage(browser, async (page, browser) => { - const response = await page.goto(url, {waitUntil: 'domcontentloaded'}); + return usingPage(browser, async (page, browser) => { + const response = await page.goto(url, {waitUntil: 'domcontentloaded'}); - return cb(response, page, browser); - }); + return cb(response, page, browser); + }); } export async function usingPage( - browser: Browser, - cb: (page: Page, browser: Browser) => Promise + browser: Browser, + cb: (page: Page, browser: Browser) => Promise ): Promise { - const page = await browser.newPage(); - page.setDefaultNavigationTimeout(config.page.timeout); - await page.setUserAgent(await getRandomUserAgent()); + const page = await browser.newPage(); + page.setDefaultNavigationTimeout(config.page.timeout); + await page.setUserAgent(await getRandomUserAgent()); - try { - return await cb(page, browser); - } finally { - try { - await closePage(page); - } catch (error: unknown) { - logger.error('usingPage', error); - } - } + try { + return await cb(page, browser); + } finally { + try { + await closePage(page); + } catch (error: unknown) { + logger.error('usingPage', error); + } + } } export async function closePage(page: Page) { - if (!config.browser.lowBandwidth) { - await disableBlockerInPage(page); - } + if (!config.browser.lowBandwidth) { + await disableBlockerInPage(page); + } - await page.close(); + await page.close(); } export async function getRandomUserAgent(): Promise { - const deprecatedUserAgent = (process.env.USER_AGENT - ? process.env.USER_AGENT.includes('\n') - ? process.env.USER_AGENT.split('\n') - : process.env.USER_AGENT.split(',') - : [] - ).map((s) => s.trim()); + const deprecatedUserAgent = (process.env.USER_AGENT + ? process.env.USER_AGENT.includes('\n') + ? process.env.USER_AGENT.split('\n') + : process.env.USER_AGENT.split(',') + : [] + ).map(s => s.trim()); - if (deprecatedUserAgent.length > 0) { - return deprecatedUserAgent[ - Math.floor(Math.random() * deprecatedUserAgent.length) - ]; - } + if (deprecatedUserAgent.length > 0) { + return deprecatedUserAgent[ + Math.floor(Math.random() * deprecatedUserAgent.length) + ]; + } - const userAgent = - topUserAgents[Math.floor(Math.random() * topUserAgents.length)]; - logger.debug('user agent', {userAgent}); - return userAgent; + const userAgent = + topUserAgents[Math.floor(Math.random() * topUserAgents.length)]; + logger.debug('user agent', {userAgent}); + return userAgent; } diff --git a/src/web/index.ts b/src/web/index.ts index c838717e43..af07f91db1 100644 --- a/src/web/index.ts +++ b/src/web/index.ts @@ -2,203 +2,205 @@ import {IncomingMessage, Server, ServerResponse, createServer} from 'http'; import {config, setConfig} from '../config'; import {createReadStream, readdir} from 'fs'; import { - getAllBrands, - getAllModels, - getAllSeries, - storeList, - updateStores + getAllBrands, + getAllModels, + getAllSeries, + storeList, + updateStores, } from '../store/model'; import {isAbsolute, join, normalize, relative} from 'path'; import {logger} from '../logger'; -const approot = join(__dirname, '../../'); +const approot = join(__dirname, '../../../'); const webroot = join(approot, './web'); const contentTypeMap: Record = { - css: 'text/css', - htm: 'text/html', - html: 'text/html', - jpeg: 'image/jpeg', - jpg: 'image/jpeg', - js: 'application/javascript', - json: 'application/json', - png: 'image/png', - txt: 'text/plain' + css: 'text/css', + htm: 'text/html', + html: 'text/html', + jpeg: 'image/jpeg', + jpg: 'image/jpeg', + js: 'application/javascript', + json: 'application/json', + png: 'image/png', + txt: 'text/plain', }; function sendFile( - response: ServerResponse, - path: string, - relativeTo: string = webroot + response: ServerResponse, + path: string, + relativeTo: string = webroot ) { - path = normalize(`./${path}`); - - const fsPath = join(relativeTo, path); - - const relPath = relative(relativeTo, fsPath); - if (!relPath || relPath.startsWith('..') || isAbsolute(relPath)) { - sendError(response, 'Bad request', 400); - return; - } - - try { - const stream = createReadStream(fsPath); - - let responseDead = false; - stream.on('error', (err) => { - responseDead = true; - logger.error(`Error in WebUI stream ${err.message}`); - sendError(response, 'Not found', 404); - }); - - const pathSplit = path.split('.'); - const ext = pathSplit[pathSplit.length - 1].toLowerCase(); - - if (responseDead) { - return; - } - - response.setHeader( - 'Content-Type', - contentTypeMap[ext] ?? contentTypeMap.txt - ); - - stream.on('end', () => response.end()); - stream.pipe(response); - } catch (error: unknown) { - logger.error(`Error in WebUI ${(error as Error).message}`); - sendError(response, 'Internal server error'); - } + path = normalize(`./${path}`); + + const fsPath = join(relativeTo, path); + + const relPath = relative(relativeTo, fsPath); + if (!relPath || relPath.startsWith('..') || isAbsolute(relPath)) { + sendError(response, 'Bad request', 400); + return; + } + + try { + const stream = createReadStream(fsPath); + + let responseDead = false; + stream.on('error', err => { + responseDead = true; + logger.error(`Error in WebUI stream ${err.message}`); + sendError(response, 'Not found', 404); + }); + + const pathSplit = path.split('.'); + const ext = pathSplit[pathSplit.length - 1].toLowerCase(); + + if (responseDead) { + return; + } + + response.setHeader( + 'Content-Type', + contentTypeMap[ext] ?? contentTypeMap.txt + ); + + stream.on('end', () => response.end()); + stream.pipe(response); + } catch (error: unknown) { + logger.error(`Error in WebUI ${(error as Error).message}`); + sendError(response, 'Internal server error'); + } } function sendError(response: ServerResponse, data: string, statusCode = 500) { - response.statusCode = statusCode; - response.setHeader('Content-Type', contentTypeMap.txt); - response.write(data); - response.end(); + response.statusCode = statusCode; + response.setHeader('Content-Type', contentTypeMap.txt); + response.write(data); + response.end(); } function sendJSON(response: ServerResponse, data: any) { - response.setHeader('Content-Type', contentTypeMap.json); - response.write(JSON.stringify(data)); - response.end(); + response.setHeader('Content-Type', contentTypeMap.json); + response.write(JSON.stringify(data)); + response.end(); } function sendConfig(response: ServerResponse) { - sendJSON(response, config); + sendJSON(response, config); } function handleAPI( - request: IncomingMessage, - response: ServerResponse, - urlComponents: string[] + request: IncomingMessage, + response: ServerResponse, + urlComponents: string[] ) { - if (urlComponents.length < 2) { - sendError(response, 'No API route specified', 400); - return; - } - - switch (urlComponents[1]) { - case 'config': - if (request.method === 'PUT') { - const data: string[] = []; - request.on('data', (chunk) => { - data.push(chunk); - }); - request.on('end', () => { - // We ignore errors, client just sent wrong data... - try { - setConfig(JSON.parse(data.join(''))); - updateStores(); - } catch {} - - sendConfig(response); - }); - return; - } - - sendConfig(response); - return; - case 'stores': - sendJSON(response, [...storeList.keys()]); - return; - case 'brands': - sendJSON(response, getAllBrands()); - return; - case 'series': - sendJSON(response, getAllSeries()); - return; - case 'models': - sendJSON(response, getAllModels()); - return; - case 'screenshots': - if (urlComponents.length >= 3) { - const timeStamp = urlComponents[2]; - if (/\D/.test(timeStamp)) { - sendError(response, 'Invalid screenshot timestamp', 400); - return; - } - - sendFile(response, `../success-${timeStamp}.png`); - return; - } - - readdir(approot, (error, files) => { - if (error) { - sendError(response, error.message); - return; - } - - const result = []; - for (const file of files) { - const match = /^success-(\d+)\.png$/.exec(file); - if (!match) { - continue; - } - - result.push(match[1]); - } - - sendJSON(response, result); - }); - return; - default: - sendError(response, 'No API route found for path', 400); - } + if (urlComponents.length < 2) { + sendError(response, 'No API route specified', 400); + return; + } + + switch (urlComponents[1]) { + case 'config': + if (request.method === 'PUT') { + const data: string[] = []; + request.on('data', chunk => { + data.push(chunk); + }); + request.on('end', () => { + // We ignore errors, client just sent wrong data... + try { + setConfig(JSON.parse(data.join(''))); + updateStores(); + } catch { + logger.warn('Could not setup config'); + } + + sendConfig(response); + }); + return; + } + + sendConfig(response); + return; + case 'stores': + sendJSON(response, [...storeList.keys()]); + return; + case 'brands': + sendJSON(response, getAllBrands()); + return; + case 'series': + sendJSON(response, getAllSeries()); + return; + case 'models': + sendJSON(response, getAllModels()); + return; + case 'screenshots': + if (urlComponents.length >= 3) { + const timeStamp = urlComponents[2]; + if (/\D/.test(timeStamp)) { + sendError(response, 'Invalid screenshot timestamp', 400); + return; + } + + sendFile(response, `../success-${timeStamp}.png`); + return; + } + + readdir(approot, (error, files) => { + if (error) { + sendError(response, error.message); + return; + } + + const result = []; + for (const file of files) { + const match = /^success-(\d+)\.png$/.exec(file); + if (!match) { + continue; + } + + result.push(match[1]); + } + + sendJSON(response, result); + }); + return; + default: + sendError(response, 'No API route found for path', 400); + } } function requestListener(request: IncomingMessage, response: ServerResponse) { - const url = request.url!; - const urlComponents = url.slice(1).split('/'); // Remove the leading / - - switch (urlComponents[0]) { - case 'api': - handleAPI(request, response, urlComponents); - break; - default: - sendFile(response, url === '/' ? '/index.html' : url); - break; - } + const url = request.url!; + const urlComponents = url.slice(1).split('/'); // Remove the leading / + + switch (urlComponents[0]) { + case 'api': + handleAPI(request, response, urlComponents); + break; + default: + sendFile(response, url === '/' ? '/index.html' : url); + break; + } } let server: Server | undefined; export async function startAPIServer() { - await stopAPIServer(); - if (process.env.WEB_PORT) { - server = createServer(requestListener); - server.listen(Number(process.env.WEB_PORT)); - } + await stopAPIServer(); + if (process.env.WEB_PORT) { + server = createServer(requestListener); + server.listen(Number(process.env.WEB_PORT)); + } } export async function stopAPIServer() { - return new Promise((resolve) => { - if (server) { - server.close(resolve); - server = undefined; - return; - } - - resolve(null); - }); + return new Promise(resolve => { + if (server) { + server.close(resolve); + server = undefined; + return; + } + + resolve(null); + }); } diff --git a/test/functional/test-notification.ts b/test/functional/test-notification.ts new file mode 100644 index 0000000000..36ba4e0a15 --- /dev/null +++ b/test/functional/test-notification.ts @@ -0,0 +1,38 @@ +import {Link, Store} from '../../src/store/model'; +import open from 'open'; +import {sendNotification} from '../../src/notification'; +import {config} from '../../src/config'; + +const link: Link = { + brand: 'test:brand', + cartUrl: 'https://www.example.com/cartUrl', + model: 'test:model', + price: 100, + series: 'test:series', + url: 'https://www.example.com/url', +}; + +const store: Store = { + currency: '', + labels: { + inStock: { + container: 'test:container', + text: ['test:text'], + }, + }, + links: [link], + name: 'test:name', +}; + +/** + * Send test email. + */ +sendNotification(link, store); + +/** + * Open browser. + */ +if (config.browser.open) { + open(link.cartUrl ?? link.url); + open(link.url); +} diff --git a/test/test-blank.ts b/test/test-blank.ts new file mode 100644 index 0000000000..f3865a1370 --- /dev/null +++ b/test/test-blank.ts @@ -0,0 +1,3 @@ +import * as assert from 'assert'; + +assert.strictEqual(true, true); diff --git a/tsconfig.json b/tsconfig.json index e929463455..ffa97c431c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,15 @@ { + "extends": "./node_modules/gts/tsconfig-google.json", "compilerOptions": { - "target": "es2019", - "module": "commonjs", - "lib": ["dom", "es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"], - "allowJs": true, - "outDir": "build", - "rootDir": "src", - "strict": true, - "noImplicitAny": true, "esModuleInterop": true, + "outDir": "build", "resolveJsonModule": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "sourceMap": true + "rootDir": ".", + // todo: remove + "skipLibCheck": true }, - "include": ["src/**/*"] + "include": [ + "src/**/*.ts", + "test/**/*.ts" + ] }