diff --git a/.dockerignore b/.dockerignore index 1970493661..83048638f1 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,4 +3,5 @@ .vs/ .vscode/ build/ +docs/ node_modules/ diff --git a/.eslintrc.json b/.eslintrc.json index 91110e9bb5..6799ceae8e 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,6 +1,7 @@ { "extends": "./node_modules/gts/", "rules": { + "@typescript-eslint/no-explicit-any": "off", "prettier/prettier": [ "error", { diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md deleted file mode 100644 index b156b86bfb..0000000000 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: "\U0001F41B Bug report" -about: Report a bug for this project -title: '' -labels: '' -assignees: '' - ---- - -## Expected Behavior - - - -## Current Behavior - - - -## Steps to Reproduce - - - - -## Environment - -- OS: - -
-dotenv - -```dotenv -# Place your dotenv within these backticks. Be sure to remove any secrets/passwords. -``` - -
- -## Logs - - diff --git a/.github/ISSUE_TEMPLATE/bug-report.yaml b/.github/ISSUE_TEMPLATE/bug-report.yaml new file mode 100644 index 0000000000..e99dbb4981 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yaml @@ -0,0 +1,54 @@ +name: 🐛 Bug Report +description: File a bug report +title: "[Bug]: " +labels: + - 'type: bug' +body: + - type: markdown + attributes: + value: Thanks for taking the time to fill out this bug report! + - type: textarea + attributes: + label: Expected Behavior + description: What did you expect to happen? + placeholder: Tell us what you see! + validations: + required: true + - type: textarea + attributes: + label: Current Behavior + description: What happened? + placeholder: Tell us what you see! + validations: + required: true + - type: dropdown + attributes: + label: What operating system are you seeing the problem on? + multiple: true + options: + - Linux + - Windows + - macOS + validations: + required: true + - type: textarea + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell + validations: + required: true + - type: textarea + attributes: + label: Configuration + description: Please copy and paste your `dotenv`. This will be automatically formatted into code, so no need for backticks. + render: shell + validations: + required: true + - type: checkboxes + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/jef/streetmerchant/blob/main/CODE_OF_CONDUCT.md) + options: + - label: I agree to follow this project's Code of Conduct + required: true diff --git a/.github/ISSUE_TEMPLATE/feature-request.yaml b/.github/ISSUE_TEMPLATE/feature-request.yaml new file mode 100644 index 0000000000..cae941c962 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yaml @@ -0,0 +1,41 @@ +name: 🚀 Feature Request +description: Formalize a feature request from GitHub Discussions +title: "[Feature]: " +labels: + - 'type: feature' +body: + - type: textarea + attributes: + label: Proposed solution + description: What is solution to this feature request? + placeholder: Solution description. + validations: + required: true + - type: textarea + attributes: + label: Objective + description: Link to discussion. + placeholder: https://github.com/jef/streetmerchant/discussions + validations: + required: true + - type: textarea + attributes: + label: Goals + description: What is the purpose of feature request? + placeholder: Add all relevant goals. + validations: + required: true + - type: textarea + attributes: + label: Non-goals + description: What else could be accomplished with this feature request, but is currently out of scope? + placeholder: Add all relevant non-goals. + validations: + required: true + - type: textarea + attributes: + label: Anti-goals + description: What could go wrong (side effects) if we implement this feature request? + placeholder: Add all relevant anti-goals. + validations: + required: true diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml deleted file mode 100644 index 14cf35e599..0000000000 --- a/.github/dependabot.yaml +++ /dev/null @@ -1,14 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "docker" - directory: "/" - schedule: - interval: "daily" - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "daily" - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 803e8672d9..5436818696 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -3,38 +3,29 @@ on: pull_request: branches: - main - push: - branches: - - main jobs: - build-lint: + build_lint: name: Build and lint runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Setup Node.js - uses: actions/setup-node@v2 - with: - node-version: 16.6.1 - - name: Setup build cache - uses: actions/cache@v2 + uses: actions/setup-node@v4 with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-node- - - name: Install dependencies + node-version: 16.18.0 + - name: Install Dependencies run: npm ci - name: Compile TypeScript run: npm run compile - name: Run linter run: npm run lint - build-docker: + build_docker: name: Build Docker image runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Run paths filter uses: dorny/paths-filter@v2 id: filter diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml index 8e7bead645..f9a3fb63ad 100644 --- a/.github/workflows/documentation.yaml +++ b/.github/workflows/documentation.yaml @@ -4,14 +4,14 @@ on: branches: - main jobs: - build-deploy: + build_deploy: name: Build and publish documentation runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: 3.x - name: Install Python packages diff --git a/.github/workflows/nightly-release.yaml b/.github/workflows/nightly-release.yaml index 306bdcdced..a2b5ed5737 100644 --- a/.github/workflows/nightly-release.yaml +++ b/.github/workflows/nightly-release.yaml @@ -4,35 +4,41 @@ on: - cron: '0 0 * * *' workflow_dispatch: {} jobs: - check-date: - name: Check dates + check_code_change: + name: Check code change runs-on: ubuntu-latest outputs: - should-run: ${{ steps.code-change.outputs.should-run }} + should_run: ${{ steps.code_change.outputs.should_run }} steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Check if code has changed with 24 hours continue-on-error: true - id: code-change + id: code_change run: | - [[ $(git rev-list --after="24 hours" --first-parent HEAD) ]] && echo "::set-output name=should-run::true" - build-release: - name: Build and release Docker image + if [[ $(git rev-list --after="24 hours" --first-parent HEAD) ]]; then + echo "should_run=true" >> $GITHUB_OUTPUT + fi + build_tag_publish: + name: Build, tag and publish Docker image runs-on: ubuntu-latest - needs: check-date - if: needs.check-date.outputs.should-run == 'true' + needs: check_code_change + if: needs.check_code_change.outputs.should_run == 'true' steps: - name: Checkout repository - uses: actions/checkout@v2 - - name: Login into GitHub Container Registry - run: echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin - - name: Build Docker image - run: | - docker build \ - -t "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA:0:7}" \ - -t "ghcr.io/${GITHUB_REPOSITORY}:nightly" . - - name: Release Docker image - run: | - docker push "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA:0:7}" - docker push "ghcr.io/${GITHUB_REPOSITORY}:nightly" + uses: actions/checkout@v3 + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Get short SHA + id: short_sha + run: echo "short_sha=${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" + - name: Build and push Docker image + uses: docker/build-push-action@v3 + with: + context: . + push: true + tags: "ghcr.io/jef/streetmerchant:nightly,ghcr.io/jef/streetmerchant:${{ steps.short_sha.outputs.short_sha }}" diff --git a/.github/workflows/pr-lint.yaml b/.github/workflows/pr-lint.yaml index 0609d4649c..4286ada84d 100644 --- a/.github/workflows/pr-lint.yaml +++ b/.github/workflows/pr-lint.yaml @@ -10,9 +10,10 @@ jobs: lint-pr: name: Lint pull request title runs-on: ubuntu-latest + permissions: + pull-requests: write steps: - name: Lint pull request title uses: jef/conventional-commits-pr-action@v1 with: - comment: false token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 8655ad6ba4..ad82b3f573 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -4,31 +4,48 @@ on: branches: - main jobs: - build-tag-release: - name: Build, tag, and release Docker image + release: + name: Create release runs-on: ubuntu-latest + outputs: + release_created: ${{ steps.release.outputs.release_created }} + tag_name: ${{ steps.release.outputs.tag_name }} + tag_name_no_v: ${{ steps.normalize_tag.outputs.tag_name_no_v }} steps: - name: Checkout repository - uses: actions/checkout@v2 - - name: Setup release please - uses: google-github-actions/release-please-action@v2 + uses: actions/checkout@v3 + - name: Run release-please + uses: google-github-actions/release-please-action@v3 id: release with: token: ${{ secrets.GITHUB_TOKEN }} release-type: node changelog-path: CHANGELOG.md package-name: streetmerchant - - name: Login into GitHub Container Registry - if: ${{ steps.release.outputs.release_created }} - run: echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin - - name: Build Docker image - if: ${{ steps.release.outputs.release_created }} + changelog-types: '[{"type":"feat","section":"Features","hidden":false},{"type":"fix","section":"Bug Fixes","hidden":false},{"type":"chore","section":"Miscellaneous","hidden":false},{"type":"ci","section":"Continuous Integration","hidden":false},{"type":"docs","section":"Documentation","hidden":false},{"type":"refactor","section":"Refactoring","hidden":false},{"type":"perf","section":"Performance","hidden":false},{"type":"test","section":"Tests","hidden":false}]' + - name: Normalize tag name + if: steps.release.outputs.release_created == 'true' + id: normalize_tag run: | - docker build \ - -t "ghcr.io/${GITHUB_REPOSITORY}:${{ steps.release.outputs.tag_name }}" \ - -t "ghcr.io/${GITHUB_REPOSITORY}:latest" . - - name: Release Docker image - if: ${{ steps.release.outputs.release_created }} - run: | - docker push "ghcr.io/${GITHUB_REPOSITORY}:${{ steps.release.outputs.tag_name }}" - docker push "ghcr.io/${GITHUB_REPOSITORY}:latest" + tag=${{ steps.release.outputs.tag_name }} + echo "tag_name_no_v=${tag#v}" >> "$GITHUB_OUTPUT" + build_tag_publish: + name: Build, tag, and publish + runs-on: ubuntu-latest + needs: release + if: needs.release.outputs.release_created == 'true' + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push Docker image + uses: docker/build-push-action@v3 + with: + context: . + push: true + tags: "ghcr.io/jef/streetmerchant:latest,ghcr.io/jef/streetmerchant:${{ needs.release.outputs.tag_name_no_v }}" diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index e33ec19eb3..e43d9c3f57 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -23,6 +23,6 @@ jobs: stale-pr-message: ${{ env.STALE_MESSAGE }} env: CLOSE_MESSAGE: 'This issue has been closed because it is stale. Reopen if necessary.' - EXEMPT_LABEL: 'priority: low,priority: normal, priority: high,status: help wanted,status: in progress,status: needs triage' + EXEMPT_LABEL: 'priority: low,priority: normal,priority: high,status: help wanted,status: in progress,status: needs triage' STALE_LABEL: 'status: stale' STALE_MESSAGE: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 10 days' diff --git a/.gitignore b/.gitignore index 3829afeae4..5adeacf962 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ node_modules/ dotenv *.proxies success-*.png +screenshots/ *.wav *.mp3 diff --git a/.node-version b/.node-version index d9216d9a90..94f5f26dcb 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -16.6.1 +16.18.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index fee04d3136..063a0e42e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,338 @@ # Changelog +## [3.11.0](https://github.com/jef/streetmerchant/compare/v3.10.0...v3.11.0) (2025-01-30) + + +### Features + +* add docs, add env vars, add country code, deprecate twitch, linting ([#3198](https://github.com/jef/streetmerchant/issues/3198)) ([c2ed997](https://github.com/jef/streetmerchant/commit/c2ed99705f6139a6ceb31e8113277e128f7d5e34)) +* add MSI US storefront ([#3199](https://github.com/jef/streetmerchant/issues/3199)) ([c596c20](https://github.com/jef/streetmerchant/commit/c596c206f13d05d1afdd1228775e3c9e283acd47)) + + +### Documentation + +* add 5000 series to filter.md ([4eb678a](https://github.com/jef/streetmerchant/commit/4eb678aeb318707a5b4a6013a1e8b85e037b9fe2)) + +## [3.10.0](https://github.com/jef/streetmerchant/compare/v3.9.0...v3.10.0) (2025-01-29) + + +### Features + +* add 50xx series ([#3190](https://github.com/jef/streetmerchant/issues/3190)) ([db07796](https://github.com/jef/streetmerchant/commit/db07796ef99cc55c7ccdc67df0884b26e361c440)) +* add 50xx series discord notification groups ([#3193](https://github.com/jef/streetmerchant/issues/3193)) ([f59d3fc](https://github.com/jef/streetmerchant/commit/f59d3fcbb0b40e0db4e0da9e8b3c60c7d7c114a4)) +* add more 50xx series, add templates for adding more links ([#3191](https://github.com/jef/streetmerchant/issues/3191)) ([ce6d084](https://github.com/jef/streetmerchant/commit/ce6d08490c11fbffaeb932ddc0c6f9262d079c4d)) +* add new microcenters locations, more 4090 GPUs, fixed incorrect URLs ([#3181](https://github.com/jef/streetmerchant/issues/3181)) ([218b0c3](https://github.com/jef/streetmerchant/commit/218b0c30757aaaa5ddc922f32e330457c0a82318)) +* add NTFY.SH agent ([#3195](https://github.com/jef/streetmerchant/issues/3195)) ([e18f231](https://github.com/jef/streetmerchant/commit/e18f2316bdc43c06c164e77019d68fd614afdc89)) + + +### Miscellaneous + +* update bestbuy selectors ([#3186](https://github.com/jef/streetmerchant/issues/3186)) ([810cefc](https://github.com/jef/streetmerchant/commit/810cefcd56129448d485127064478b985acb992b)) + + +### Continuous Integration + +* update pr linter ([25d556c](https://github.com/jef/streetmerchant/commit/25d556c736a90b64f4312e4a4332dbc922b71f66)) + + +### Documentation + +* remove badges ([4388e9a](https://github.com/jef/streetmerchant/commit/4388e9a5e0cb1d1e544b5614fdba37efc2475d52)) + +## [3.9.0](https://github.com/jef/streetmerchant/compare/v3.8.3...v3.9.0) (2023-05-15) + + +### Features + +* add support for 4080 and more 4090 stores ([#3104](https://github.com/jef/streetmerchant/issues/3104)) ([d8915cf](https://github.com/jef/streetmerchant/commit/d8915cf3579c29d0b48fa2ec247f460b0b462e13)) + + +### Bug Fixes + +* update Target's url for PS5 Console ([#3098](https://github.com/jef/streetmerchant/issues/3098)) ([5eb7c12](https://github.com/jef/streetmerchant/commit/5eb7c126300a3d86cdafc0b73f3765fffcfdcf2d)) + + +### Documentation + +* fix badge ([bb01bed](https://github.com/jef/streetmerchant/commit/bb01bedb037d4230c85a7fe59ce40ef7e29ea5a1)) +* use main branch for badge ([8dab4bb](https://github.com/jef/streetmerchant/commit/8dab4bb1e3441493a809c603b078c69777fbd8ff)) + + +### Miscellaneous + +* remove dependabot ([850f5c8](https://github.com/jef/streetmerchant/commit/850f5c8af74efb06a93f4065b83bc71e81fa8306)) + +## [3.8.3](https://github.com/jef/streetmerchant/compare/v3.8.2...v3.8.3) (2022-11-28) + + +### Continuous Integration + +* give tag an output ([36771fd](https://github.com/jef/streetmerchant/commit/36771fd55539c17b7fb589b2e5811644e62916fa)) + + +### Miscellaneous + +* **docker:** remove erroneous extra copy ([9225582](https://github.com/jef/streetmerchant/commit/922558262b664da1e8f7a69a156582345f35a291)) +* ignore docs and add web to Dockerfile ([95f112c](https://github.com/jef/streetmerchant/commit/95f112c500168b389db5da5544f2d105518835ce)) + +## [3.8.2](https://github.com/jef/streetmerchant/compare/v3.8.1...v3.8.2) (2022-11-28) + + +### Continuous Integration + +* quote tags ([9ce7dac](https://github.com/jef/streetmerchant/commit/9ce7dac951552d239c83e56bebadbfa22ae02110)) + +## [3.8.1](https://github.com/jef/streetmerchant/compare/v3.8.0...v3.8.1) (2022-11-28) + + +### Continuous Integration + +* fix tags ([e67a383](https://github.com/jef/streetmerchant/commit/e67a3838e195b0e6c3039546f6e48d30e291fd6a)) +* revert username ([2d702b3](https://github.com/jef/streetmerchant/commit/2d702b32b4ea370d27071f4ffa833c3c0ac8cc88)) + +## [3.8.0](https://github.com/jef/streetmerchant/compare/v3.7.1...v3.8.0) (2022-11-28) + + +### Features + +* add support for 4090 series (US - b&h/newegg/bestbuy) ([#3085](https://github.com/jef/streetmerchant/issues/3085)) ([0c84075](https://github.com/jef/streetmerchant/commit/0c840753911248d53ac272300c085940ca2c0ac9)) +* **unifi:** adds protect products ([#3082](https://github.com/jef/streetmerchant/issues/3082)) ([fa7c423](https://github.com/jef/streetmerchant/commit/fa7c4232f440f13e9fd75d06a0a2c7806350f340)) + + +### Documentation + +* change 3090 to 4090 ([dccaa52](https://github.com/jef/streetmerchant/commit/dccaa52ce99125740fcfdf3c9a71bdf261574097)) +* update badges ([82cafc4](https://github.com/jef/streetmerchant/commit/82cafc4135bb94abddfb8677703a9306010e0db3)) + + +### Continuous Integration + +* fix cache ([e1b4320](https://github.com/jef/streetmerchant/commit/e1b43206fcf037c140e507bb4d08c72248d76dcc)) +* replace runs with run ([9ec2018](https://github.com/jef/streetmerchant/commit/9ec2018d58438897cb7ed01157433536171754ae)) +* use github actor ([cf83753](https://github.com/jef/streetmerchant/commit/cf83753853344a328379f0b3f101a26957254096)) +* use github token ([27dc9d2](https://github.com/jef/streetmerchant/commit/27dc9d220ccc9ea98976ec271c526d72c8724b9a)) +* use single quotes ([bfc5bfd](https://github.com/jef/streetmerchant/commit/bfc5bfd29f0034e99a7d2f006cd480401c0cfd35)) + +## [3.7.1](https://github.com/jef/streetmerchant/compare/v3.7.0...v3.7.1) (2022-10-21) + + +### Continuous Integration + +* checkout when publish ([a5c0ed8](https://github.com/jef/streetmerchant/commit/a5c0ed8d9f22169649d700c1d7d02b18cdf658d6)) + +## [3.7.0](https://github.com/jef/streetmerchant/compare/v3.6.0...v3.7.0) (2022-10-21) + + +### Features + +* **ci:** start using PAT ([207c760](https://github.com/jef/streetmerchant/commit/207c7605eff2a812b7488dc701d164fd2f65c1f1)) + + +### Bug Fixes + +* **ci:** update release ([4c1f23e](https://github.com/jef/streetmerchant/commit/4c1f23e68ec1d63ed9dd17c28f83444e3bb14e6f)) + + +### Continuous Integration + +* remove fetch-depth ([c21d412](https://github.com/jef/streetmerchant/commit/c21d412ed5959bd7a0a56a6dcf624ff9e6c2dac8)) +* update changelog-types ([0a8334a](https://github.com/jef/streetmerchant/commit/0a8334aa440e3e6acfbb9cfe392c72af36a391bf)) +* update naming ([5d3ca2e](https://github.com/jef/streetmerchant/commit/5d3ca2ead9e93384436948b9ef60d377b2bccf34)) + +## [3.6.0](https://github.com/jef/streetmerchant/compare/v3.5.0...v3.6.0) (2022-10-21) + + +### Features + +* add 3080ti ([#2598](https://github.com/jef/streetmerchant/issues/2598)) ([4cfbd37](https://github.com/jef/streetmerchant/commit/4cfbd37ae0d28d1c2b8cf596b5dcb941daa7d9bc)) +* add 3080ti ([#2600](https://github.com/jef/streetmerchant/issues/2600)) ([51c9b3a](https://github.com/jef/streetmerchant/commit/51c9b3ab2ac251c9c3abebf64025e1a03ecf4944)) +* add a few stores for spain ([#2646](https://github.com/jef/streetmerchant/issues/2646)) ([0b060e8](https://github.com/jef/streetmerchant/commit/0b060e8f6aca1793d04474210aeec98212172014)) +* add alternate-fr, 3070ti, change alternate to alternate.de ([#2653](https://github.com/jef/streetmerchant/issues/2653)) ([8c7b8aa](https://github.com/jef/streetmerchant/commit/8c7b8aabe4633757dea836b7d11af2a407869e90)) +* add INCOGNITO to dotenv-example and volta support ([#2484](https://github.com/jef/streetmerchant/issues/2484)) ([b579052](https://github.com/jef/streetmerchant/commit/b57905291df85ee2f722e5e3a81d1cecd0ab6ee4)) +* add interactive captcha handler with Slack and Discord ([#2385](https://github.com/jef/streetmerchant/issues/2385)) ([409769e](https://github.com/jef/streetmerchant/commit/409769e6dbd3add614fcd985731bb244297a2c2d)) +* add ldlc-italy and fixes ollo/hardware-planet ([#2903](https://github.com/jef/streetmerchant/issues/2903)) ([d4f4076](https://github.com/jef/streetmerchant/commit/d4f4076af84a960575dd9beb672e6ad5d63b2de2)), closes [#2867](https://github.com/jef/streetmerchant/issues/2867) +* add SCREENSHOT_DIR config option ([#2801](https://github.com/jef/streetmerchant/issues/2801)) ([fe99aa4](https://github.com/jef/streetmerchant/commit/fe99aa476ccfdb73b29c45beaaa972ac419a39b4)) +* add ubiquiti store and dream machine model. ([#3034](https://github.com/jef/streetmerchant/issues/3034)) ([87301fe](https://github.com/jef/streetmerchant/commit/87301fefb7fef7710d52163132546c7c0830e8df)) +* add waitUntil and waitForSelctor to linksBuilder ([#2437](https://github.com/jef/streetmerchant/issues/2437)) ([cac7c20](https://github.com/jef/streetmerchant/commit/cac7c20193caaec5d41291104e66aa01a65adceb)) +* **captcha:** add support for configurable capture type ([#2468](https://github.com/jef/streetmerchant/issues/2468)) ([6e614a2](https://github.com/jef/streetmerchant/commit/6e614a24918f38d189a3d3b70174fbd1590f78cc)) +* change max price behavior ([9b02c36](https://github.com/jef/streetmerchant/commit/9b02c36370aaf7fef20a90b2427273c2f7b30f00)) +* color empty stores ([#2312](https://github.com/jef/streetmerchant/issues/2312)) ([bbfa808](https://github.com/jef/streetmerchant/commit/bbfa808b820ee2d16c65dfdcecce58645f4899d0)) +* **coolmod:** add linksBuilder and update selectors ([#2803](https://github.com/jef/streetmerchant/issues/2803)) ([f297e1d](https://github.com/jef/streetmerchant/commit/f297e1d7d3d03ab57e2e5c4dcf150f0d44ed750d)) +* **equippr:** add links builder ([#2795](https://github.com/jef/streetmerchant/issues/2795)) ([e631d80](https://github.com/jef/streetmerchant/commit/e631d805fcc07f057b6ad3204497446fd6377223)) +* **gotify:** add priority option ([#2546](https://github.com/jef/streetmerchant/issues/2546)) ([32fe440](https://github.com/jef/streetmerchant/commit/32fe440049ce97c5683ca03276212899b2211af5)) +* **notification:** add gotify ([8f2de5d](https://github.com/jef/streetmerchant/commit/8f2de5dc68667f6b9f0033bed129fd6cdbd9d8a7)), closes [#2541](https://github.com/jef/streetmerchant/issues/2541) [#2536](https://github.com/jef/streetmerchant/issues/2536) +* **notification:** add support for Free mobile ([#2285](https://github.com/jef/streetmerchant/issues/2285)) ([6be2e0d](https://github.com/jef/streetmerchant/commit/6be2e0d491646d6e88f72f67c694874b11cda03a)) +* **notifications:** add apple push notifications ([#2077](https://github.com/jef/streetmerchant/issues/2077)) ([6b78b2e](https://github.com/jef/streetmerchant/commit/6b78b2ee4445ad2b868b6f848730a474ca12d657)) +* **pushover:** ability to specify device ([#2101](https://github.com/jef/streetmerchant/issues/2101)) ([d03aea0](https://github.com/jef/streetmerchant/commit/d03aea05a7783c9cc6a18c8baf0381050c105357)) +* **pushover:** add support for sound ([#2203](https://github.com/jef/streetmerchant/issues/2203)) ([83ce922](https://github.com/jef/streetmerchant/commit/83ce922761f85a13424ed43a1961668ffc870485)) +* **redis:** introduce pub/sub ([#2855](https://github.com/jef/streetmerchant/issues/2855)) ([d6d8ef2](https://github.com/jef/streetmerchant/commit/d6d8ef2171e1a2f52218c7ab84a463d916e27d25)) +* **series:** support for rx6700xt ([#2290](https://github.com/jef/streetmerchant/issues/2290)) ([113c9ce](https://github.com/jef/streetmerchant/commit/113c9ce19f3ed1f140eec7cd555ec373f25d256f)) +* **store:** add 3050 in topachat and materiel ([#2945](https://github.com/jef/streetmerchant/issues/2945)) ([fc0c3da](https://github.com/jef/streetmerchant/commit/fc0c3da6fba105c521c102b1a071adefd364bc4c)) +* **store:** add amd-at ([#2462](https://github.com/jef/streetmerchant/issues/2462)) ([441617f](https://github.com/jef/streetmerchant/commit/441617f6729ab61174f7bcfe287c41a34a78728f)) +* **store:** add amd-be store ([#2338](https://github.com/jef/streetmerchant/issues/2338)) ([6e9b1a9](https://github.com/jef/streetmerchant/commit/6e9b1a9640ca93f620623d53624230514fac6d40)) +* **store:** add amd-nl store ([#2072](https://github.com/jef/streetmerchant/issues/2072)) ([49c9e8c](https://github.com/jef/streetmerchant/commit/49c9e8c0dc5c3b25ce2aa20265ccd2865f229385)) +* **store:** Add AO and BT (UK) ([#2089](https://github.com/jef/streetmerchant/issues/2089)) ([1714e89](https://github.com/jef/streetmerchant/commit/1714e89af7964d06b01120fb75595ef8ec8177ba)) +* **store:** add cyberport-at ([#2463](https://github.com/jef/streetmerchant/issues/2463)) ([5a744b1](https://github.com/jef/streetmerchant/commit/5a744b1add24dd4d3c250f41382a034212d9c5b0)) +* **store:** add materiel.net (french), 35 3060ti references ([#2287](https://github.com/jef/streetmerchant/issues/2287)) ([0ebe745](https://github.com/jef/streetmerchant/commit/0ebe7451e4e4c6e46c64e3782bd51a92ce594dca)) +* **store:** add mediamarkt austria ([#1836](https://github.com/jef/streetmerchant/issues/1836)) ([ae8e72a](https://github.com/jef/streetmerchant/commit/ae8e72a73044b8311add15d2b5c10936bae16e82)) +* **store:** add Microsoft (CA) for Xbox X/S ([#2764](https://github.com/jef/streetmerchant/issues/2764)) ([ca784c8](https://github.com/jef/streetmerchant/commit/ca784c897845609afaa6c7efbc8024cb039229db)) +* **store:** add Microsoft for Xbox S/X ([#2738](https://github.com/jef/streetmerchant/issues/2738)) ([d06d050](https://github.com/jef/streetmerchant/commit/d06d050613cfc7e0710e14717dadbb6784552bef)) +* **store:** add MightyApe, NoelLeeming and TheWarehouse (NZ) ([#2133](https://github.com/jef/streetmerchant/issues/2133)) ([e2d8040](https://github.com/jef/streetmerchant/commit/e2d804027a3ec6a19201ef9ce35dcb4c4dee7025)) +* **store:** add multicom.no and more products to NO stores ([#2483](https://github.com/jef/streetmerchant/issues/2483)) ([41305f1](https://github.com/jef/streetmerchant/commit/41305f1ed5a81240ba7aa0dda1619d635d917371)) +* **stores-nz:** update labels ([#2486](https://github.com/jef/streetmerchant/issues/2486)) ([c0f46d7](https://github.com/jef/streetmerchant/commit/c0f46d77cf9d4a3f7481aec5b0ddf33883b47d6e)) +* use new nightly release build ([51118ba](https://github.com/jef/streetmerchant/commit/51118babd7e86d07ad4c7319a51e9a20c1a24a56)) +* **web:** add select all/none for columns & black theme ([#2878](https://github.com/jef/streetmerchant/issues/2878)) ([2ff7f58](https://github.com/jef/streetmerchant/commit/2ff7f58691c9233dbfcd49eee6b3cafb800c8539)) + + +### Bug Fixes + +* add missing tests in Dockerfile ([#2323](https://github.com/jef/streetmerchant/issues/2323)) ([cd6e1f6](https://github.com/jef/streetmerchant/commit/cd6e1f614bcaf00bc468c32a1b5a98cb51c7730f)) +* **alternate:** use button selector instead of text ([#2419](https://github.com/jef/streetmerchant/issues/2419)) ([35f9eb4](https://github.com/jef/streetmerchant/commit/35f9eb43b6cca8a92f60ba2870e60a225b4c1da6)) +* amazon prices ([#2914](https://github.com/jef/streetmerchant/issues/2914)) ([f7236b3](https://github.com/jef/streetmerchant/commit/f7236b3eaa4a021ac1ba9a87067f4bfa543b17d6)), closes [#2926](https://github.com/jef/streetmerchant/issues/2926) +* **amazon-es:** use euroFormat ([#2371](https://github.com/jef/streetmerchant/issues/2371)) ([4eb702b](https://github.com/jef/streetmerchant/commit/4eb702b9a1187c8dcf159ea991ab1049c3c44bb2)) +* **amazon-eu:** checking price selector ([#2856](https://github.com/jef/streetmerchant/issues/2856)) ([19afe41](https://github.com/jef/streetmerchant/commit/19afe4197245b867b59f87f830ac08529924e6ea)) +* **amazon:** false positives for xbox ([#2497](https://github.com/jef/streetmerchant/issues/2497)) ([790fe9b](https://github.com/jef/streetmerchant/commit/790fe9b6cf4f9627e7f3dc7acc572737a739e4cc)) +* **apns:** use when specified ([99a274d](https://github.com/jef/streetmerchant/commit/99a274dbea088a6bcb053b1c1bf7812d0796442a)) +* **bestbuy-ca:** avoid false positive ([#2694](https://github.com/jef/streetmerchant/issues/2694)) ([0c589a7](https://github.com/jef/streetmerchant/commit/0c589a71f259c80ff21a4bb623f9316cb7702a61)) +* **captcha:** use Slack captcha handler token when provided ([#2460](https://github.com/jef/streetmerchant/issues/2460)) ([164902a](https://github.com/jef/streetmerchant/commit/164902a587d80f0421b44079e0616ba37a7a743f)), closes [#2428](https://github.com/jef/streetmerchant/issues/2428) +* clear cookies when rotating proxies ([#2575](https://github.com/jef/streetmerchant/issues/2575)) ([8854ce9](https://github.com/jef/streetmerchant/commit/8854ce97bba7858dfc9385530e0c090200944ede)) +* **discord:** add Discord.ClientOptions ([#2714](https://github.com/jef/streetmerchant/issues/2714)) ([3787c54](https://github.com/jef/streetmerchant/commit/3787c543964489fe5893ca6e6f4ac17593f310d5)) +* **discord:** properly wait for webhooks ([#2352](https://github.com/jef/streetmerchant/issues/2352)) ([bc59da1](https://github.com/jef/streetmerchant/commit/bc59da11d512f6f55449781cb8f7f4bd1d3e7e57)) +* **docker:** disable opening browser ([d13f7f1](https://github.com/jef/streetmerchant/commit/d13f7f1ff91ada223e8ce7eb50d9a80030cbe668)) +* **lookup:** prevent terminal from being hidden ([#2461](https://github.com/jef/streetmerchant/issues/2461)) ([39fac90](https://github.com/jef/streetmerchant/commit/39fac90ba4feadb7e5c681db60e60a83749f5e62)) +* **microcenter:** add outOfStock label ([#2432](https://github.com/jef/streetmerchant/issues/2432)) ([092919a](https://github.com/jef/streetmerchant/commit/092919ab349edac6a8b5b4747917a1a232235da7)), closes [#2407](https://github.com/jef/streetmerchant/issues/2407) +* **nodemon:** use npx with ts-node ([#2423](https://github.com/jef/streetmerchant/issues/2423)) ([b6ac6c5](https://github.com/jef/streetmerchant/commit/b6ac6c53ddc34ac35b537dd99415bbcb9eec0de7)) +* parsing prices with thousands separator and European format ([#2153](https://github.com/jef/streetmerchant/issues/2153)) ([61f8e3a](https://github.com/jef/streetmerchant/commit/61f8e3a9a03136682035881fce6d14356717d1ac)) +* partial url regexp ([#2382](https://github.com/jef/streetmerchant/issues/2382)) ([61af2a4](https://github.com/jef/streetmerchant/commit/61af2a4325733463c918396868d313b7632bb310)) +* **playstation:** fix inStock selector ([#2187](https://github.com/jef/streetmerchant/issues/2187)) ([b0efc83](https://github.com/jef/streetmerchant/commit/b0efc837bc554f5c8635e125b67775d8b1f8f6b3)) +* **puppeteer:** cannot read property ([#2987](https://github.com/jef/streetmerchant/issues/2987)) ([04fbdc1](https://github.com/jef/streetmerchant/commit/04fbdc1b9a16532fdd2fb6e681191ae6ca7ddd89)) +* remove spaces from price ([#2482](https://github.com/jef/streetmerchant/issues/2482)) ([eb76f0d](https://github.com/jef/streetmerchant/commit/eb76f0d2b78726c4380853bd47edcf9b1302e7bb)) +* **terraform:** update IAM configuration for ECS deployment ([#2675](https://github.com/jef/streetmerchant/issues/2675)) ([9c346e7](https://github.com/jef/streetmerchant/commit/9c346e70fac17854d347dfbdbc238bfb0056c6a8)) +* **web:** add favicon to prevent missing icon console error ([#2375](https://github.com/jef/streetmerchant/issues/2375)) ([2be33ac](https://github.com/jef/streetmerchant/commit/2be33ac6147f8f7460d108f361d954b17a335bd9)) +* **xbox:** false positive ([#2726](https://github.com/jef/streetmerchant/issues/2726)) ([e5e8481](https://github.com/jef/streetmerchant/commit/e5e84814379c0d777188b6e321edbe0b780ab3fd)) + + +### Refactoring + +* **captcha:** use seconds instead of ms ([#2424](https://github.com/jef/streetmerchant/issues/2424)) ([d652b49](https://github.com/jef/streetmerchant/commit/d652b4936435377d36268141a2b63c8798f7f95b)) +* **freemobile:** remove local throw ([bf8f242](https://github.com/jef/streetmerchant/commit/bf8f242f4b33796fcee91a863f0e086fcec29537)) +* **materiel:** update docs, change name ([7ec8a16](https://github.com/jef/streetmerchant/commit/7ec8a160cf9844df34578fe9f413b88d6141178c)) +* simplify maxPrice logic ([a25b7f1](https://github.com/jef/streetmerchant/commit/a25b7f19cc8e403ffd7856e631cde7e9df63f1cc)) +* **store:** replace euroFormat with regex ([#2131](https://github.com/jef/streetmerchant/issues/2131)) ([795c723](https://github.com/jef/streetmerchant/commit/795c7230ad4632c81b17f5c2aeb3b0e88b2b04e3)) + + +### Documentation + +* add better heroku documentation ([#2942](https://github.com/jef/streetmerchant/issues/2942)) ([f344615](https://github.com/jef/streetmerchant/commit/f344615c34254f9da937cffb84d95bb7fce4c0ee)) +* fix sort-able tables ([08789a7](https://github.com/jef/streetmerchant/commit/08789a70c4b9e76000f881edda35acd07bdd60b9)) +* make templates required ([00b468a](https://github.com/jef/streetmerchant/commit/00b468a73832b959e0c6ac1ed67b0b23856db76b)) +* remove twitter ([d19d05c](https://github.com/jef/streetmerchant/commit/d19d05c2e5d4e6e20085116177e4320f74ddfe54)) +* remove twitter ([1aa0224](https://github.com/jef/streetmerchant/commit/1aa0224da0718a8058996511f73c672938a231fb)) +* toggle light/dark mode ([1e76d5a](https://github.com/jef/streetmerchant/commit/1e76d5a270e7fb678ccea3649b38f323b346d702)) +* update badges ([c2c8531](https://github.com/jef/streetmerchant/commit/c2c8531ea26e2b75f50ed384f5128e5df54053e9)) +* update edit_uri location ([af603c2](https://github.com/jef/streetmerchant/commit/af603c20aed49e01fc6923b1be1759a74575c12f)) +* update incorrect store description for alternate-de ([#2765](https://github.com/jef/streetmerchant/issues/2765)) ([28ce7e9](https://github.com/jef/streetmerchant/commit/28ce7e995b6ea521f03ed5845387aa3858a34f72)) +* update issue templates ([74d71e4](https://github.com/jef/streetmerchant/commit/74d71e457956743566796404458bd1d5d84598db)) +* update issue templates ([9aa3f16](https://github.com/jef/streetmerchant/commit/9aa3f164a59cd521701f55bfe4a54872b1c5fc4d)) +* update issue templates ([7171113](https://github.com/jef/streetmerchant/commit/71711131ff4c57abe3016e543b7d0ce994e0ecd0)) +* update node references ([f65aab8](https://github.com/jef/streetmerchant/commit/f65aab87dade27c9f271ca816f83fe5a57ff7da6)) +* update Xbox Series S and X price limit desc ([#2098](https://github.com/jef/streetmerchant/issues/2098)) ([ba35706](https://github.com/jef/streetmerchant/commit/ba35706cca84a425da8d5a5bd6b86dbecbadffa1)) +* use node lts ([2a482e3](https://github.com/jef/streetmerchant/commit/2a482e3dfaaeaa2f285b98d32d67d44bdd4ef6f4)), closes [#2776](https://github.com/jef/streetmerchant/issues/2776) + + +### Miscellaneous + +* add APNS to dotenv-example ([#2174](https://github.com/jef/streetmerchant/issues/2174)) ([4bd048f](https://github.com/jef/streetmerchant/commit/4bd048ff7a496e82e66293a9706581b8d10af6b3)) +* add links to RX 6700 XT in German stores ([#2736](https://github.com/jef/streetmerchant/issues/2736)) ([430ec73](https://github.com/jef/streetmerchant/commit/430ec73ecd7e37477b0088f247a3e9bf72c82586)) +* **alternate-de:** add gpus ([#2797](https://github.com/jef/streetmerchant/issues/2797)) ([a6d7447](https://github.com/jef/streetmerchant/commit/a6d74472f3dec9cc50e8a3a507801301c67aa5cd)) +* **alternate:** add new oos label ([#2409](https://github.com/jef/streetmerchant/issues/2409)) ([5937d01](https://github.com/jef/streetmerchant/commit/5937d0141d1c34fdb90475bffbbe32a2977c789b)) +* **alternate:** add PS5 bundle ([#2562](https://github.com/jef/streetmerchant/issues/2562)) ([1122075](https://github.com/jef/streetmerchant/commit/11220750143df7ebdc011aafccb8e035bfd2bc5d)) +* **alternate:** update links and selectors ([#2282](https://github.com/jef/streetmerchant/issues/2282)) ([ea095a3](https://github.com/jef/streetmerchant/commit/ea095a364c250f805704c1189c0f3e697e09673d)) +* **amazon-fr:** update evga 3080 ftw3 link ([#2286](https://github.com/jef/streetmerchant/issues/2286)) ([5b2fe88](https://github.com/jef/streetmerchant/commit/5b2fe88a83f17ff98ebe5c91806c7eb5c1dc3bdc)) +* **amazon-uk:** add 3060 cards ([#2229](https://github.com/jef/streetmerchant/issues/2229)) ([983cc52](https://github.com/jef/streetmerchant/commit/983cc525164744e4d3bff1475d12b5563d23200e)) +* **amd:** add rx6800xt midnight black ([#2321](https://github.com/jef/streetmerchant/issues/2321)) ([c7e24e7](https://github.com/jef/streetmerchant/commit/c7e24e77d415819d27043d5814b2133b46549e57)) +* **amd:** update rx6900xt urls ([#2094](https://github.com/jef/streetmerchant/issues/2094)) ([7fcce58](https://github.com/jef/streetmerchant/commit/7fcce586bf03a573a1bba143c7d56e046418d31f)) +* **amd:** update rx6900xt urls ([#2876](https://github.com/jef/streetmerchant/issues/2876)) ([88ec46e](https://github.com/jef/streetmerchant/commit/88ec46e2f8e3aa0ccc4af3ecddf2311c31c0509c)) +* **asus:** update urls ([#2155](https://github.com/jef/streetmerchant/issues/2155)) ([245d110](https://github.com/jef/streetmerchant/commit/245d110d0a52df8b2d05f020aaaa1bfa8be7cab4)) +* **bestbuy:** add 3080ti models ([#2670](https://github.com/jef/streetmerchant/issues/2670)) ([cc0aaec](https://github.com/jef/streetmerchant/commit/cc0aaeca77dd18a2c9797055f26edf6935fa755b)) +* bump dependencies ([10f7e0c](https://github.com/jef/streetmerchant/commit/10f7e0cf5d8f633aa0195a1f9403965b4347e017)) +* bump dependencies ([#2413](https://github.com/jef/streetmerchant/issues/2413)) ([3c00eca](https://github.com/jef/streetmerchant/commit/3c00eca22378afb2a18aa76c1d4204107e6364c2)) +* bump node 16.5.0 ([4e3eade](https://github.com/jef/streetmerchant/commit/4e3eadea083071eba563dffc70d749db334dce69)) +* bump node version ([9ba964a](https://github.com/jef/streetmerchant/commit/9ba964a587158b551d7217764eb9799073aea21f)) +* bump node, implement proper ci cache ([9b0b4d1](https://github.com/jef/streetmerchant/commit/9b0b4d19dc99cfc06595bed26ec6232197e56e11)) +* bump stale workflow to 60 days ([3c1419f](https://github.com/jef/streetmerchant/commit/3c1419f170b1d00aa6ad08ad89752fc8f9134a93)) +* change url ([2af1531](https://github.com/jef/streetmerchant/commit/2af153192c2cf3ac2bf9ba0d1d3201f250363c9b)) +* change verbiage to be more generic ([e006c48](https://github.com/jef/streetmerchant/commit/e006c48795b8fa104f0cee5584517a5f164d6512)) +* **computeruniverse:** add backoff code ([#2542](https://github.com/jef/streetmerchant/issues/2542)) ([42a24a6](https://github.com/jef/streetmerchant/commit/42a24a633c537941d63a6b76ed9598179dda9ea4)) +* **coolblue:** add ps5 consoles ([#2597](https://github.com/jef/streetmerchant/issues/2597)) ([4bb58ac](https://github.com/jef/streetmerchant/commit/4bb58ac26192354ccbcd0c416aba78df2234cf19)) +* **currys:** add rx6800, rx6800xt and rx6900xt ([#2236](https://github.com/jef/streetmerchant/issues/2236)) ([211e3e2](https://github.com/jef/streetmerchant/commit/211e3e2692c1c97f607b39b73623a09958c69d81)) +* **deps-dev:** bump @types/cheerio from 0.22.28 to 0.22.29 ([#2580](https://github.com/jef/streetmerchant/issues/2580)) ([e4ebdc4](https://github.com/jef/streetmerchant/commit/e4ebdc4719afdf390f7060bbc755229dcaba1410)) +* **deps-dev:** bump @types/node from 14.14.35 to 14.14.36 ([#2233](https://github.com/jef/streetmerchant/issues/2233)) ([a7a5e69](https://github.com/jef/streetmerchant/commit/a7a5e6954b3568b40d360982d5f11287c1b7f440)) +* **deps-dev:** bump @types/node from 15.3.0 to 15.6.1 ([#2571](https://github.com/jef/streetmerchant/issues/2571)) ([3e74a4c](https://github.com/jef/streetmerchant/commit/3e74a4c7c41c939b9ce0952e089f36269f3fb46f)) +* **deps-dev:** bump @types/nodemailer from 6.4.1 to 6.4.2 ([#2582](https://github.com/jef/streetmerchant/issues/2582)) ([1cb1787](https://github.com/jef/streetmerchant/commit/1cb1787c27b2e7e37e3e989be686b635f98442e9)) +* **deps-dev:** bump @types/sinon from 9.0.10 to 9.0.11 ([#2166](https://github.com/jef/streetmerchant/issues/2166)) ([4cdda98](https://github.com/jef/streetmerchant/commit/4cdda9890cb30443826e6df02b99d41dbbea026d)) +* **deps-dev:** bump mocha from 8.3.0 to 8.3.2 ([#2167](https://github.com/jef/streetmerchant/issues/2167)) ([a575143](https://github.com/jef/streetmerchant/commit/a575143b244525ff87579b689ed90bf6ae251847)) +* **deps-dev:** bump typescript from 4.2.2 to 4.2.3 ([#2092](https://github.com/jef/streetmerchant/issues/2092)) ([b516e26](https://github.com/jef/streetmerchant/commit/b516e268428219de70358821683e2dd74df59943)) +* **deps-dev:** bump webpack from 5.24.2 to 5.26.3 ([#2164](https://github.com/jef/streetmerchant/issues/2164)) ([2775124](https://github.com/jef/streetmerchant/commit/2775124d80f86466dbc0c3bcb227f489f35aab62)) +* **deps-dev:** bump webpack from 5.35.0 to 5.36.2 ([#2480](https://github.com/jef/streetmerchant/issues/2480)) ([e397306](https://github.com/jef/streetmerchant/commit/e397306f1a3b1576c0595dec5fae7be277e88f25)) +* **deps-dev:** bump webpack from 5.37.0 to 5.37.1 ([#2558](https://github.com/jef/streetmerchant/issues/2558)) ([9e13cd7](https://github.com/jef/streetmerchant/commit/9e13cd7dbb8026c53da4499309ebef03d51c3e92)) +* **deps-dev:** bump webpack from 5.37.0 to 5.38.0 ([#2579](https://github.com/jef/streetmerchant/issues/2579)) ([9fc5ec0](https://github.com/jef/streetmerchant/commit/9fc5ec06ff92e458ea9649f22af9df1ae5ba1d95)) +* **deps:** bump actions/checkout from 2 to 3 ([#2967](https://github.com/jef/streetmerchant/issues/2967)) ([92a3c94](https://github.com/jef/streetmerchant/commit/92a3c94b8a21803eee2afd520bbad467053d7401)) +* **deps:** bump actions/setup-node from 2 to 3 ([#2963](https://github.com/jef/streetmerchant/issues/2963)) ([31c2887](https://github.com/jef/streetmerchant/commit/31c28878c00f6fd32c0c8eabc383634a585c9e69)) +* **deps:** bump actions/setup-python from 2 to 3 ([#2965](https://github.com/jef/streetmerchant/issues/2965)) ([fe53ba3](https://github.com/jef/streetmerchant/commit/fe53ba34ba31d99e36d64d210ad4fa95baa2ea38)) +* **deps:** bump actions/stale from 3 to 4 ([#2671](https://github.com/jef/streetmerchant/issues/2671)) ([e030310](https://github.com/jef/streetmerchant/commit/e0303106f725ee9726c0b7e2f29d97fe5137ca90)) +* **deps:** bump dependencies ([1ab0af2](https://github.com/jef/streetmerchant/commit/1ab0af234ca76b5db8602ffe04a1fc80b3c6515b)) +* **deps:** bump dependencies ([aed9cfe](https://github.com/jef/streetmerchant/commit/aed9cfe98919e6524bfde0156a308c9a56d4dfc0)) +* **deps:** bump dependencies ([2a1734a](https://github.com/jef/streetmerchant/commit/2a1734a71d20e9a65c04edcd4318eaa3b5872a7d)) +* **deps:** bump dependencies, node 15.14.0 ([91a0ff5](https://github.com/jef/streetmerchant/commit/91a0ff5e1ba83efabe5ef45c6a3e17e1c564f16b)) +* **deps:** bump google-github-actions/release-please-action from 2 to 3.1.3 ([#2968](https://github.com/jef/streetmerchant/issues/2968)) ([0906f64](https://github.com/jef/streetmerchant/commit/0906f64d001413383ae30861ecb155561ec4eac5)) +* **deps:** bump node 16.1.0 ([1e62878](https://github.com/jef/streetmerchant/commit/1e62878c8d1b3c0b49189b05f846d555cfc205b3)) +* **deps:** bump node from 15.11.0-alpine3.13 to 15.12.0-alpine3.13 ([#2185](https://github.com/jef/streetmerchant/issues/2185)) ([2ebbf55](https://github.com/jef/streetmerchant/commit/2ebbf55004da325c38c1eb12bcd5dc3264791604)) +* **deps:** bump node-notifier from 9.0.1 to 10.0.0 ([#2583](https://github.com/jef/streetmerchant/issues/2583)) ([a751cb1](https://github.com/jef/streetmerchant/commit/a751cb11c53c7cf6b7883e69eb5e8e2fe1e57adf)) +* **deps:** bump nodemailer from 6.6.0 to 6.6.1 ([#2568](https://github.com/jef/streetmerchant/issues/2568)) ([2e5b07c](https://github.com/jef/streetmerchant/commit/2e5b07c93fb02677596eb5a2f2ea857b99c2d4d9)) +* **deps:** bump open from 7.4.2 to 8.0.2 ([#2078](https://github.com/jef/streetmerchant/issues/2078)) ([00e4ddc](https://github.com/jef/streetmerchant/commit/00e4ddce162877a4a08747955859508f5af0a802)) +* **deps:** bump open from 8.0.2 to 8.0.3 ([#2186](https://github.com/jef/streetmerchant/issues/2186)) ([54883f0](https://github.com/jef/streetmerchant/commit/54883f0ad7cf86052035d88ed2ffbc612c439725)) +* **deps:** bump open from 8.0.2 to 8.2.0 ([#2572](https://github.com/jef/streetmerchant/issues/2572)) ([36e188f](https://github.com/jef/streetmerchant/commit/36e188fd36d31a915d9ac59016710b6f3fa4436d)) +* **deps:** bump top-user-agents from 1.0.25 to 1.0.26 ([#2556](https://github.com/jef/streetmerchant/issues/2556)) ([729afd0](https://github.com/jef/streetmerchant/commit/729afd0ef3f4ceea1ae38b04e1a25bc4c4dcd3ec)) +* **deps:** bump twilio from 3.62.0 to 3.63.0 ([#2561](https://github.com/jef/streetmerchant/issues/2561)) ([7d35c2b](https://github.com/jef/streetmerchant/commit/7d35c2b8f0620501061220baefeb499d6e66e2da)) +* **deps:** bump twilio from 3.66.1 to 3.71.1 ([#2837](https://github.com/jef/streetmerchant/issues/2837)) ([72140be](https://github.com/jef/streetmerchant/commit/72140bebdb7587c071398e0e3abd41bbb8caa10d)) +* **deps:** bump twitch-chat-client from 4.4.13 to 4.5.1 ([#2127](https://github.com/jef/streetmerchant/issues/2127)) ([eeab4b1](https://github.com/jef/streetmerchant/commit/eeab4b112a6482d4fd381014e44fd0d6e071c494)) +* **deps:** bump url-parse from 1.5.3 to 1.5.10 ([#2964](https://github.com/jef/streetmerchant/issues/2964)) ([6f57777](https://github.com/jef/streetmerchant/commit/6f57777c603f8f4535b0d3d72087a20a1d8ea740)) +* **elkjop:** update selectors ([#2505](https://github.com/jef/streetmerchant/issues/2505)) ([c9049a3](https://github.com/jef/streetmerchant/commit/c9049a3054d35f8a37340e552e19841e3ecaf631)) +* **gamestop:** update inventory ([#2239](https://github.com/jef/streetmerchant/issues/2239)) ([c1c92bd](https://github.com/jef/streetmerchant/commit/c1c92bd25b7b744a05f21664f2029a0cb0683d35)) +* improve linksBuilder logging ([#2785](https://github.com/jef/streetmerchant/issues/2785)) ([73eaa88](https://github.com/jef/streetmerchant/commit/73eaa88fa1ed7ef47a333fbe91875c460d00dd6e)) +* **ldlc:** add 3050 ([#2948](https://github.com/jef/streetmerchant/issues/2948)) ([a146ea3](https://github.com/jef/streetmerchant/commit/a146ea351db46e21553990f625a90dbdbd72f395)) +* **materiel:** add 3070 and 3080 cards ([#2393](https://github.com/jef/streetmerchant/issues/2393)) ([8c39d0d](https://github.com/jef/streetmerchant/commit/8c39d0d30a9f8db7eda8665eb08d350fadf157e4)) +* **mediamarkt, saturn:** add new outOfStock message ([#2850](https://github.com/jef/streetmerchant/issues/2850)) ([5d4f4c5](https://github.com/jef/streetmerchant/commit/5d4f4c5b82f13f8f0e6ef288a77aaf85acbafcb8)) +* **mediamarkt:** update captcha selector ([#2496](https://github.com/jef/streetmerchant/issues/2496)) ([64120e7](https://github.com/jef/streetmerchant/commit/64120e73d8f3a01dd5852044ffa0ef6b0ce31730)) +* **microcenter:** add 3090 cards ([d46c636](https://github.com/jef/streetmerchant/commit/d46c6366b70ca668437bd2aab87c3c529f4c569b)) +* move lookup loop logging to lower level ([#2784](https://github.com/jef/streetmerchant/issues/2784)) ([a20faaa](https://github.com/jef/streetmerchant/commit/a20faaab78ca5bf82240c10a944d55d806af7ffc)) +* **multicom:** update selectors ([#2499](https://github.com/jef/streetmerchant/issues/2499)) ([7c4c6ed](https://github.com/jef/streetmerchant/commit/7c4c6ed79ecd89767ffbb3577716be28ce6c1bdc)) +* **netonnet-no:** update selectors ([#2547](https://github.com/jef/streetmerchant/issues/2547)) ([0378a7c](https://github.com/jef/streetmerchant/commit/0378a7cf0aa673933af35c3a3605f147615f6e96)) +* **nodejs:** bump version ([#2088](https://github.com/jef/streetmerchant/issues/2088)) ([afe7a70](https://github.com/jef/streetmerchant/commit/afe7a709009f43fba1cef22aa6c136976507c7bc)) +* **notification:** add better logging, remove debug ([d12639e](https://github.com/jef/streetmerchant/commit/d12639ee8561240d99ef5c2c364255ff808f78b0)) +* **nvidia:** add 3070ti & 3080ti ([#2798](https://github.com/jef/streetmerchant/issues/2798)) ([ada90bf](https://github.com/jef/streetmerchant/commit/ada90bf6de4311256a6928bff3f382e4c2142f32)) +* **otto:** add labels for xbox series x & s ([#2515](https://github.com/jef/streetmerchant/issues/2515)) ([d0a6c7e](https://github.com/jef/streetmerchant/commit/d0a6c7e85950fe3cffbcb30662967a687aaf7347)) +* prune invalid links ([#2592](https://github.com/jef/streetmerchant/issues/2592)) ([b33f678](https://github.com/jef/streetmerchant/commit/b33f678090396b77a5765115d7a3fa42f6de06c8)) +* remove hooks ([b6af582](https://github.com/jef/streetmerchant/commit/b6af582f70843c5608249c5d629fdec8f10630dd)) +* remove unused dependencies ([53e7a8d](https://github.com/jef/streetmerchant/commit/53e7a8d692b76155699b371e926a2b9687d4a081)) +* revert puppeteer, run linter ([5e9b3db](https://github.com/jef/streetmerchant/commit/5e9b3db6f1630f2000da7f9a8b0dd0dc34c8341f)) +* **store:** add additional PS5 bundles and alternative links for MediaMarkt (DE) & Saturn (DE) ([#2820](https://github.com/jef/streetmerchant/issues/2820)) ([668ed54](https://github.com/jef/streetmerchant/commit/668ed54a9f762e4a7e220b0c9bfadd0b3dcdaf47)) +* **store:** add additional PS5 bundles to MediaMarkt (DE) & Saturn (DE) ([#2787](https://github.com/jef/streetmerchant/issues/2787)) ([0d936a9](https://github.com/jef/streetmerchant/commit/0d936a988586a91e66137083a72e2a3ae9b22f1b)) +* **store:** add more links to norwegian stores ([#2485](https://github.com/jef/streetmerchant/issues/2485)) ([a286b73](https://github.com/jef/streetmerchant/commit/a286b73b5d592868d7140d6de312d5a63a226315)) +* **store:** add Nvidia RTX Cards ([#2204](https://github.com/jef/streetmerchant/issues/2204)) ([0a9ce0d](https://github.com/jef/streetmerchant/commit/0a9ce0dd4c7681cba7681d570db44f65359d83cf)) +* **store:** add some PS5 bundles ([#2021](https://github.com/jef/streetmerchant/issues/2021)) ([d4dc397](https://github.com/jef/streetmerchant/commit/d4dc397e9a848d6d2ba1ed56188fb0ddda98e795)) +* **store:** EBGames renamed to Gamestop (in Canada) ([#2734](https://github.com/jef/streetmerchant/issues/2734)) ([4e77c67](https://github.com/jef/streetmerchant/commit/4e77c67641e85b353c1157e36cbd7c2657dbc01d)) +* **store:** updated and added Nvidia links ([#2806](https://github.com/jef/streetmerchant/issues/2806)) ([c31a861](https://github.com/jef/streetmerchant/commit/c31a86121cafd2bda411ea6a3543f0452fb081e5)) +* update dependencies ([f14a1ca](https://github.com/jef/streetmerchant/commit/f14a1ca76e41943e639e08a9c8a6299dfa362d9d)) +* update dependencies ([1d08d4c](https://github.com/jef/streetmerchant/commit/1d08d4c12292e1b98ad952fa4f88c1965fa7bd6a)) +* update dependencies and nightly workflow ([3b43732](https://github.com/jef/streetmerchant/commit/3b43732f291d263792585fa05264dcf322b55620)) +* update package-lock, remove ci perms ([#3059](https://github.com/jef/streetmerchant/issues/3059)) ([ba98f26](https://github.com/jef/streetmerchant/commit/ba98f2653ea865cc0c08687b05277566cfc1db32)) +* update pr template ([f0e5c5d](https://github.com/jef/streetmerchant/commit/f0e5c5d17bad282480da30cc68e5bd8eb9d80844)) +* update stale workflow ([e4a267f](https://github.com/jef/streetmerchant/commit/e4a267f675800b04d06ddb4212de1373a767a113)) +* **walmart:** update 5900x url ([#2184](https://github.com/jef/streetmerchant/issues/2184)) ([b2ce715](https://github.com/jef/streetmerchant/commit/b2ce7157d9631d6edd45debcb9ab85bc79241133)) +* **xbox:** update oos selector ([4d89306](https://github.com/jef/streetmerchant/commit/4d8930616d2296fcdd6c0d79bac2109f1388a0b0)), closes [#2118](https://github.com/jef/streetmerchant/issues/2118) [#2479](https://github.com/jef/streetmerchant/issues/2479) [#2475](https://github.com/jef/streetmerchant/issues/2475) [#2200](https://github.com/jef/streetmerchant/issues/2200) + ## [3.5.0](https://www.github.com/jef/streetmerchant/compare/v3.4.1...v3.5.0) (2021-03-02) diff --git a/Dockerfile b/Dockerfile index 0f08dee810..bb7ddce2a5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,8 @@ -FROM node:16.6.1-alpine3.13 AS builder +FROM node:16.18.0-alpine3.16 AS builder LABEL org.opencontainers.image.source="https://github.com/jef/streetmerchant" +LABEL org.opencontainers.image.description="The world's easiest, most powerful stock checker" +LABEL org.opencontainers.image.licenses="MIT" ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true @@ -16,7 +18,7 @@ COPY test/ test/ RUN npm run compile RUN npm prune --production -FROM node:16.6.1-alpine3.13 +FROM node:16.18.0-alpine3.16 RUN apk add --no-cache chromium diff --git a/README.md b/README.md index 2c7c5204b6..d053ce0a7e 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,6 @@

The world's easiest, most powerful stock checker

-

- - -

To get started, visit jef.buzz/streetmerchant

diff --git a/docs/assets/images/streetmerchan-herokunewapp.jpg b/docs/assets/images/streetmerchan-herokunewapp.jpg new file mode 100644 index 0000000000..87bd8dcc5b Binary files /dev/null and b/docs/assets/images/streetmerchan-herokunewapp.jpg differ diff --git a/docs/assets/images/streetmerchant-herokuapp.jpg b/docs/assets/images/streetmerchant-herokuapp.jpg new file mode 100644 index 0000000000..5aed5af23d Binary files /dev/null and b/docs/assets/images/streetmerchant-herokuapp.jpg differ diff --git a/docs/assets/images/streetmerchant-herokubuildpacks.png b/docs/assets/images/streetmerchant-herokubuildpacks.png new file mode 100644 index 0000000000..225c913bfd Binary files /dev/null and b/docs/assets/images/streetmerchant-herokubuildpacks.png differ diff --git a/docs/assets/images/streetmerchant-herokudynos.jpg b/docs/assets/images/streetmerchant-herokudynos.jpg new file mode 100644 index 0000000000..62c04cc2ed Binary files /dev/null and b/docs/assets/images/streetmerchant-herokudynos.jpg differ diff --git a/docs/getting-started.md b/docs/getting-started.md index a8454e04d8..221154b4b7 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -5,7 +5,7 @@ You do not need any computer skills, smarts, or anything of that nature. You are ## Prerequisites - [git](https://git-scm.com/) -- Either [Node.js 15](https://nodejs.org/en/) or [Docker (1.13.0+)](https://docs.docker.com/get-docker/) (advanced users) +- Either [Node.js 16 (LTS)](https://nodejs.org/en/) or [Docker](https://docs.docker.com/get-docker/) (advanced users) ## Using Node.js @@ -14,7 +14,7 @@ You do not need any computer skills, smarts, or anything of that nature. You are | tag | Example, `v1.0.0`; stable | | `main` | Latest HEAD; not tagged, could be unstable | -1. Download [Node.js 15](https://nodejs.org/en/) +1. Download [Node.js 16](https://nodejs.org/en/) 1. Clone this project `git clone https://github.com/jef/streetmerchant.git`. 1. To checkout a particular reference, use `git checkout ` after cloning. 1. Navigate to this project by entering `cd streetmerchant`. @@ -103,3 +103,89 @@ docker-compose down ``` Replace `` with the value you gave in your `dotenv`. + +### Developing in Heroku + +#### Prerequisites + +- [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) + - You will need a [Heroku Account](https://signup.heroku.com). +- [GIT](https://git-scm.com) + - Make sure the PATH is set correctly, so you can use it in you command line. +- [StreetMerchant](https://github.com/jef/streetmerchant) + - If you don't already have it. + +#### Starting with File correction + +1. Make a copy of `dotenv-example` and name it `dotenv`. +1. Edit the `dotenv` file to your liking using a text editor (like [VSCode](https://code.visualstudio.com/) or even Notepad). +1. Find the option `OPEN_BROWSER` and set it to `OPEN_BROWSER=false` + 1. After this, I recommend you setup some form of contacting your directly in the dotenv file as well. + 2. This can be phone, email, or whatever you'd want. The information won't be public. + 3. Save and close file. +1. Locate the `.gitignore` file and open it. + 1. Remove `build/` and `dotenv`. + 2. Save and close file. +1. Locate the `package.json` file and open it. + 1. Locate the `"posttest"` config. + 1. Under it, paste:
+
"postinstall": "npm run tsc",
+ "tsc": "tsc",
+1. Create a file called `Procfile` with no type declaration(.txt/.doc/.etc.) + 1. Open it with Notepad + 2. Paste: `worker: npm run start:production` + 3. Close and save file +1. Navigate to `src/` and find the file `index.ts` + 1. Open with IDE or Notepade + 2. Find `const args: string[]` + 1. Replace with: +
  const args: string[] = [
+        '--no-sandbox',
+        '--disable-setuid-sandbox'
+     c];
+#### Setting up Heroku +```shell +# To start +# Open a terminal and navigate to the master street merchant directory +# From there start this +heroku login +# Follow the steps to login +``` +1. Leave that terminal up, and go to your [Heroku apps](https://dashboard.heroku.com/apps) +2. Create a new app: + +![IMAGEOFAPP](https://github.com/dev-nolant/streetmerchant/blob/main/docs/assets/images/streetmerchan-herokunewapp.jpg) + +3. Name it, and then click `Create App` + +![IMAGEOFCREATE](https://github.com/dev-nolant/streetmerchant/blob/main/docs/assets/images/streetmerchant-herokuapp.jpg) + +4. Go to `Settings` and add two buildpacks + 1. `heroku/nodejs` + 2. `https://github.com/jontewks/puppeteer-heroku-buildpack` + +It should look like: +![IMAGEOFBUILDPACKS](https://github.com/dev-nolant/streetmerchant/blob/main/docs/assets/images/streetmerchant-herokubuildpacks.png) + +#### Terminal setup +Back to the terminal that you left open. +1. Type `git init` +2. Once that finishes copy and paste: `heroku git:remote -a YOURAPPNAME` but make sure `YOURAPPNAME` is whatever you named your app on Heroku. +3. Then type `git add .` +4. Once that finishes paste `git commit -am "COMMITMESSAGE"`, replacing `COMMITMESSAGE` with whatever commit message you'd like. This doesn't matter much. +5. The last thing to do in the terminal is to push your repo to Heroku + 1. Paste `git push heroku master` + 1. This will take a while +#### Final steps +1. On your Heroku app, click on the tab `Resources` + +You should see this: +![IMAGEOFRESOURCES](https://github.com/dev-nolant/streetmerchant/blob/main/docs/assets/images/streetmerchant-herokudynos.jpg) + +2. Click the pen icon on both to edit their states. +3. Turn off `web npm start` +4. Turn on `worker npm run start:production` +5. Click confirm on both. +6. Now you're essentially done! + 1. I recommend you click on the `more` dropdown and click `logs` to make sure everything is running smoothly. + 2. If you set up notifications, you will be notified when you criterias are met(3060 in stock, etc.), otherwise you'll have to keep your eyes on the `logs` tab diff --git a/docs/javascripts/tables.js b/docs/javascripts/tables.js index dddc5e3ddc..e848f07dd0 100644 --- a/docs/javascripts/tables.js +++ b/docs/javascripts/tables.js @@ -1,6 +1,6 @@ -app.document$.subscribe(() => { - const tables = document.querySelectorAll('article table'); - tables.forEach(table => { - new Tablesort(table); - }); -}); +document$.subscribe(function() { + var tables = document.querySelectorAll("article table") + tables.forEach(function(table) { + new Tablesort(table) + }) +}) diff --git a/docs/overrides/main.html b/docs/overrides/main.html index d8b8aef987..c74978d811 100644 --- a/docs/overrides/main.html +++ b/docs/overrides/main.html @@ -19,12 +19,4 @@ - - - - - - - - {% endblock %} diff --git a/docs/reference/application.md b/docs/reference/application.md index 99b2f31559..981b9f5de2 100644 --- a/docs/reference/application.md +++ b/docs/reference/application.md @@ -9,17 +9,21 @@ | `IN_STOCK_WAIT_TIME` | Time to wait between requests to the same link if it has that card in stock. In seconds, default: `0` | | `LOG_LEVEL` | [Logging levels](https://github.com/winstonjs/winston#logging-levels). Debugging related, default: `info` | | `LOW_BANDWIDTH` | Blocks images/fonts to reduce traffic. Disables ad blocker, default: `false` | -| `OPEN_BROWSER` | Toggle for whether or not the browser should open when item is found. Default: `true` | -| `PAGE_BACKOFF_MIN` | Minimum backoff time between retrying requests for the same store when a forbidden response is received. Default: `10000` | -| `PAGE_BACKOFF_MAX` | Maximum backoff time between retrying requests for the same store when a forbidden response is received. Default: `3600000` | +| `NVIDIA_ADD_TO_CART_ATTEMPTS` | Maximum number of attempts add an item to card in the Nvidia storefront, default: `10` | +| `NVIDIA_SESSION_TTL` | Maximum session length on the Nvidia storefront in ms, default: `60000` | +| `OPEN_BROWSER` | Toggle for whether or not the browser should open when item is found, default: `true` | +| `PAGE_BACKOFF_MIN` | Minimum backoff time between retrying requests for the same store when a forbidden response is received, default: `10000` | +| `PAGE_BACKOFF_MAX` | Maximum backoff time between retrying requests for the same store when a forbidden response is received, default: `3600000` | | `PAGE_SLEEP_MIN` | Minimum sleep time between queries of the same product page. In milliseconds, default: `5000` | | `PAGE_SLEEP_MAX` | Maximum sleep time between queries of the same product page. In milliseconds, default: `10000` | | `PAGE_TIMEOUT` | Navigation Timeout in milliseconds. `0` for infinite, default: `30000` | -| `PROXY_PROTOCOL` | Protocol of proxy server, such as `socks5`. Default: `http` | +| `PROXY_PROTOCOL` | Protocol of proxy server, such as `socks5`, default: `http` | | `PROXY_ADDRESS` | IP Address or fqdn of proxy server | -| `PROXY_PORT` | TCP Port number on which the proxy is listening for connections. Default: `80` | +| `PROXY_PORT` | TCP Port number on which the proxy is listening for connections, default: `80` | | `RESTART_TIME` | Restarts chrome after defined milliseconds. `0` for never, default: `0` | -| `SCREENSHOT` | Capture screenshot of page if a card is found. Default: `true` | +| `SCREENSHOT` | Capture screenshot of page if a card is found, default: `true` | +| `SCREENSHOT_DIR` | The directory for saving the screenshots, default: `screenshots` | +| `USER_AGENT` | Custom user agent used for requests | | `WEB_PORT` | Starts a webserver to be able to control the bot while it is running. Setting this value starts this service. | ???+ info diff --git a/docs/reference/filter.md b/docs/reference/filter.md index f7fea726a7..b03ad2f5a8 100644 --- a/docs/reference/filter.md +++ b/docs/reference/filter.md @@ -2,12 +2,21 @@ | Environment variable | Description | |:---:|---| +| `MAX_PRICE_SERIES_3050` | Maximum price allowed for a match, applies 3050 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | | `MAX_PRICE_SERIES_3060` | Maximum price allowed for a match, applies 3060 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | | `MAX_PRICE_SERIES_3060TI` | Maximum price allowed for a match, applies 3060 Ti series cards (does not apply to these sites: Nvidia, Asus, EVGA) | | `MAX_PRICE_SERIES_3070` | Maximum price allowed for a match, applies 3070 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | | `MAX_PRICE_SERIES_3080` | Maximum price allowed for a match, applies 3080 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | | `MAX_PRICE_SERIES_3080TI` | Maximum price allowed for a match, applies 3080 Ti series cards (does not apply to these sites: Nvidia, Asus, EVGA) | | `MAX_PRICE_SERIES_3090` | Maximum price allowed for a match, applies 3090 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | +| `MAX_PRICE_SERIES_4080_16G` | Maximum price allowed for a match, applies 4080 16G series cards (does not apply to these sites: Nvidia, Asus, EVGA) | +| `MAX_PRICE_SERIES_4090` | Maximum price allowed for a match, applies 4090 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | +| `MAX_PRICE_SERIES_5070` | Maximum price allowed for a match, applies 5070 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | +| `MAX_PRICE_SERIES_5070TI` | Maximum price allowed for a match, applies 5070 Ti series cards (does not apply to these sites: Nvidia, Asus, EVGA) | +| `MAX_PRICE_SERIES_5080` | Maximum price allowed for a match, applies 5080 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | +| `MAX_PRICE_SERIES_5090` | Maximum price allowed for a match, applies 5080 series cards (does not apply to these sites: Nvidia, Asus, EVGA) | +| `MAX_PRICE_SERIES_A3_MATX` | Maximum price allowed for a match, applies to Lian Li A3-mATX Mini Tower Case | +| `MAX_PRICE_SERIES_ARC` | Maximum price allowed for a match, applies to Intel Arc B580 | | `MAX_PRICE_SERIES_CORSAIR_SF` | Maximum price allowed for a match, applies to Corsair PSUs | | `MAX_PRICE_SERIES_DARKHERO` | Maximum price allowed for a match, applies to ASUS Dark Hero motherboards | | `MAX_PRICE_SERIES_RYZEN5600` | Maximum price allowed for a match, applies AMD 5600 series cpus | @@ -18,6 +27,13 @@ | `MAX_PRICE_SERIES_RX6800` | Maximum price allowed for a match, applies AMD RX 6800 | | `MAX_PRICE_SERIES_RX6800XT` | Maximum price allowed for a match,applies AMD RX 6800 XT | | `MAX_PRICE_SERIES_RX6900XT` | Maximum price allowed for a match, applies AMD RX 6900 XT | +| `MAX_PRICE_SERIES_RYZEN7800X3D` | Maximum price allowed for a match, applies AMD 7800X3D | +| `MAX_PRICE_SERIES_RYZEN7950X` | Maximum price allowed for a match, applies to AMD Ryzen 9 7950X CPU | +| `MAX_PRICE_SERIES_RYZEN9800X3D` | Maximum price allowed for a match, applies AMD 9800X3D | +| `MAX_PRICE_SERIES_RYZEN9600X` | Maximum price allowed for a match, applies AMD RX 9600X | +| `MAX_PRICE_SERIES_RYZEN9700X` | Maximum price allowed for a match, applies AMD RX 9700X | +| `MAX_PRICE_SERIES_RYZEN9900X` | Maximum price allowed for a match, applies AMD RX 9900X | +| `MAX_PRICE_SERIES_RYZEN9950X` | Maximum price allowed for a match, applies AMD RX 9950X | | `MAX_PRICE_SERIES_SONYPS5C` | Maximum price allowed for a match, applies PS5 console | | `MAX_PRICE_SERIES_SONYPS5DE` | Maximum price allowed for a match, applies PS5 digital edition | | `MAX_PRICE_SERIES_XBOXSS` | Maximum price allowed for a match, applies Xbox Series S | @@ -28,6 +44,7 @@ | `SHOW_ONLY_MODELS` | Filter to show specified models. Comma separated, can include series. E.g.: `founders edition:3090,rog strix` | | `SHOW_ONLY_SERIES` | Filter to show specified series. Comma separated, e.g.: `3080,ryzen5900` | | `STORES` | [Supported stores](#supported-stores) you want to be scraped. Default: `amazon,bestbuy`. Comma separated, can include `PAGE_SLEEP_MIN` and `PAGE_SLEEP_MAX` values. E.g.: `amazon:10000:30000,bestbuy,newegg:50000:80000`. | +| `SHOW_ONLY_COUNTRY` | Filter to show specific country stores. Comma separated, e.g.: `US,CA` | ???+ note For `MAX_PRICE_SERIES_*` variables: Use whole numbers only (no currency symbol is required). Avoid using any commas or decimal points. Example: `1234`. Merchandise found above this price will be skipped. @@ -39,164 +56,172 @@ Used with the `STORES` variable. | Stores | Country | Environment variable | |---|---|---| | AComPC | DE | `acompc` | -| Adorama | US | `adorama`| -| Akinformatica | IT | `akinformatica`| -| Allneeds | AU | `allneeds`| -| Alternate | DE | `alternate`| -| Alternate | NL | `alternate-nl`| -| Amazon | US | `amazon`| -| Amazon | CA | `amazon-ca`| -| Amazon | DE | `amazon-de`| -| Amazon Warehouse | DE | `amazon-de-warehouse`| -| Amazon | ES | `amazon-es`| -| Amazon | FR | `amazon-fr`| -| Amazon | IT | `amazon-it`| -| Amazon | NL | `amazon-nl`| -| Amazon | SG | `amazon-sg`| -| Amazon | UK | `amazon-uk`| -| AMD | US | `amd`| -| AMD | AT | `amd-at`| -| AMD | BE | `amd-be`| -| AMD | CA | `amd-ca`| -| AMD | DE | `amd-de`| -| AMD | IT | `amd-it`| -| AMD | NL | `amd-nl`| -| AMD | UK | `amd-uk`| -| AntOnline | US | `antonline`| -| AO | UK | `ao`| -| Argos | UK | `argos`| -| Argos | IE | `argos-ie`| -| Aria PC | UK | `aria`| -| ARLT | DE | `arlt`| +| Adorama | US | `adorama` | +| Akinformatica | IT | `akinformatica` | +| Allneeds | AU | `allneeds` | +| Alternate | DE | `alternate-de` | +| Alternate | FR | `alternate-fr` | +| Alternate | NL | `alternate-nl` | +| Amazon | US | `amazon` | +| Amazon | CA | `amazon-ca` | +| Amazon | DE | `amazon-de` | +| Amazon Warehouse | DE | `amazon-de-warehouse` | +| Amazon | ES | `amazon-es` | +| Amazon | FR | `amazon-fr` | +| Amazon | IT | `amazon-it` | +| Amazon | NL | `amazon-nl` | +| Amazon | SG | `amazon-sg` | +| Amazon | UK | `amazon-uk` | +| AMD | US | `amd` | +| AMD | AT | `amd-at` | +| AMD | BE | `amd-be` | +| AMD | CA | `amd-ca` | +| AMD | DE | `amd-de` | +| AMD | IT | `amd-it` | +| AMD | NL | `amd-nl` | +| AMD | UK | `amd-uk` | +| AntOnline | US | `antonline` | +| AO | UK | `ao` | +| Argos | UK | `argos` | +| Argos | IE | `argos-ie` | +| Aria PC | UK | `aria` | +| ARLT | DE | `arlt` | | ASUS | US | `asus` | | ASUS | DE | `asus-de` | | ASUS | ES | `asus-es` | | AWD-IT | UK | `awd` | -| Azerty | NL | `azerty`| -| B&H | US | `bandh`| -| Best Buy | US | `bestbuy`| -| Best Buy | CA | `bestbuy-ca`| -| Box | UK | `box`| -| BPCTech | AU | `bpctech`| -| BPM-Power | IT | `bpm-power`| -| BT | UK | `bt`| +| Azerty | NL | `azerty` | +| B&H | US | `bandh` | +| Best Buy | US | `bestbuy` | +| Best Buy | CA | `bestbuy-ca` | +| Box | UK | `box` | +| BPCTech | AU | `bpctech` | +| BPM-Power | IT | `bpm-power` | +| BT | UK | `bt` | | CanadaComputers | CA | `canadacomputers` | -| Caseking | DE | `caseking`| -| CCL | UK | `ccl`| -| Centrecom | AU | `centrecom`| -| Comet | IT | `comet`| -| ComputerAlliance | AU | `computeralliance`| +| Caseking | DE | `caseking` | +| CCL | UK | `ccl` | +| Centrecom | AU | `centrecom` | +| Comet | IT | `comet` | +| ComputerAlliance | AU | `computeralliance` | | Computeruniverse | DE | `computeruniverse` | -| Coolblue | NL | `coolblue`| -| Coolmod | ES | `coolmod`| -| Corsair | US | `corsair`| -| Corsair | UK | `corsair-uk`| -| CPL | AU | `cpl`| -| Currys | UK | `currys`| +| Coolblue | NL | `coolblue` | +| Coolmod | ES | `coolmod` | +| Corsair | US | `corsair` | +| Corsair | UK | `corsair-uk` | +| CPL | AU | `cpl` | +| Currys | UK | `currys` | | Cyberport | DE | `cyberport` | | Cyberport | AT | `cyberport-at` | -| DComp | AU | `dcomp`| +| DComp | AU | `dcomp` | | Drako | IT | `drako` | | DustinHome | NO | `dustinhome-no` | -| EBGames | CA | `ebgames`| -| eBuyer | UK | `ebuyer`| -| El Corte Inglés | ES | `elcorteingles`| -| Eletronicamente | ES | `eletronicamente`| -| Elkjop | NO | `elkjop`| -| ePrice | IT | `eprice`| -| Equippr | DE | `equippr`| -| Euronics | IT | `euronics`| -| Euronics | DE | `euronics-de`| -| Evatech | AU | `evatech`| -| EVGA | US | `evga`| -| EVGA | EU | `evga-eu`| -| Expert | DE | `expert`| -| Extremmedia | ES | `extremmedia`| -| Futurex | DE | `futurex`| -| Galaxus | DE | `galaxus`| -| Game | ES | `game-es`| -| Game | UK | `game`| -| Gamestop | US | `gamestop`| -| Gamestop | DE | `gamestop-de`| -| Gamestop | IE | `gamestop-ie`| -| Gamestop | IT | `gamestop-it`| -| Globaldata | PT | `globaldata`| +| eBuyer | UK | `ebuyer` | +| El Corte Inglés | ES | `elcorteingles` | +| Eletronicamente | ES | `eletronicamente` | +| Elkjop | NO | `elkjop` | +| ePrice | IT | `eprice` | +| Equippr | DE | `equippr` | +| Euronics | IT | `euronics` | +| Euronics | DE | `euronics-de` | +| Evatech | AU | `evatech` | +| EVGA | US | `evga` | +| EVGA | EU | `evga-eu` | +| Expert | DE | `expert` | +| Extremmedia | ES | `extremmedia` | +| Futurex | DE | `futurex` | +| Galaxus | DE | `galaxus` | +| Game | ES | `game-es` | +| Game | UK | `game` | +| Gamestop | US | `gamestop` | +| Gamestop | CA | `gamestop-ca` | +| Gamestop | DE | `gamestop-de` | +| Gamestop | IE | `gamestop-ie` | +| Gamestop | IT | `gamestop-it` | +| Globaldata | PT | `globaldata` | | Hardware Planet | IT | | `hardware-planet` | -| HarrisTechnology | AU | `harristechnology`| +| HarrisTechnology | AU | `harristechnology` | | Harvey Normans | IE | `harveynorman-ie` | -| iGame Computer | AU | `igame-computer`| -| John Lewis | UK | `johnlewis`| -| Kabum | BR | `kabum`| -| Komplett | NO | `komplett-no`| -| Landmark Computers | AU | `landmark-computers`| -| Ldlc | FR | `ldlc`| -| Ldlc | ES | `ldlc-es`| -| Mediamarkt | DE | `mediamarkt`| -| Mediamarkt | AT | `mediamarkt-at`| -| Medimax | DE | `medimax`| -| Megekko | NL | `megekko`| -| MemoryExpress | CA | `memoryexpress`| +| iGame Computer | AU | `igame-computer` | +| John Lewis | UK | `johnlewis` | +| Kabum | BR | `kabum` | +| Komplett | NO | `komplett-no` | +| Landmark Computers | AU | `landmark-computers` | +| Ldlc | FR | `ldlc` | +| Ldlc | ES | `ldlc-es` | +| Ldlc | IT | `ldlc-it` | +| Mediamarkt | DE | `mediamarkt` | +| Mediamarkt | AT | `mediamarkt-at` | +| Medimax | DE | `medimax` | +| Megekko | NL | `megekko` | +| MemoryExpress | CA | `memoryexpress` | | Materiel | FR | `materiel` | -| Micro Center | US | `microcenter`| -| MightyApe | NZ | `mightyape`| +| Micro Center | US | `microcenter` | +| Microsoft | US | `microsoft` | +| Microsoft | CA | `microsoft-ca` | +| MightyApe | NZ | `mightyape` | | Mindfactory | DE | `mindfactory` | -| MSY | AU | `msy`| -| Multicom | NO | `multicom`| -| Mwave | AU | `mwave`| -| Neobyte | ES | `neobyte`| -| Netonnet | NO | `netonnet-no`| -| Newegg | US | `newegg`| -| Newegg | CA | `newegg-ca`| -| Newegg | SG | `newegg-sg`| -| NoelLeeming | NZ | `noelleeming`| -| Notebooksbilliger | DE |`notebooksbilliger`| -| Novatech | UK | `novatech`| -| Novo Atalho | PT | `novoatalho`| +| MSI | US | `msi` | +| MSY | AU | `msy` | +| Multicom | NO | `multicom` | +| Mwave | AU | `mwave` | +| Neobyte | ES | `neobyte` | +| Netonnet | NO | `netonnet-no` | +| Newegg | US | `newegg` | +| Newegg | CA | `newegg-ca` | +| Newegg | SG | `newegg-sg` | +| NoelLeeming | NZ | `noelleeming` | +| Notebooksbilliger | DE |`notebooksbilliger` | +| Novatech | UK | `novatech` | +| Novo Atalho | PT | `novoatalho` | | Nvidia | EU/UK | [See below](#nvidia-store-reference) | -| Office Depot | US | `officedepot`| -| Ollo | IT | `ollo`| -| Opirata | ES | `opirata`| -| Otto | DE | `otto`| -| Overclockers | UK | `overclockers`| -| PBTech | AU | `pbtech`| -| PCByte | AU | `pcbyte`| -| PCCG | AU | `pccg`| -| PCComponentes | ES | `pccomponentes`| -| PCDiga | PT | `pcdiga`| +| Office Depot | US | `officedepot` | +| Ollo | IT | `ollo` | +| Opirata | ES | `opirata` | +| Otto | DE | `otto` | +| Overclockers | UK | `overclockers` | +| PBTech | AU | `pbtech` | +| PCByte | AU | `pcbyte` | +| PCCG | AU | `pccg` | +| PCComponentes | ES | `pccomponentes` | +| PCDiga | PT | `pcdiga` | | PCKing | DE | `pcking` | -| PlayStation | US | `playstation`| -| PNY | US | `pny`| -| Power | NO | `power-no`| -| Proshop | DE | `proshop-de`| -| Proshop | DK | `proshop-dk`| -| Proshop | NO | `proshop-no`| -| Rosman | AU | `rosman`| -| Rosman-Melb | AU | `rosman-melb`| -| Saturn | DE | `saturn`| -| Save On It | AU | `saveonit`| -| Scan | UK | `scan`| -| Scorptec | AU | `scorptec`| -| ShopTo | UK | `shopto`| -| Siabyte | ES | `siabyte`| -| Smyths Toys | UK | `smythstoys`| -| Smyths Toys | IE | `smythstoys-ie`| -| Spielegrotte | DE | `spielegrotte`| -| Storm Computers | AU | `storm-computer`| -| Target | US | `target`| -| Tesco | IE | `tesco-ie`| -| TheWarehouse | NZ | `thewarehouse`| -| TopAchat | GR | `topachat`| +| PlayStation | US | `playstation` | +| PNY | US | `pny` | +| Power | NO | `power-no` | +| Proshop | DE | `proshop-de` | +| Proshop | DK | `proshop-dk` | +| Proshop | NO | `proshop-no` | +| Rosman | AU | `rosman` | +| Rosman-Melb | AU | `rosman-melb` | +| Saturn | DE | `saturn` | +| Save On It | AU | `saveonit` | +| Scan | UK | `scan` | +| Scorptec | AU | `scorptec` | +| ShopTo | UK | `shopto` | +| Siabyte | ES | `siabyte` | +| Smyths Toys | UK | `smythstoys` | +| Smyths Toys | IE | `smythstoys-ie` | +| Spielegrotte | DE | `spielegrotte` | +| Storm Computers | AU | `storm-computer` | +| Target | US | `target` | +| Tesco | IE | `tesco-ie` | +| TheWarehouse | NZ | `thewarehouse` | +| TopAchat | GR | `topachat` | | Toys R Us | US | `toysrus` | -| Ultimainformatica | ES | `ultimainformatica`| -| Umart | AU | `umart`| -| Unieuro | IT | `unieuro`| -| Very | UK | `very`| +| Ultimainformatica | ES | `ultimainformatica` | +| Umart | AU | `umart` | +| Unieuro | IT | `unieuro` | +| Very | UK | `very` | +| Versus Gamers | ES | `vsgamers` | | Vuugo | CA | `vuugo` | -| Walmart | US | `walmart`| -| Walmart | CA | `walmart-ca`| -| Wells Technology | AU | `wellstechnology`| -| Wipoid | ES | `wipoid`| -| Zotac | US | `zotac`| +| Walmart | US | `walmart` | +| Walmart | CA | `walmart-ca` | +| Wells Technology | AU | `wellstechnology` | +| Wipoid | ES | `wipoid` | +| Xbox | US | `xbox` | +| Xtremmedia | ES | `xtremmedia` | +| Zotac | US | `zotac` | ### Micro Center stores @@ -221,25 +246,34 @@ Used with the `SHOW_ONLY_BRANDS` and `SHOW_ONLY_MODELS` variables. | Brand | Model | |:---:|---| -| `amd` | `5600x`, `5800x`, `5900x`, `5950x`, `amd reference` | -| `asus` | `crosshair viii`, `dual`, `dual oc`, `ekwb`, `strix`, `strix oc`, `strix white`, `tuf`, `tuf oc` | -| `corsair` | `750 platinum`, `600 platinum`, `600 gold` | -| `colorful` | `igame advanced oc`, `igame vulcan oc` | -| `evga` | `ftw3`, `ftw3 black`, `ftw3 ultra`, `ftw3 ultra hybrid`, `ftw3 ultra hydro copper`, `xc3`, `xc black`, `xc gaming`, `xc3 black`, `xc3 ultra`, `xc3 ultra hybrid` | -| `gainward` | `phantom gs`, `phoenix`, `phoenix gs`, `phoenix gs oc`, `ghost` | -| `gigabyte` | `aorus master`, `aorus xtreme`, `aorus xtreme waterforce`, `aorus xtreme waterforce wb`, `eagle`, `eagle oc`, `gaming`, `gaming oc`, `gaming oc pro`, `turbo`, `vision`, `vision oc` | -| `galax` | `sg`, `sg oc` | -| `inno3d` | `gaming x3`, `ichill x3`, `ichill x4`, `ichill frostbite`, `twin x2`, `twin x2 oc` | -| `kfa2` | `sg`, `sg oc` | +| `amd` | `5600x`, `5800x`, `5900x`, `5950x`, `7800x3d`, `7950x`, `9600x`, `9700x`, `9800x3d`, `9900x`, `9950x`, `amd reference`, `tuf oc` | +| `asrock` | `amd reference`, `challenger`, `challenger oc`, `challenger pro`, `challenger pro oc`, `phantom gaming`, `phantom gaming oc`, `taichi`, `taichi x oc` | +| `asus` | `amd reference`, `astral`, `astral oc`, `crosshair viii`, `dual`, `dual fan`, `dual mini`, `dual mini oc`, `dual oc`, `ekwb`, `gaming`, `gaming oc`, `ko`, `ko oc`, `phoenix 8G (LHR)`, `prime`, `prime oc`, `strix`, `strix lc`, `strix oc`, `strix oc lc`, `strix oc white`, `strix white`, `suprim x`, `tuf`, `tuf gaming`, `tuf gaming oc`, `tuf oc`, `turbo` | +| `ax` | `x3w` | +| `colorful` | `battle-ax`, `igame advanced`, `igame advanced oc`, `igame ultra oc`, `igame vulcan oc` | +| `corsair` | `600 gold`, `600 platinum`, `750 platinum` | +| `evga` | `ftw3`, `ftw3 black`, `ftw3 ultra`, `ftw3 ultra hybrid`, `ftw3 ultra hydro copper`, `gaming`, `ichill x3`, `kngpn hybrid`, `xc black`, `xc gaming`, `xc3`, `xc3 black`, `xc3 ultra`, `xc3 ultra hybrid` | +| `gainward` | `ghost`, `ghost oc`, `pegasus`, `pegasus oc`, `phantom`, `phantom gaming`, `phantom gs`, `phoenix`, `phoenix gs`, `phoenix gs oc` | +| `galax` | `sg oc` | +| `gigabyte` | `aero oc`, `aero oc sff`, `amd reference`, `aorus`, `aorus box`, `aorus elite`, `aorus master`, `aorus master 24g`, `aorus master type-c`, `aorus w`, `aorus x wb`, `aorus xtreme`, `aorus xtreme waterforce`, `aorus xtreme waterforce 24g`, `aorus xtreme waterforce wb`, `eagle`, `eagle oc`, `gaming`, `gaming oc`, `gaming oc pro`, `gaming oc waterforce wb`, `gaming pro`, `gaming pro oc`, `gaming x`, `master`, `master ice`, `turbo`, `vision`, `vision oc`, `windforce`, `windforce oc`, `windforce oc sff`, `windforce v2`, `xtreme` | +| `inno3d` | `gaming x3`, `ice dragon super`, `ichill frostbite`, `ichill x2`, `ichill x3`, `ichill x3 red`, `ichill x4`, `twin x2`, `twin x2 oc`, `x3 oc` | +| `intel` | `b580` | +| `kfa2` | `dual oc`, `ex`, `ex gamer`, `ex oc`, `gaming`, `oc`, `sg`, `sg oc` | | `leadtek` | `hurricane` | -| `microsoft` | `xbox series x`, `xbox series s` | -| `msi` | `gaming x trio`, `suprim`, `suprim x`, `ventus 2x oc`, `ventus 3x`, `ventus 3x oc` | +| `lianli` | `a3 matx wd` | +| `microsoft` | `xbox series s`, `xbox series x` | +| `msi` | `amd reference`, `dual`, `expert`, `gaming`, `gaming trio`, `gaming trio oc`, `gaming trio oc white`, `gaming x`, `gaming x slim`, `gaming x trio`, `gaming z trio`, `inspire 3x`, `inspire 3x oc`, `lp oc`, `mech 2x`, `mech 2x oc`, `shadow 3x`, `shadow 3x oc`, `strix`, `suprim`, `suprim liquid soc`, `suprim liquid x`, `suprim oc`, `suprim soc`, `suprim x`, `vanguard`, `vanguard soc`, `vanguard soc launch edition`, `ventus 2X (LHR)`, `ventus 2x`, `ventus 2x oc`, `ventus 2x white oc`, `ventus 3x`, `ventus 3x e1 oc`, `ventus 3x oc`, `ventus 3x oc plus`, `ventus 3x oc white`, `x trio` | | `nvidia` | `founders edition` | -| `palit` | `gamerock oc`, `gaming pro`, `gaming pro oc` | -| `pny` | `dual fan`, `xlr8 epic x`, `xlr8 revel`, `xlr8 uprising` | +| `palit` | `dual`, `dual oc`, `gamerock`, `gamerock oc`, `gaming oc pro`, `gaming pro`, `gaming pro oc`, `jetstream`, `jetstream oc`, `stormx oc`, `trinity oc` | +| `pny` | `aorus xtreme waterforce`, `dual`, `dual fan`, `epic x`, `epic x oc`, `gaming`, `gaming verto epic-x`, `single fan`, `suprim liquid soc`, `triple fan`, `triple fan oc`, `uprising`, `vetro`, `xlr8`, `xlr8 epic x`, `xlr8 gaming`, `xlr8 gaming uprising epic x`, `xlr8 revel`, `xlr8 revel epic x`, `xlr8 uprising`, `xlr8 verto`, `xlr8 verto epic x`, `xlr8 verto epic x oc`, `xlr8 verto oc` | +| `powercolor` | `amd reference`, `fighter`, `hellhound`, `hellhound white`, `red devil`, `red dragon` | +| `sapphire` | `amd reference`, `nitro oc`, `nitro oc se`, `nitro+`, `nitro+ oc`, `nitro+ oc se`, `nitro+ se`, `pulse`, `pulse oc` | | `sony` | `ps5 console`, `ps5 digital` | -| `xfx` | `merc`, `amd reference` | -| `zotac` | `amp holo`, `amp extreme holo`, `amp white`, `trinity`, `trinity oc`, `twin edge`, `twin edge oc`, `twin edge oc white` | +| `sparkle` | `b580` | +| `test:brand` | `test:model` | +| `ubiquiti` | `dream machine`, `dream machine pro`, `dream router`, `g4 doorbell pro`, `network video recorder`, `network video recorder pro` | +| `xfx` | `amd reference`, `merc`, `merc core`, `merc ultra`, `qick`, `qick ultra`, `swft` | +| `zotac` | `amp airo`, `amp extreme airo`, `amp extreme holo`, `amp extreme infinity`, `amp holo`, `amp white`, `gaming`, `solid`, `solid oc`, `trinity`, `trinity oc`, `trinity oc lhr`, `twin edge`, `twin edge oc`, `twin edge oc white` | ## Supported series @@ -247,38 +281,65 @@ Used with the `SHOW_ONLY_SERIES` variable. | Series | Value | |:---:|:---:| -| AMD Ryzen 5600x | `ryzen5600` | -| AMD Ryzen 5800x | `ryzen5800` | -| AMD Ryzen 5900x | `ryzen5900` | -| AMD Ryzen 5950x | `ryzen5950` | | AMD RX 6700XT | `rx6700xt` | | AMD RX 6800 | `rx6800` | | AMD RX 6800XT | `rx6800xt` | | AMD RX 6900XT | `rx6900xt` | +| AMD Ryzen 5600X | `ryzen5600` | +| AMD Ryzen 5800X | `ryzen5800` | +| AMD Ryzen 5900X | `ryzen5900` | +| AMD Ryzen 5950X | `ryzen5950` | +| AMD Ryzen 7800X3D | `ryzen7800x3d` | +| AMD Ryzen 7950X | `ryzen7950x` | +| AMD Ryzen 9600X | `ryzen9600x` | +| AMD Ryzen 9700X | `ryzen9700x` | +| AMD Ryzen 9800X3D | `ryzen9800x3d` | +| AMD Ryzen 9900X | `ryzen9900x` | +| AMD Ryzen 9950X | `ryzen9950x` | +| Corsair SFX PSU | `sf` | +| Crosshair VIII | `darkhero` | +| Intel Arc B580 | `arc` | +| Lian Li A3-mATX | `a3-matx` | +| Nvidia RTX 3050 | `3050` | | Nvidia RTX 3060 | `3060` | | Nvidia RTX 3060 Ti | `3060ti` | | Nvidia RTX 3070 | `3070` | +| Nvidia RTX 3070 Ti | `3070ti` | | Nvidia RTX 3080 | `3080` | | Nvidia RTX 3080 Ti | `3080ti` | | Nvidia RTX 3090 | `3090` | -| Corsair SFX PSU | `sf` | -| Crosshair VIII | `darkhero` | +| Nvidia RTX 4060 | `4060` | +| Nvidia RTX 4070 | `4070` | +| Nvidia RTX 4070 SUPER | `4070super` | +| Nvidia RTX 4070 Ti | `4070ti` | +| Nvidia RTX 4080 16G | `4080-16g` | +| Nvidia RTX 4090 | `4090` | +| Nvidia RTX 5070 | `5070` | +| Nvidia RTX 5070 Ti | `5070ti` | +| Nvidia RTX 5080 | `5080` | +| Nvidia RTX 5090 | `5090` | | Sony PS5 | `sonyps5c` | | Sony PS5 Digital Edition | `sonyps5de` | +| Ubiquiti G4 Doorbell Pro | `g4-doorbell-pro` | +| Unifi Dream Machine | `udm-us` | +| Unifi Dream Machine Pro | `udm-pro` | +| Unifi Dream Router | `udm-us` | +| Unifi Network Video Recorder | `unvr` | +| Unifi Network Video Recorder Pro | `unvr-pro` | | Xbox Series S | `xboxss` | | Xbox Series X | `xboxsx` | ## Nvidia Store Reference ???+ note - Use the Nvidia Store to check stock for Founders Edition cards only (3060 Ti/3070/3080/3080 Ti/3090). For USA use `bestbuy` instead. + Use the Nvidia Store to check stock for Founders Edition cards only (3060 Ti/3070/3080/3080 Ti/3090/4090). For USA use `bestbuy` instead. ???+ info Use the `STORE` variable for your chosen country. For example, to check for a FE card in Belgium you would use the `nvidia-fr` store. | Country | Store | Retailer |:---:|:---:|:---:| -| Austria | `nvidia-de`| NBB | +| Austria | `nvidia-de` | NBB | | Belgium | `nvidia-fr` | LDLC | | France | `nvidia-fr` | LDLC | | Germany | `nvidia-de` | NBB | diff --git a/docs/reference/notification.md b/docs/reference/notification.md index 4b6c84afdf..ea83d7fb4c 100644 --- a/docs/reference/notification.md +++ b/docs/reference/notification.md @@ -32,22 +32,46 @@ Refer to https://github.com/node-apn/node-apn for config options. | Environment variable | Description | |:---:|---| | `DISCORD_NOTIFY_GROUP` | Discord group you would like to notify | +| `DISCORD_NOTIFY_GROUP_3050` | Discord group to notify on 3050 stock | | `DISCORD_NOTIFY_GROUP_3060` | Discord group to notify on 3060 stock | | `DISCORD_NOTIFY_GROUP_3060TI` | Discord group to notify on 3060 Ti stock | | `DISCORD_NOTIFY_GROUP_3070` | Discord group to notify on 3070 stock | +| `DISCORD_NOTIFY_GROUP_3070TI` | Discord group to notify on 3070 Ti stock | | `DISCORD_NOTIFY_GROUP_3080` | Discord group to notify on 3080 stock | | `DISCORD_NOTIFY_GROUP_3080TI` | Discord group to notify on 3080 Ti stock | | `DISCORD_NOTIFY_GROUP_3090` | Discord group to notify on 3090 stock | +| `DISCORD_NOTIFY_GROUP_4080_16G` | Discord group to notify on 4080 16G stock | +| `DISCORD_NOTIFY_GROUP_4090` | Discord group to notify on 4090 stock | +| `DISCORD_NOTIFY_GROUP_5070` | Discord group to notify on 5070 stock | +| `DISCORD_NOTIFY_GROUP_5070TI` | Discord group to notify on 5070 Ti stock | +| `DISCORD_NOTIFY_GROUP_5080` | Discord group to notify on 5080 stock | +| `DISCORD_NOTIFY_GROUP_5090` | Discord group to notify on 5090 stock | +| `DISCORD_NOTIFY_GROUP_A3MATX` | Discord group to notify on Lian Li A3 mATX Case stock | +| `DISCORD_NOTIFY_GROUP_ARC` | Discord group to notify on Intel Arc B580 stock | +| `DISCORD_NOTIFY_GROUP_CORSAIR_SF` | Discord group to notify on Corsair SF stock | +| `DISCORD_NOTIFY_GROUP_DARKHERO` | Discord group to notify on Dark Hero stock | +| `DISCORD_NOTIFY_GROUP_RX6700XT` | Discord group to notify on RX 6700XT stock | +| `DISCORD_NOTIFY_GROUP_RX6800` | Discord group to notify on RX 6800 stock | +| `DISCORD_NOTIFY_GROUP_RX6800XT` | Discord group to notify on RX 6800XT stock | +| `DISCORD_NOTIFY_GROUP_RX6900XT` | Discord group to notify on RX 6900XT stock | | `DISCORD_NOTIFY_GROUP_RYZEN5600` | Discord group to notify on 5600X stock | +| `DISCORD_NOTIFY_GROUP_RYZEN5600` | Discord group to notify on Ryzen 5600X stock | | `DISCORD_NOTIFY_GROUP_RYZEN5800` | Discord group to notify on 5800X stock | +| `DISCORD_NOTIFY_GROUP_RYZEN5800` | Discord group to notify on Ryzen 5800X stock | | `DISCORD_NOTIFY_GROUP_RYZEN5900` | Discord group to notify on 5900X stock | +| `DISCORD_NOTIFY_GROUP_RYZEN5900` | Discord group to notify on Ryzen 5900X stock | | `DISCORD_NOTIFY_GROUP_RYZEN5950` | Discord group to notify on 5950X stock | -| `DISCORD_NOTIFY_GROUP_DARKHERO` | Discord group to notify on Dark Hero stock | -| `DISCORD_NOTIFY_GROUP_CORSAIR_SF` | Discord group to notify on Corsair SF stock | +| `DISCORD_NOTIFY_GROUP_RYZEN5950` | Discord group to notify on Ryzen 5950X stock | +| `DISCORD_NOTIFY_GROUP_RYZEN7800X3D` | Discord group to notify on Ryzen 7800X3D stock | +| `DISCORD_NOTIFY_GROUP_RYZEN9600X` | Discord group to notify on Ryzen 9600X stock | +| `DISCORD_NOTIFY_GROUP_RYZEN9700X` | Discord group to notify on Ryzen 9700X stock | +| `DISCORD_NOTIFY_GROUP_RYZEN9800X3D` | Discord group to notify on Ryzen 9800X3D stock | +| `DISCORD_NOTIFY_GROUP_RYZEN9900X` | Discord group to notify on Ryzen 9900X stock | +| `DISCORD_NOTIFY_GROUP_RYZEN9950X` | Discord group to notify on Ryzen 9950X stock | | `DISCORD_NOTIFY_GROUP_SONYPS5C` | Discord group to notify on Sony PS5 stock | | `DISCORD_NOTIFY_GROUP_SONYPS5DE` | Discord group to notify on Sony PS5 Digital stock | -| `DISCORD_NOTIFY_GROUP_XBOXSX` | Discord group to notify on Xbox Series X stock | | `DISCORD_NOTIFY_GROUP_XBOXSS` | Discord group to notify on Xbox Series S stock | +| `DISCORD_NOTIFY_GROUP_XBOXSX` | Discord group to notify on Xbox Series X stock | | `DISCORD_NOTIFY_GROUP_TEST` | Discord group to notify on test stock | | `DISCORD_WEB_HOOK` | Discord Web Hook URL. Can be comma separated. Use whole webhook URL | @@ -217,7 +241,7 @@ Generate all Twitter keys at [developer.twitter.com](https://developer.twitter.c | `TWITTER_CONSUMER_SECRET` | Twitter Consumer Secret | | `TWITTER_TWEET_TAGS` | List of hashtags to append to the tweet message, e.g.: `#nvidia #nvidiastock` | -## Twitch +## Twitch - TEMPORARILY DISABLED Instructions on how to set up tokens can be found at [d-fischer.github.io/twitch-chat-client/docs/examples/basic-bot](https://d-fischer.github.io/twitch-chat-client/docs/examples/basic-bot). @@ -255,3 +279,16 @@ Copy the API key generated with the service activation. | `FREEMOBILE_API_KEY` | API key generated with your notification option activation | Note: here you do not need to give neither your password nor phone number. + +## NTFY.sh + +You can send notifications using NTFY.sh, which supports various features like priority, tags, and action buttons. +Use the free service at [ntfy.sh](https://ntfy.sh) or host your own instance. + +| Environment variable | Description | +|:---:|---| +| `NTFY_URL` | ntfy server URL, e.g. `https://ntfy.sh` | +| `NTFY_TOPIC` | Topic to publish alerts to | +| `NTFY_PRIORITY` | Message priority, e.g. max/high/default/low/min, I recommend to use the numbers instead of the string values for the priority. https://docs.ntfy.sh/publish/?h=priority#message-priority | +| `NTFY_TITLE` | Title of the message | +| `NTFY_ACCESS_TOKEN` | Access token for authentication. https://docs.ntfy.sh/config/#access-tokens | diff --git a/dotenv-example b/dotenv-example index 417282b825..fccaf53a21 100644 --- a/dotenv-example +++ b/dotenv-example @@ -28,6 +28,16 @@ DISCORD_NOTIFY_GROUP_3070TI= DISCORD_NOTIFY_GROUP_3080= DISCORD_NOTIFY_GROUP_3080TI= DISCORD_NOTIFY_GROUP_3090= +DISCORD_NOTIFY_GROUP_4060= +DISCORD_NOTIFY_GROUP_4070= +DISCORD_NOTIFY_GROUP_4070SUPER= +DISCORD_NOTIFY_GROUP_4070TI= +DISCORD_NOTIFY_GROUP_4080_16G= +DISCORD_NOTIFY_GROUP_4090= +DISCORD_NOTIFY_GROUP_5070= +DISCORD_NOTIFY_GROUP_5070TI= +DISCORD_NOTIFY_GROUP_5080= +DISCORD_NOTIFY_GROUP_5090= DISCORD_NOTIFY_GROUP_CORSAIR_SF= DISCORD_NOTIFY_GROUP_RX6800= DISCORD_NOTIFY_GROUP_RX6800XT= @@ -36,6 +46,12 @@ DISCORD_NOTIFY_GROUP_RYZEN5600= DISCORD_NOTIFY_GROUP_RYZEN5800= DISCORD_NOTIFY_GROUP_RYZEN5900= DISCORD_NOTIFY_GROUP_RYZEN5950= +DISCORD_NOTIFY_GROUP_RYZEN7800X3D= +DISCORD_NOTIFY_GROUP_RYZEN9800X3D= +DISCORD_NOTIFY_GROUP_RYZEN9950X= +DISCORD_NOTIFY_GROUP_RYZEN9900X= +DISCORD_NOTIFY_GROUP_RYZEN9700X= +DISCORD_NOTIFY_GROUP_RYZEN9600X= DISCORD_NOTIFY_GROUP_SONYPS5C= DISCORD_NOTIFY_GROUP_SONYPS5DE= DISCORD_NOTIFY_GROUP_XBOXSX= @@ -60,7 +76,18 @@ MAX_PRICE_SERIES_3070TI= MAX_PRICE_SERIES_3080= MAX_PRICE_SERIES_3080TI= MAX_PRICE_SERIES_3090= +MAX_PRICE_SERIES_4060= +MAX_PRICE_SERIES_4070= +MAX_PRICE_SERIES_4070SUPER= +MAX_PRICE_SERIES_4070TI= +MAX_PRICE_SERIES_4080_16G= +MAX_PRICE_SERIES_4090= +MAX_PRICE_SERIES_5070= +MAX_PRICE_SERIES_5070TI= +MAX_PRICE_SERIES_5080= +MAX_PRICE_SERIES_5090= MAX_PRICE_SERIES_CORSAIR_SF= +MAX_PRICE_SERIES_G4_DOORBELL_PRO= MAX_PRICE_SERIES_RX6800= MAX_PRICE_SERIES_RX6800XT= MAX_PRICE_SERIES_RX6900XT= @@ -68,11 +95,22 @@ MAX_PRICE_SERIES_RYZEN5600= MAX_PRICE_SERIES_RYZEN5800= MAX_PRICE_SERIES_RYZEN5900= MAX_PRICE_SERIES_RYZEN5950= +MAX_PRICE_SERIES_RYZEN7800X3D= +MAX_PRICE_SERIES_RYZEN9800X3D= +MAX_PRICE_SERIES_RYZEN9950X= +MAX_PRICE_SERIES_RYZEN9900X= +MAX_PRICE_SERIES_RYZEN9700X= +MAX_PRICE_SERIES_RYZEN9600X= MAX_PRICE_SERIES_SONYPS5C= MAX_PRICE_SERIES_SONYPS5DE= MAX_PRICE_SERIES_XBOXSS= MAX_PRICE_SERIES_XBOXSX= MAX_PRICE_SERIES_TEST= +MAX_PRICE_SERIES_UDM_PRO= +MAX_PRICE_SERIES_UDM_US= +MAX_PRICE_SERIES_UDR_US= +MAX_PRICE_SERIES_UNVR= +MAX_PRICE_SERIES_UNVR_PRO= MICROCENTER_LOCATION= MQTT_BROKER_ADDRESS= MQTT_BROKER_PORT= @@ -112,8 +150,10 @@ PUSHOVER_RETRY= PUSHOVER_SOUND= PUSHOVER_TOKEN= PUSHOVER_USER= +REDIS_URL= RESTART_TIME= SCREENSHOT= +SCREENSHOT_DIR= SHOW_ONLY_BRANDS= SHOW_ONLY_MODELS= SHOW_ONLY_SERIES= @@ -145,4 +185,9 @@ STREAMLABS_SOUND= STREAMLABS_DURATION= FREEMOBILE_ID= FREEMOBILE_API_KEY= +NTFY_TOPIC= +NTFY_PRIORITY= +NTFY_TITLE= +NTFY_ACCESS_TOKEN= +NTFY_URL= WEB_PORT= diff --git a/helpers/brandList.ts b/helpers/brandList.ts new file mode 100644 index 0000000000..b830bd9e12 --- /dev/null +++ b/helpers/brandList.ts @@ -0,0 +1,31 @@ +import {storeList} from '../src/store/model/index'; + +// First get the grouped and deduplicated data +const groupedByBrandAndModel = [...storeList] + .map(storeInfo => storeInfo[1]) + .flatMap(store => store.links || []) + .reduce((groupMap, link) => { + const key = `${link.brand}`; + if (!groupMap.has(key)) { + groupMap.set(key, new Set()); + } + groupMap.get(key)!.add(link.model); + return groupMap; + }, new Map>()); + +// Convert to sorted table format +const sortedEntries = [...groupedByBrandAndModel.entries()] + .sort(([brandA], [brandB]) => brandA.localeCompare(brandB)) + .map(([brand, modelSet]) => { + const sortedModels = [...modelSet].sort().join('`, `'); + return `| \`${brand}\` | \`${sortedModels}\` |`; + }); + +// Create table header and combine with data +const tableHeader = '| Brand | Model |'; +const headerSeparator = '|:---:|---|'; +const formattedTable = [tableHeader, headerSeparator, ...sortedEntries].join( + '\n' +); + +console.log(formattedTable); diff --git a/mkdocs.yml b/mkdocs.yml index 552188360e..26f24467ae 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -7,6 +7,7 @@ site_description: 🤖 The world's easiest, most powerful stock checker # Repository repo_name: jef/streetmerchant repo_url: https://github.com/jef/streetmerchant +edit_uri: edit/main/docs/ # Copyright copyright: Copyright © 2016 - 2020 Jef LeCompte @@ -24,9 +25,16 @@ theme: language: en name: material palette: - scheme: default - primary: indigo - accent: indigo + - media: "(prefers-color-scheme: light)" + scheme: default + toggle: + icon: material/weather-night + name: Switch to dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/weather-sunny + name: Switch to light mode # Plugins plugins: @@ -39,8 +47,6 @@ extra: social: - icon: fontawesome/brands/github link: https://github.com/jef - - icon: fontawesome/brands/twitter - link: https://twitter.com/hijxf - icon: fontawesome/brands/linkedin link: https://www.linkedin.com/in/jeflecompte diff --git a/package-lock.json b/package-lock.json index feff999fc7..9634dfbb9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,12 @@ { "name": "streetmerchant", - "version": "3.5.0", + "version": "3.11.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "3.5.0", + "name": "streetmerchant", + "version": "3.11.0", "license": "MIT", "dependencies": { "@doridian/puppeteer-page-proxy": "^1.2.11", @@ -30,10 +31,7 @@ "pushover-notifications": "^1.2.2", "redis": "^3.1.2", "top-user-agents": "^1.0.37", - "twilio": "^3.66.1", - "twitch": "^4.6.5", - "twitch-auth": "^4.6.5", - "twitch-chat-client": "^4.6.5", + "twilio": "^3.71.1", "twitter": "^1.7.1", "winston": "^3.3.3" }, @@ -228,162 +226,6 @@ "node": ">=12" } }, - "node_modules/@d-fischer/cache-decorators": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@d-fischer/cache-decorators/-/cache-decorators-2.1.3.tgz", - "integrity": "sha512-MlM8ipg5Exkc0Ok//sG83smBW4mLRL+/ZngfxYQ8IgxBjfpM3m2M+Y2X+a9St3EyJfYoVKHR8RWdICsU+W3gSA==", - "dependencies": { - "@d-fischer/shared-utils": "^3.0.1", - "@types/node": "^14.14.22", - "tslib": "^2.1.0" - } - }, - "node_modules/@d-fischer/cache-decorators/node_modules/@types/node": { - "version": "14.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz", - "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==" - }, - "node_modules/@d-fischer/connection": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@d-fischer/connection/-/connection-6.5.0.tgz", - "integrity": "sha512-C0BQjswoiEdE9C644R7Cte3WpZ5A5f61DDdCxzjr0/UKIITTLVdcBbiCxstCWjwmM/MMvIokd4raZkJjnByUog==", - "dependencies": { - "@d-fischer/isomorphic-ws": "^5.0.2", - "@d-fischer/logger": "^3.0.0", - "@d-fischer/shared-utils": "^3.0.1", - "@d-fischer/typed-event-emitter": "^3.2.2", - "@types/node": "^14.14.19", - "@types/ws": "^7.2.7", - "tslib": "^2.0.3", - "ws": "^7.4.2" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/@d-fischer/connection/node_modules/@types/node": { - "version": "14.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz", - "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==" - }, - "node_modules/@d-fischer/cross-fetch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@d-fischer/cross-fetch/-/cross-fetch-4.0.2.tgz", - "integrity": "sha512-3ONhZxPmgCerBi8rU9kDQktF2zMpv7gkVJuoR8I+pYeO4QWccEcqQem0i1mLBh7/y7ejR474RZb3S3EO/Sdi3A==", - "dependencies": { - "node-fetch": "2.6.1" - } - }, - "node_modules/@d-fischer/deprecate": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@d-fischer/deprecate/-/deprecate-2.0.2.tgz", - "integrity": "sha512-wlw3HwEanJFJKctwLzhfOM6LKwR70FPfGZGoKOhWBKyOPXk+3a9Cc6S9zhm6tka7xKtpmfxVIReGUwPnMbIaZg==" - }, - "node_modules/@d-fischer/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@d-fischer/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-7eoxnxcto5eVPW5h1T+ePnVFukmI9f/ZR9nlBLh1t3kyzJDUNor2C+YW9H/Terw3YnbZSDgDYrpCJCHtOtAQHw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/@d-fischer/isomorphic-ws": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@d-fischer/isomorphic-ws/-/isomorphic-ws-5.0.4.tgz", - "integrity": "sha512-iNX2+kupoYtTg5snSzvqpa+rgQmnxWbngU5/uV0y4PyuJHJIoWJuTa/KPh+3ruW4UtloqhCpGe8pyb0EGjt9xQ==", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/@d-fischer/logger": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@d-fischer/logger/-/logger-3.1.0.tgz", - "integrity": "sha512-kNg9PjmiyH9DMr70mAWU+i+dy3+e1hI0lR+No5RJduQtexI247NmEzNd0pethpwm+1uA0MRf3w9QnqZ1PHKvyA==", - "dependencies": { - "detect-node": "^2.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@d-fischer/promise.allsettled": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@d-fischer/promise.allsettled/-/promise.allsettled-2.0.2.tgz", - "integrity": "sha512-xY0vYDwJYFe22MS5ccQ50N4Mcc2nQ8J4eWE5Y354IxZwW32O5uTT6mmhFSuVF6ZrKvzHOCIrK+9WqOR6TI3tcA==", - "dependencies": { - "array.prototype.map": "^1.0.3", - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "get-intrinsic": "^1.0.2", - "iterate-value": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/@d-fischer/qs": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@d-fischer/qs/-/qs-7.0.2.tgz", - "integrity": "sha512-yAu3xDooiL+ef84Jo8nLjDjWBRk7RXk163Y6aTvRB7FauYd3spQD/dWvgT7R4CrN54Juhrrc3dMY7mc+jZGurQ==", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/@d-fischer/rate-limiter": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@d-fischer/rate-limiter/-/rate-limiter-0.4.3.tgz", - "integrity": "sha512-KzmssPK/uKONvq1oQpmOvMoacrfTPocNlkBTf7/3VYFSvk8mbs9maeDLelbLYk0QJZjpl6o6gCEyi8s9nt/A4A==", - "dependencies": { - "@d-fischer/logger": "^3.1.0", - "@d-fischer/promise.allsettled": "^2.0.2", - "@types/node": "^12.12.5", - "tslib": "^2.0.3" - } - }, - "node_modules/@d-fischer/rate-limiter/node_modules/@types/node": { - "version": "12.20.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.16.tgz", - "integrity": "sha512-6CLxw83vQf6DKqXxMPwl8qpF8I7THFZuIwLt4TnNsumxkp1VsRZWT8txQxncT/Rl2UojTsFzWgDG4FRMwafrlA==" - }, - "node_modules/@d-fischer/shared-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@d-fischer/shared-utils/-/shared-utils-3.2.0.tgz", - "integrity": "sha512-YgAPpd0jxtchZlEqvVmL21A+/Ottx5759s6THiJs0o5+8pPIrshBlULhmfunbaidHmViuUhjxzZfqRkYl0MR9g==", - "dependencies": { - "@types/node": "^14.11.2", - "tslib": "^2.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/@d-fischer/shared-utils/node_modules/@types/node": { - "version": "14.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz", - "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==" - }, - "node_modules/@d-fischer/typed-event-emitter": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@d-fischer/typed-event-emitter/-/typed-event-emitter-3.2.2.tgz", - "integrity": "sha512-qT53HcoEM644EiDYMG1mz478qcys7p/mya+7d7annFlXmHCJlZ3tfKJWonDf/itKOBdjaaiRqV2goS+85dsWVA==", - "dependencies": { - "@types/node": "^14.11.2", - "tslib": "^2.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/@d-fischer/typed-event-emitter/node_modules/@types/node": { - "version": "14.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz", - "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==" - }, "node_modules/@dabh/diagnostics": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", @@ -398,6 +240,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.4.0.tgz", "integrity": "sha512-EiwLltKph6TSaPJIzJYdzNc1PnA2ZNaaE0t0ODg3ghnpVHqfgd0YX9/srsleYHW2cw1sfIq+kbM+h0etf7GWLA==", + "deprecated": "no longer supported", "dependencies": { "@sindresorhus/is": "^4.0.1", "discord-api-types": "^0.22.0", @@ -414,6 +257,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.2.1.tgz", "integrity": "sha512-vhxqzzM8gkomw0TYRF3tgx7SwElzUlXT/Aa41O7mOcyN6wIJfj5JmDWaO5XGKsGSsNx7F3i5oIlrucCCWV1Nog==", + "deprecated": "no longer supported", "engines": { "node": ">=14.0.0" } @@ -422,6 +266,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz", "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -885,6 +730,7 @@ "version": "2.5.12", "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "dev": true, "dependencies": { "@types/node": "*", "form-data": "^3.0.0" @@ -894,6 +740,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -928,9 +775,9 @@ "dev": true }, "node_modules/@types/puppeteer": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.3.tgz", - "integrity": "sha512-3nE8YgR9DIsgttLW+eJf6mnXxq8Ge+27m5SU3knWmrlfl6+KOG0Bf9f7Ua7K+C4BnaTMAh3/UpySqdAYvrsvjg==", + "version": "5.4.7", + "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.7.tgz", + "integrity": "sha512-JdGWZZYL0vKapXF4oQTC5hLVNfOgdPrqeZ1BiQnGk5cB7HeE91EWUiTdVSdQPobRN8rIcdffjiOgCYJ/S8QrnQ==", "peer": true, "dependencies": { "@types/node": "*" @@ -1576,24 +1423,6 @@ "node": ">=8" } }, - "node_modules/array.prototype.map": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.3.tgz", - "integrity": "sha512-nNcb30v0wfDyIe26Yif3PcV1JXQp4zEeEfupG7L4SRjnD6HLbO5b2a7eVSba53bOx4YCHYMBHt+Fp4vYstneRA==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -2410,9 +2239,9 @@ } }, "node_modules/dayjs": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.6.tgz", - "integrity": "sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw==" + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", + "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" }, "node_modules/debug": { "version": "4.3.2", @@ -2533,17 +2362,6 @@ "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2568,11 +2386,6 @@ "node": ">=8" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - }, "node_modules/devtools-protocol": { "version": "0.0.869402", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.869402.tgz", @@ -2603,6 +2416,7 @@ "version": "0.22.0", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.22.0.tgz", "integrity": "sha512-l8yD/2zRbZItUQpy7ZxBJwaLX/Bs2TGaCthRppk8Sw24LOIWg12t9JEreezPoYD0SQcC2htNNo27kYEpYW/Srg==", + "deprecated": "No longer supported. Install the latest release!", "engines": { "node": ">=12" } @@ -2611,6 +2425,7 @@ "version": "13.0.1", "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.0.1.tgz", "integrity": "sha512-pEODCFfxypBnGEYpSgjkn1jt70raCS1um7Zp0AXEfW1DcR29wISzQ/WeWdnjP5KTXGi0LTtkRiUjOsMgSoukxA==", + "deprecated": "no longer supported", "dependencies": { "@discordjs/builders": "^0.4.0", "@discordjs/collection": "^0.2.1", @@ -2819,85 +2634,12 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, - "node_modules/es-get-iterator": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", - "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.0", - "has-symbols": "^1.0.1", - "is-arguments": "^1.1.0", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-get-iterator/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, "node_modules/es-module-lexer": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", "dev": true }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -3928,14 +3670,6 @@ "node": ">= 0.4.0" } }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4223,57 +3957,12 @@ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, - "node_modules/ircv3": { - "version": "0.26.14", - "resolved": "https://registry.npmjs.org/ircv3/-/ircv3-0.26.14.tgz", - "integrity": "sha512-R0wiULLrl2d6Rrmw3vgyi9Cxw1KHky9/RwTkSo/Y6sXFH45EuLpVJhm9eLHFTs8EKrayq4H6FYfEN95KBC1qMQ==", - "dependencies": { - "@d-fischer/connection": "^6.4.2", - "@d-fischer/escape-string-regexp": "^5.0.0", - "@d-fischer/logger": "^3.1.0", - "@d-fischer/shared-utils": "^3.0.1", - "@d-fischer/typed-event-emitter": "^3.2.2", - "@types/node": "^14.14.19", - "klona": "^2.0.4", - "tslib": "^2.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/ircv3/node_modules/@types/node": { - "version": "14.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz", - "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==" - }, - "node_modules/is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", - "dependencies": { - "call-bind": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "node_modules/is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -4286,36 +3975,11 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -4340,17 +4004,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -4424,25 +4077,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-npm": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", @@ -4464,17 +4098,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -4512,29 +4135,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -4543,31 +4143,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -4662,23 +4237,6 @@ "node": ">=8" } }, - "node_modules/iterate-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", - "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==" - }, - "node_modules/iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", - "dependencies": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/jest-worker": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", @@ -4869,14 +4427,6 @@ "node": ">=0.10.0" } }, - "node_modules/klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", - "engines": { - "node": ">= 8" - } - }, "node_modules/kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", @@ -8405,6 +7955,11 @@ "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, "engines": { "node": ">=0.10.0" } @@ -8691,31 +8246,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -9404,6 +8934,7 @@ "version": "9.1.1", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-9.1.1.tgz", "integrity": "sha512-W+nOulP2tYd/ZG99WuZC/I5ljjQQ7EUw/jQGcIb9eu8mDlZxNY2SgcJXTLG9h5gRvqA3uJOe4hZXYsd3EqioMw==", + "deprecated": "Version no longer supported. Upgrade to @latest", "hasInstallScript": true, "dependencies": { "debug": "^4.1.0", @@ -9424,13 +8955,12 @@ } }, "node_modules/puppeteer-extra": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/puppeteer-extra/-/puppeteer-extra-3.1.18.tgz", - "integrity": "sha512-mGQyAnxaGcZomx7NVC4wgAkZl0MLTdE/GIfwRSbLJ9L4yIxPg9uEA3yiLBe+x09tjhTGEtv8KDef8Bl53RXgiA==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/puppeteer-extra/-/puppeteer-extra-3.3.4.tgz", + "integrity": "sha512-fN5pHvSMJ8d1o7Z8wLLTQOUBpORD2BcFn+KDs7QnkGZs9SV69hcUcce67vX4L4bNSEG3A0P6Osrv+vWNhhdm8w==", "peer": true, "dependencies": { "@types/debug": "^4.1.0", - "@types/puppeteer": "5.4.3", "debug": "^4.1.1", "deepmerge": "^4.2.2" }, @@ -9438,7 +8968,20 @@ "node": ">=8" }, "peerDependencies": { - "puppeteer": "*" + "@types/puppeteer": "*", + "puppeteer": "*", + "puppeteer-core": "*" + }, + "peerDependenciesMeta": { + "@types/puppeteer": { + "optional": true + }, + "puppeteer": { + "optional": true + }, + "puppeteer-core": { + "optional": true + } } }, "node_modules/puppeteer-extra-plugin": { @@ -9521,6 +9064,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-5.5.0.tgz", "integrity": "sha512-OM8ZvTXAhfgFA7wBIIGlPQzvyEETzDjeRa4mZRCRHxYL+GNH5WAuYUQdja3rpWZvkX/JKqmuVgbsxDNsDFjMEg==", + "deprecated": "Version no longer supported. Upgrade to @latest", "hasInstallScript": true, "peer": true, "dependencies": { @@ -10627,30 +10171,6 @@ "node": ">=8" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -10919,11 +10439,6 @@ "node": ">=8.0" } }, - "node_modules/top-package": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/top-package/-/top-package-1.0.1.tgz", - "integrity": "sha512-tsuhQlHSigOTTvonxHXwqSKEVSnWMh2GvpTvXa5YmoyOwL5YvU4lTd/KNVZlKM5v7gqx44UEuQxyPQEpmaIHdg==" - }, "node_modules/top-user-agents": { "version": "1.0.37", "resolved": "https://registry.npmjs.org/top-user-agents/-/top-user-agents-1.0.37.tgz", @@ -11098,11 +10613,11 @@ } }, "node_modules/twilio": { - "version": "3.66.1", - "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.66.1.tgz", - "integrity": "sha512-BmIgfx2VuS7tj4IscBhyEj7CdmtfIaaJ1IuNeGoJFYBx5xikpuwkR0Ceo5CNtK5jnN3SCKmxHxToec/MYEXl0A==", + "version": "3.71.1", + "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.71.1.tgz", + "integrity": "sha512-P/KFvm33UW15EnpHJKgdTxUa1u6MlR/u+sCVnL4ie2TDRv6t7kX+ieIGQMpH7bP/z7FXkTjEt0lz4M+XJ/XWOg==", "dependencies": { - "axios": "^0.21.1", + "axios": "^0.21.4", "dayjs": "^1.8.29", "https-proxy-agent": "^5.0.0", "jsonwebtoken": "^8.5.1", @@ -11111,13 +10626,21 @@ "qs": "^6.9.4", "rootpath": "^0.1.2", "scmp": "^2.1.0", - "url-parse": "^1.5.0", + "url-parse": "^1.5.3", "xmlbuilder": "^13.0.2" }, "engines": { "node": ">=6.0" } }, + "node_modules/twilio/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, "node_modules/twilio/node_modules/qs": { "version": "6.10.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", @@ -11132,95 +10655,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/twitch": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/twitch/-/twitch-4.6.5.tgz", - "integrity": "sha512-vQ9p7s9SHcUgU7Lul7pAf70p8vQXk2o9BCwkGqzZjmMsVMsoikk3MLD7n9Cjle9bIPvWuqW/MyMOw3WdrMe8yg==", - "hasInstallScript": true, - "dependencies": { - "@d-fischer/cache-decorators": "^2.1.1", - "@d-fischer/deprecate": "^2.0.2", - "@d-fischer/logger": "^3.1.0", - "@d-fischer/rate-limiter": "^0.4.3", - "@d-fischer/shared-utils": "^3.0.1", - "top-package": "^1.0.0", - "tslib": "^2.0.3", - "twitch-api-call": "^4.6.5", - "twitch-auth": "^4.6.5", - "twitch-common": "^4.6.5" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/twitch-api-call": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/twitch-api-call/-/twitch-api-call-4.6.5.tgz", - "integrity": "sha512-a2clXthjFeuIEo+nl1pliTBkms/S+uSTgUB7xyC1FNimJooOq7cAtC6xNWBgtT1JpYdnxZjhCIHCUVtdpagp4g==", - "dependencies": { - "@d-fischer/cross-fetch": "^4.0.2", - "@d-fischer/qs": "^7.0.2", - "@types/node-fetch": "^2.5.7", - "node-fetch": "^2.6.1", - "tslib": "^2.0.3", - "twitch-common": "^4.6.5" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/twitch-auth": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/twitch-auth/-/twitch-auth-4.6.5.tgz", - "integrity": "sha512-BVeW3P2coQn1aNV1sVH/Q0wbgkl1Saf/M76OSanitcA8IgvnEfCGY3iDt2Taec98eBXL+E8SN1iLHLsl3GBHvg==", - "dependencies": { - "@d-fischer/deprecate": "^2.0.2", - "@d-fischer/logger": "^3.1.0", - "@d-fischer/shared-utils": "^3.0.1", - "tslib": "^2.0.3", - "twitch-api-call": "^4.6.5", - "twitch-common": "^4.6.5" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/twitch-chat-client": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/twitch-chat-client/-/twitch-chat-client-4.6.5.tgz", - "integrity": "sha512-MpWSGWHvrw9DLpJZokdwzJxVOtSLApIm9JAbEsND47qxKgrxymf/1RfinSL93qRDrJhtrWwqlUXV2SpZz5YxpQ==", - "dependencies": { - "@d-fischer/cache-decorators": "^2.1.1", - "@d-fischer/deprecate": "^2.0.2", - "@d-fischer/logger": "^3.1.0", - "@d-fischer/rate-limiter": "^0.4.3", - "@d-fischer/shared-utils": "^3.0.1", - "@d-fischer/typed-event-emitter": "^3.2.2", - "ircv3": "^0.26.14", - "tslib": "^2.0.3", - "twitch-auth": "^4.6.5", - "twitch-common": "^4.6.5" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "twitch": "^4.4.0" - } - }, - "node_modules/twitch-common": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/twitch-common/-/twitch-common-4.6.5.tgz", - "integrity": "sha512-V8rgOIvX6bUMxBQ3BqrmvQOZOfcxsPEZR7lLNXlRsLxHAAbMGze1/SiAzhzQzH/8OV7G3qslWNGEHuQE5iWHbQ==", - "dependencies": { - "@d-fischer/logger": "^3.1.0", - "@d-fischer/shared-utils": "^3.0.1", - "tslib": "^2.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, "node_modules/twitter": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", @@ -11289,20 +10723,6 @@ "node": ">=4.2.0" } }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/unbzip2-stream": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", @@ -11398,9 +10818,9 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" }, "node_modules/url-parse": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", - "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -11608,21 +11028,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -12143,146 +11548,6 @@ "@cspotcode/source-map-consumer": "0.8.0" } }, - "@d-fischer/cache-decorators": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@d-fischer/cache-decorators/-/cache-decorators-2.1.3.tgz", - "integrity": "sha512-MlM8ipg5Exkc0Ok//sG83smBW4mLRL+/ZngfxYQ8IgxBjfpM3m2M+Y2X+a9St3EyJfYoVKHR8RWdICsU+W3gSA==", - "requires": { - "@d-fischer/shared-utils": "^3.0.1", - "@types/node": "^14.14.22", - "tslib": "^2.1.0" - }, - "dependencies": { - "@types/node": { - "version": "14.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz", - "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==" - } - } - }, - "@d-fischer/connection": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@d-fischer/connection/-/connection-6.5.0.tgz", - "integrity": "sha512-C0BQjswoiEdE9C644R7Cte3WpZ5A5f61DDdCxzjr0/UKIITTLVdcBbiCxstCWjwmM/MMvIokd4raZkJjnByUog==", - "requires": { - "@d-fischer/isomorphic-ws": "^5.0.2", - "@d-fischer/logger": "^3.0.0", - "@d-fischer/shared-utils": "^3.0.1", - "@d-fischer/typed-event-emitter": "^3.2.2", - "@types/node": "^14.14.19", - "@types/ws": "^7.2.7", - "tslib": "^2.0.3", - "ws": "^7.4.2" - }, - "dependencies": { - "@types/node": { - "version": "14.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz", - "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==" - } - } - }, - "@d-fischer/cross-fetch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@d-fischer/cross-fetch/-/cross-fetch-4.0.2.tgz", - "integrity": "sha512-3ONhZxPmgCerBi8rU9kDQktF2zMpv7gkVJuoR8I+pYeO4QWccEcqQem0i1mLBh7/y7ejR474RZb3S3EO/Sdi3A==", - "requires": { - "node-fetch": "2.6.1" - } - }, - "@d-fischer/deprecate": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@d-fischer/deprecate/-/deprecate-2.0.2.tgz", - "integrity": "sha512-wlw3HwEanJFJKctwLzhfOM6LKwR70FPfGZGoKOhWBKyOPXk+3a9Cc6S9zhm6tka7xKtpmfxVIReGUwPnMbIaZg==" - }, - "@d-fischer/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@d-fischer/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-7eoxnxcto5eVPW5h1T+ePnVFukmI9f/ZR9nlBLh1t3kyzJDUNor2C+YW9H/Terw3YnbZSDgDYrpCJCHtOtAQHw==" - }, - "@d-fischer/isomorphic-ws": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@d-fischer/isomorphic-ws/-/isomorphic-ws-5.0.4.tgz", - "integrity": "sha512-iNX2+kupoYtTg5snSzvqpa+rgQmnxWbngU5/uV0y4PyuJHJIoWJuTa/KPh+3ruW4UtloqhCpGe8pyb0EGjt9xQ==", - "requires": {} - }, - "@d-fischer/logger": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@d-fischer/logger/-/logger-3.1.0.tgz", - "integrity": "sha512-kNg9PjmiyH9DMr70mAWU+i+dy3+e1hI0lR+No5RJduQtexI247NmEzNd0pethpwm+1uA0MRf3w9QnqZ1PHKvyA==", - "requires": { - "detect-node": "^2.0.4", - "tslib": "^2.0.3" - } - }, - "@d-fischer/promise.allsettled": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@d-fischer/promise.allsettled/-/promise.allsettled-2.0.2.tgz", - "integrity": "sha512-xY0vYDwJYFe22MS5ccQ50N4Mcc2nQ8J4eWE5Y354IxZwW32O5uTT6mmhFSuVF6ZrKvzHOCIrK+9WqOR6TI3tcA==", - "requires": { - "array.prototype.map": "^1.0.3", - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "get-intrinsic": "^1.0.2", - "iterate-value": "^1.0.2" - } - }, - "@d-fischer/qs": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@d-fischer/qs/-/qs-7.0.2.tgz", - "integrity": "sha512-yAu3xDooiL+ef84Jo8nLjDjWBRk7RXk163Y6aTvRB7FauYd3spQD/dWvgT7R4CrN54Juhrrc3dMY7mc+jZGurQ==" - }, - "@d-fischer/rate-limiter": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@d-fischer/rate-limiter/-/rate-limiter-0.4.3.tgz", - "integrity": "sha512-KzmssPK/uKONvq1oQpmOvMoacrfTPocNlkBTf7/3VYFSvk8mbs9maeDLelbLYk0QJZjpl6o6gCEyi8s9nt/A4A==", - "requires": { - "@d-fischer/logger": "^3.1.0", - "@d-fischer/promise.allsettled": "^2.0.2", - "@types/node": "^12.12.5", - "tslib": "^2.0.3" - }, - "dependencies": { - "@types/node": { - "version": "12.20.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.16.tgz", - "integrity": "sha512-6CLxw83vQf6DKqXxMPwl8qpF8I7THFZuIwLt4TnNsumxkp1VsRZWT8txQxncT/Rl2UojTsFzWgDG4FRMwafrlA==" - } - } - }, - "@d-fischer/shared-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@d-fischer/shared-utils/-/shared-utils-3.2.0.tgz", - "integrity": "sha512-YgAPpd0jxtchZlEqvVmL21A+/Ottx5759s6THiJs0o5+8pPIrshBlULhmfunbaidHmViuUhjxzZfqRkYl0MR9g==", - "requires": { - "@types/node": "^14.11.2", - "tslib": "^2.0.3" - }, - "dependencies": { - "@types/node": { - "version": "14.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz", - "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==" - } - } - }, - "@d-fischer/typed-event-emitter": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@d-fischer/typed-event-emitter/-/typed-event-emitter-3.2.2.tgz", - "integrity": "sha512-qT53HcoEM644EiDYMG1mz478qcys7p/mya+7d7annFlXmHCJlZ3tfKJWonDf/itKOBdjaaiRqV2goS+85dsWVA==", - "requires": { - "@types/node": "^14.11.2", - "tslib": "^2.0.3" - }, - "dependencies": { - "@types/node": { - "version": "14.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz", - "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==" - } - } - }, "@dabh/diagnostics": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", @@ -12725,6 +11990,7 @@ "version": "2.5.12", "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "dev": true, "requires": { "@types/node": "*", "form-data": "^3.0.0" @@ -12734,6 +12000,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -12767,9 +12034,9 @@ "dev": true }, "@types/puppeteer": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.3.tgz", - "integrity": "sha512-3nE8YgR9DIsgttLW+eJf6mnXxq8Ge+27m5SU3knWmrlfl6+KOG0Bf9f7Ua7K+C4BnaTMAh3/UpySqdAYvrsvjg==", + "version": "5.4.7", + "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.7.tgz", + "integrity": "sha512-JdGWZZYL0vKapXF4oQTC5hLVNfOgdPrqeZ1BiQnGk5cB7HeE91EWUiTdVSdQPobRN8rIcdffjiOgCYJ/S8QrnQ==", "peer": true, "requires": { "@types/node": "*" @@ -13280,18 +12547,6 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "array.prototype.map": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.3.tgz", - "integrity": "sha512-nNcb30v0wfDyIe26Yif3PcV1JXQp4zEeEfupG7L4SRjnD6HLbO5b2a7eVSba53bOx4YCHYMBHt+Fp4vYstneRA==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.5" - } - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -13931,9 +13186,9 @@ } }, "dayjs": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.6.tgz", - "integrity": "sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw==" + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", + "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" }, "debug": { "version": "4.3.2", @@ -14013,14 +13268,6 @@ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -14036,11 +13283,6 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==" }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - }, "devtools-protocol": { "version": "0.0.869402", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.869402.tgz", @@ -14238,72 +13480,12 @@ "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, - "es-get-iterator": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", - "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.0", - "has-symbols": "^1.0.1", - "is-arguments": "^1.1.0", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "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": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", "dev": true }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -15051,11 +14233,6 @@ "function-bind": "^1.1.1" } }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -15261,47 +14438,12 @@ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, - "ircv3": { - "version": "0.26.14", - "resolved": "https://registry.npmjs.org/ircv3/-/ircv3-0.26.14.tgz", - "integrity": "sha512-R0wiULLrl2d6Rrmw3vgyi9Cxw1KHky9/RwTkSo/Y6sXFH45EuLpVJhm9eLHFTs8EKrayq4H6FYfEN95KBC1qMQ==", - "requires": { - "@d-fischer/connection": "^6.4.2", - "@d-fischer/escape-string-regexp": "^5.0.0", - "@d-fischer/logger": "^3.1.0", - "@d-fischer/shared-utils": "^3.0.1", - "@d-fischer/typed-event-emitter": "^3.2.2", - "@types/node": "^14.14.19", - "klona": "^2.0.4", - "tslib": "^2.0.3" - }, - "dependencies": { - "@types/node": { - "version": "14.17.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz", - "integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA==" - } - } - }, - "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", - "requires": { - "call-bind": "^1.0.0" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==" - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -15311,24 +14453,11 @@ "binary-extensions": "^2.0.0" } }, - "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", - "requires": { - "call-bind": "^1.0.2" - } - }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" - }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -15347,11 +14476,6 @@ "has": "^1.0.3" } }, - "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==" - }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -15398,16 +14522,6 @@ "is-path-inside": "^3.0.2" } }, - "is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" - }, "is-npm": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", @@ -15420,11 +14534,6 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==" - }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -15450,38 +14559,11 @@ "isobject": "^3.0.1" } }, - "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - } - }, - "is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, - "is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==" - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -15555,20 +14637,6 @@ "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", - "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==" - }, - "iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", - "requires": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - } - }, "jest-worker": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", @@ -15732,11 +14800,6 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, - "klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" - }, "kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", @@ -18474,22 +17537,6 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -19032,13 +18079,12 @@ } }, "puppeteer-extra": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/puppeteer-extra/-/puppeteer-extra-3.1.18.tgz", - "integrity": "sha512-mGQyAnxaGcZomx7NVC4wgAkZl0MLTdE/GIfwRSbLJ9L4yIxPg9uEA3yiLBe+x09tjhTGEtv8KDef8Bl53RXgiA==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/puppeteer-extra/-/puppeteer-extra-3.3.4.tgz", + "integrity": "sha512-fN5pHvSMJ8d1o7Z8wLLTQOUBpORD2BcFn+KDs7QnkGZs9SV69hcUcce67vX4L4bNSEG3A0P6Osrv+vWNhhdm8w==", "peer": true, "requires": { "@types/debug": "^4.1.0", - "@types/puppeteer": "5.4.3", "debug": "^4.1.1", "deepmerge": "^4.2.2" } @@ -19931,24 +18977,6 @@ "strip-ansi": "^6.0.0" } }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -20153,11 +19181,6 @@ "is-number": "^7.0.0" } }, - "top-package": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/top-package/-/top-package-1.0.1.tgz", - "integrity": "sha512-tsuhQlHSigOTTvonxHXwqSKEVSnWMh2GvpTvXa5YmoyOwL5YvU4lTd/KNVZlKM5v7gqx44UEuQxyPQEpmaIHdg==" - }, "top-user-agents": { "version": "1.0.37", "resolved": "https://registry.npmjs.org/top-user-agents/-/top-user-agents-1.0.37.tgz", @@ -20283,11 +19306,11 @@ } }, "twilio": { - "version": "3.66.1", - "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.66.1.tgz", - "integrity": "sha512-BmIgfx2VuS7tj4IscBhyEj7CdmtfIaaJ1IuNeGoJFYBx5xikpuwkR0Ceo5CNtK5jnN3SCKmxHxToec/MYEXl0A==", + "version": "3.71.1", + "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.71.1.tgz", + "integrity": "sha512-P/KFvm33UW15EnpHJKgdTxUa1u6MlR/u+sCVnL4ie2TDRv6t7kX+ieIGQMpH7bP/z7FXkTjEt0lz4M+XJ/XWOg==", "requires": { - "axios": "^0.21.1", + "axios": "^0.21.4", "dayjs": "^1.8.29", "https-proxy-agent": "^5.0.0", "jsonwebtoken": "^8.5.1", @@ -20296,10 +19319,18 @@ "qs": "^6.9.4", "rootpath": "^0.1.2", "scmp": "^2.1.0", - "url-parse": "^1.5.0", + "url-parse": "^1.5.3", "xmlbuilder": "^13.0.2" }, "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, "qs": { "version": "6.10.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", @@ -20310,76 +19341,6 @@ } } }, - "twitch": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/twitch/-/twitch-4.6.5.tgz", - "integrity": "sha512-vQ9p7s9SHcUgU7Lul7pAf70p8vQXk2o9BCwkGqzZjmMsVMsoikk3MLD7n9Cjle9bIPvWuqW/MyMOw3WdrMe8yg==", - "requires": { - "@d-fischer/cache-decorators": "^2.1.1", - "@d-fischer/deprecate": "^2.0.2", - "@d-fischer/logger": "^3.1.0", - "@d-fischer/rate-limiter": "^0.4.3", - "@d-fischer/shared-utils": "^3.0.1", - "top-package": "^1.0.0", - "tslib": "^2.0.3", - "twitch-api-call": "^4.6.5", - "twitch-auth": "^4.6.5", - "twitch-common": "^4.6.5" - } - }, - "twitch-api-call": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/twitch-api-call/-/twitch-api-call-4.6.5.tgz", - "integrity": "sha512-a2clXthjFeuIEo+nl1pliTBkms/S+uSTgUB7xyC1FNimJooOq7cAtC6xNWBgtT1JpYdnxZjhCIHCUVtdpagp4g==", - "requires": { - "@d-fischer/cross-fetch": "^4.0.2", - "@d-fischer/qs": "^7.0.2", - "@types/node-fetch": "^2.5.7", - "node-fetch": "^2.6.1", - "tslib": "^2.0.3", - "twitch-common": "^4.6.5" - } - }, - "twitch-auth": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/twitch-auth/-/twitch-auth-4.6.5.tgz", - "integrity": "sha512-BVeW3P2coQn1aNV1sVH/Q0wbgkl1Saf/M76OSanitcA8IgvnEfCGY3iDt2Taec98eBXL+E8SN1iLHLsl3GBHvg==", - "requires": { - "@d-fischer/deprecate": "^2.0.2", - "@d-fischer/logger": "^3.1.0", - "@d-fischer/shared-utils": "^3.0.1", - "tslib": "^2.0.3", - "twitch-api-call": "^4.6.5", - "twitch-common": "^4.6.5" - } - }, - "twitch-chat-client": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/twitch-chat-client/-/twitch-chat-client-4.6.5.tgz", - "integrity": "sha512-MpWSGWHvrw9DLpJZokdwzJxVOtSLApIm9JAbEsND47qxKgrxymf/1RfinSL93qRDrJhtrWwqlUXV2SpZz5YxpQ==", - "requires": { - "@d-fischer/cache-decorators": "^2.1.1", - "@d-fischer/deprecate": "^2.0.2", - "@d-fischer/logger": "^3.1.0", - "@d-fischer/rate-limiter": "^0.4.3", - "@d-fischer/shared-utils": "^3.0.1", - "@d-fischer/typed-event-emitter": "^3.2.2", - "ircv3": "^0.26.14", - "tslib": "^2.0.3", - "twitch-auth": "^4.6.5", - "twitch-common": "^4.6.5" - } - }, - "twitch-common": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/twitch-common/-/twitch-common-4.6.5.tgz", - "integrity": "sha512-V8rgOIvX6bUMxBQ3BqrmvQOZOfcxsPEZR7lLNXlRsLxHAAbMGze1/SiAzhzQzH/8OV7G3qslWNGEHuQE5iWHbQ==", - "requires": { - "@d-fischer/logger": "^3.1.0", - "@d-fischer/shared-utils": "^3.0.1", - "tslib": "^2.0.3" - } - }, "twitter": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", @@ -20429,17 +19390,6 @@ "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", "dev": true }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, "unbzip2-stream": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", @@ -20525,9 +19475,9 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" }, "url-parse": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", - "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -20686,18 +19636,6 @@ "isexe": "^2.0.0" } }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", diff --git a/package.json b/package.json index d6ff87213b..7ed217dbd9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "streetmerchant", - "version": "3.5.0", + "version": "3.11.0", "description": "The world's easiest, most powerful stock checker", "main": "src/index.ts", "scripts": { @@ -57,10 +57,7 @@ "pushover-notifications": "^1.2.2", "redis": "^3.1.2", "top-user-agents": "^1.0.37", - "twilio": "^3.66.1", - "twitch": "^4.6.5", - "twitch-auth": "^4.6.5", - "twitch-chat-client": "^4.6.5", + "twilio": "^3.71.1", "twitter": "^1.7.1", "winston": "^3.3.3" }, @@ -85,6 +82,6 @@ "webpack": "^5.50.0" }, "volta": { - "node": "16.6.1" + "node": "16.18.0" } } diff --git a/src/config.ts b/src/config.ts index a004d3e43a..10c41ebee9 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,7 +1,7 @@ -import {existsSync, readFileSync} from 'fs'; -import {banner} from './banner'; import dotenv from 'dotenv'; +import {existsSync, readFileSync} from 'fs'; import path from 'path'; +import {banner} from './banner'; if (process.env.npm_config_conf) { if ( @@ -230,6 +230,9 @@ const notifications = { discord: { notifyGroup: envOrArray(process.env.DISCORD_NOTIFY_GROUP), notifyGroupSeries: { + arc: envOrArray(process.env.DISCORD_NOTIFY_GROUP_ARC), + 'a3-matx': envOrArray(process.env.DISCORD_NOTIFY_GROUP_A3_MATX), + 3050: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3050), 3060: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3060), '3060ti': envOrArray(process.env.DISCORD_NOTIFY_GROUP_3060TI), 3070: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3070), @@ -237,6 +240,16 @@ const notifications = { 3080: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3080), '3080ti': envOrArray(process.env.DISCORD_NOTIFY_GROUP_3080TI), 3090: envOrArray(process.env.DISCORD_NOTIFY_GROUP_3090), + 4060: envOrArray(process.env.DISCORD_NOTIFY_GROUP_4060), + 4070: envOrArray(process.env.DISCORD_NOTIFY_GROUP_4070), + '4070super': envOrArray(process.env.DISCORD_NOTIFY_GROUP_4070SUPER), + '4070ti': envOrArray(process.env.DISCORD_NOTIFY_GROUP_4070TI), + '4080-16g': envOrArray(process.env.DISCORD_NOTIFY_GROUP_4080_16G), + 4090: envOrArray(process.env.DISCORD_NOTIFY_GROUP_4090), + 5070: envOrArray(process.env.DISCORD_NOTIFY_GROUP_5070), + '5070ti': envOrArray(process.env.DISCORD_NOTIFY_GROUP_5070TI), + 5080: envOrArray(process.env.DISCORD_NOTIFY_GROUP_5080), + 5090: envOrArray(process.env.DISCORD_NOTIFY_GROUP_5090), 'captcha-deterrent': [], darkhero: envOrArray(process.env.DISCORD_NOTIFY_GROUP_DARKHERO), rx6700xt: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RX6700XT), @@ -247,6 +260,13 @@ const notifications = { ryzen5800: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN5800), ryzen5900: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN5900), ryzen5950: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN5950), + ryzen7800x3d: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN7800X3D), + ryzen7950X: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN7950X), + ryzen9800x3d: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN9800X3D), + ryzen9600x: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN9600X), + ryzen9700x: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN9700X), + ryzen9900x: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN9900X), + ryzen9950x: envOrArray(process.env.DISCORD_NOTIFY_GROUP_RYZEN9950X), 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), @@ -372,6 +392,13 @@ const notifications = { id: envOrString(process.env.FREEMOBILE_ID), apiKey: envOrString(process.env.FREEMOBILE_API_KEY), }, + ntfy: { + url: envOrString(process.env.NTFY_URL, 'https://ntfy.sh'), + topic: envOrString(process.env.NTFY_TOPIC), + priority: envOrString(process.env.NTFY_PRIORITY), + title: envOrString(process.env.NTFY_TITLE), + accessToken: envOrString(process.env.NTFY_ACCESS_TOKEN), + }, }; const nvidia = { @@ -383,6 +410,7 @@ const page = { height: 1080, inStockWaitTime: envOrNumber(process.env.IN_STOCK_WAIT_TIME), screenshot: envOrBoolean(process.env.SCREENSHOT), + screenshotDir: envOrString(process.env.SCREENSHOT_DIR, 'screenshots'), timeout: envOrNumber(process.env.PAGE_TIMEOUT, 30000), width: 1920, }; @@ -400,11 +428,24 @@ if (process.env.MAX_PRICE) { ); } +if ( + process.env.TWITCH_ACCESS_TOKEN || + process.env.TWITCH_CHANNEL || + process.env.TWITCH_CLIENT_ID || + process.env.TWITCH_CLIENT_SECRET || + process.env.TWITCH_REFRESH_TOKEN +) { + console.warn( + 'ℹ TWITCH integrations are currently incompatible with this release' + ); +} + const store = { autoAddToCart: envOrBoolean(process.env.AUTO_ADD_TO_CART, true), country: envOrString(process.env.COUNTRY, 'usa'), maxPrice: { series: { + 3050: envOrNumber(process.env.MAX_PRICE_SERIES_3050), 3060: envOrNumber(process.env.MAX_PRICE_SERIES_3060), '3060ti': envOrNumber(process.env.MAX_PRICE_SERIES_3060TI), 3070: envOrNumber(process.env.MAX_PRICE_SERIES_3070), @@ -412,8 +453,23 @@ const store = { 3080: envOrNumber(process.env.MAX_PRICE_SERIES_3080), '3080ti': envOrNumber(process.env.MAX_PRICE_SERIES_3080TI), 3090: envOrNumber(process.env.MAX_PRICE_SERIES_3090), + 4060: envOrNumber(process.env.MAX_PRICE_SERIES_4060), + 4070: envOrNumber(process.env.MAX_PRICE_SERIES_4070), + '4070super': envOrNumber(process.env.MAX_PRICE_SERIES_4070SUPER), + '4070ti': envOrNumber(process.env.MAX_PRICE_SERIES_4070TI), + '4080-16g': envOrNumber(process.env.MAX_PRICE_SERIES_4080_16G), + 4090: envOrNumber(process.env.MAX_PRICE_SERIES_4090), + 5070: envOrNumber(process.env.MAX_PRICE_SERIES_5070), + '5070ti': envOrNumber(process.env.MAX_PRICE_SERIES_5070TI), + 5080: envOrNumber(process.env.MAX_PRICE_SERIES_5080), + 5090: envOrNumber(process.env.MAX_PRICE_SERIES_5090), + arc: envOrNumber(process.env.MAX_PRICE_SERIES_ARC), + 'a3-matx': envOrNumber(process.env.MAX_PRICE_SERIES_A3_MATX), 'captcha-deterrent': 0, darkhero: envOrNumber(process.env.MAX_PRICE_SERIES_DARKHERO), + 'g4-doorbell-pro': envOrNumber( + process.env.MAX_PRICE_SERIES_G4_DOORBELL_PRO + ), rx6700xt: envOrNumber(process.env.MAX_PRICE_SERIES_RX6700XT), rx6800: envOrNumber(process.env.MAX_PRICE_SERIES_RX6800), rx6800xt: envOrNumber(process.env.MAX_PRICE_SERIES_RX6800XT), @@ -422,10 +478,22 @@ const store = { ryzen5800: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5800), ryzen5900: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5900), ryzen5950: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN5950), + ryzen7950x: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN7950X), + ryzen7800x3d: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN7800X3D), + ryzen9800x3d: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN9800X3D), + ryzen9600x: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN9600X), + ryzen9700x: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN9700X), + ryzen9900x: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN9900X), + ryzen9950x: envOrNumber(process.env.MAX_PRICE_SERIES_RYZEN9950X), 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), + 'udm-pro': envOrNumber(process.env.MAX_PRICE_SERIES_UDM_PRO), + 'udm-us': envOrNumber(process.env.MAX_PRICE_SERIES_UDM_US), + 'udr-us': envOrNumber(process.env.MAX_PRICE_SERIES_UDR_US), + unvr: envOrNumber(process.env.MAX_PRICE_SERIES_UNVR), + 'unvr-pro': envOrNumber(process.env.MAX_PRICE_SERIES_UNVR_PRO), xboxss: envOrNumber(process.env.MAX_PRICE_SERIES_XBOXSS), xboxsx: envOrNumber(process.env.MAX_PRICE_SERIES_XBOXSX), }, @@ -439,32 +507,17 @@ const store = { series: envOrString(series), }; }), - showOnlySeries: envOrArray(process.env.SHOW_ONLY_SERIES, [ - '3060', - '3060ti', - '3070', - '3070ti', - '3080', - '3080ti', - '3090', - 'rx6700xt', - 'rx6800', - 'rx6800xt', - 'rx6900xt', - 'ryzen5600', - 'ryzen5800', - 'ryzen5900', - 'ryzen5950', - 'sf', - 'sonyps5c', - 'sonyps5de', - 'xboxss', - 'xboxsx', - ]), + showOnlySeries: envOrArray( + process.env.SHOW_ONLY_SERIES, + Object.keys(notifications.discord.notifyGroupSeries).filter( + series => !['test:series', 'captcha-deterrent'].includes(series) + ) + ), + showOnlyCountry: envOrArray(process.env.SHOW_ONLY_COUNTRY, []), stores: envOrArray(process.env.STORES, ['amazon', 'bestbuy']).map(entry => { const [name, minPageSleep, maxPageSleep] = entry.match(/[^:]+/g) ?? []; - let proxyList = loadProxyList(name); + let proxyList = loadProxyList(name as string); if (!proxyList) { proxyList = loadProxyList('global'); diff --git a/src/index.ts b/src/index.ts index 67154b337b..a140694739 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ import * as Process from 'process'; import {config} from './config'; // Needs to be loaded first import {startAPIServer, stopAPIServer} from './web'; -import {Browser, launch} from 'puppeteer'; +import Puppeteer, {Browser} from 'puppeteer'; import {getSleepTime} from './util'; import {logger} from './logger'; import {storeList} from './store/model'; @@ -107,7 +107,7 @@ export async function launchBrowser(): Promise { } await stop(); - const browser = await launch({ + const browser = await Puppeteer.launch({ args, defaultViewport: { height: config.page.height, diff --git a/src/logger.ts b/src/logger.ts index 15386337a4..2109eeb3ab 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -1,7 +1,7 @@ -import {Link, Store} from './store/model'; import chalk from 'chalk'; -import {config} from './config'; import winston from 'winston'; +import {config} from './config'; +import {Link, Store} from './store/model'; const prettyJson = winston.format.printf(info => { const timestamp = new Date().toLocaleTimeString(); @@ -10,7 +10,7 @@ const prettyJson = winston.format.printf(info => { '::' )} ${info.message}`; - if (Object.keys(info.metadata).length > 0) { + if (Object.keys(info.metadata as object).length > 0) { out = `${out} ${chalk.magenta(JSON.stringify(info.metadata, null, 2))}`; } diff --git a/src/messaging/apns.ts b/src/messaging/apns.ts index 01103fd325..a8c36528ca 100644 --- a/src/messaging/apns.ts +++ b/src/messaging/apns.ts @@ -1,10 +1,11 @@ -import {Link, Store} from '../store/model'; -import {Print, logger} from '../logger'; import * as apn from '@parse/node-apn'; import {config} from '../config'; +import {logger} from '../logger'; +import {Link, Store} from '../store/model'; const {apns} = config.notifications; +// eslint-disable-next-line @typescript-eslint/no-unused-vars export function sendApns(link: Link, store: Store) { const options = { token: { diff --git a/src/messaging/discord.ts b/src/messaging/discord.ts index 0f739be741..bb239c9cf1 100644 --- a/src/messaging/discord.ts +++ b/src/messaging/discord.ts @@ -1,12 +1,14 @@ -import {Link, Store} from '../store/model'; import Discord from 'discord.js'; +import {DMPayload} from '.'; import {config} from '../config'; import {logger} from '../logger'; -import {DMPayload} from '.'; -import {RawUserData} from 'discord.js/typings/rawDataTypes'; +import {Link, Store} from '../store/model'; const {notifyGroup, webhooks, notifyGroupSeries} = config.notifications.discord; const {pollInterval, responseTimeout, token, userId} = config.captchaHandler; +const clientOptions: Discord.ClientOptions = { + intents: new Discord.Intents(), +}; function getIdAndToken(webhook: string) { const match = /.*\/webhooks\/(\d+)\/(.+)/.exec(webhook); @@ -66,13 +68,13 @@ export function sendDiscordMessage(link: Link, store: Store) { const promises = []; for (const webhook of webhooks) { const {id, token} = getIdAndToken(webhook); - const client = new Discord.WebhookClient({id, token}); + const client = new Discord.WebhookClient({id, token}, clientOptions); promises.push( new Promise((resolve, reject) => { client .send({ - content: notifyText.join(' '), + content: notifyText.length ? notifyText.join(' ') : null, embeds: [embed], username: 'streetmerchant', }) @@ -199,7 +201,7 @@ export async function sendDMAndGetResponseAsync( async function getDiscordClientAsync() { let clientInstance = undefined; if (token) { - clientInstance = new Discord.Client({} as Discord.ClientOptions); + clientInstance = new Discord.Client(clientOptions); await clientInstance.login(token); } return clientInstance; @@ -208,9 +210,7 @@ async function getDiscordClientAsync() { async function getDMChannelAsync(client?: Discord.Client) { let dmChannelInstance = undefined; if (userId && client) { - const user = await new Discord.User(client, { - id: userId, - } as RawUserData).fetch(); + const user = await client.users.fetch(userId); dmChannelInstance = await user.createDM(); } return dmChannelInstance; diff --git a/src/messaging/notification.ts b/src/messaging/notification.ts index ac4de7a355..3ecb1f61f2 100644 --- a/src/messaging/notification.ts +++ b/src/messaging/notification.ts @@ -1,29 +1,31 @@ +import {DMPayload} from '.'; import {Link, Store} from '../store/model'; -import {adjustPhilipsHueLights} from './philips-hue'; -import {playSound} from './sound'; import {sendApns} from './apns'; import {sendDesktopNotification} from './desktop'; -import {sendDiscordMessage, sendDMAsync as sendDiscordDM} from './discord'; +import {sendDMAsync as sendDiscordDM, sendDiscordMessage} from './discord'; import {sendEmail} from './email'; +import {sendFreeMobileAlert} from './freemobile'; import {sendGotifyNotification} from './gotify'; import {sendMqttMessage} from './mqtt'; +import {sendNtfyAlert} from './ntfy'; import {sendPagerDutyNotification} from './pagerduty'; +import {adjustPhilipsHueLights} from './philips-hue'; import {sendPushbulletNotification} from './pushbullet'; import {sendPushoverNotification} from './pushover'; -import {sendSlackMessage, sendDMAsync as sendSlackDM} from './slack'; +import {updateRedis} from './redis'; +import {sendDMAsync as sendSlackDM, sendSlackMessage} from './slack'; import {sendSms} from './sms'; +import {playSound} from './sound'; +import {sendStreamLabsAlert} from './streamlabs'; import {sendTelegramMessage} from './telegram'; -import {sendTweet} from './twitter'; import {sendTwilioMessage} from './twilio'; -import {sendTwitchMessage} from './twitch'; -import {updateRedis} from './redis'; -import {sendStreamLabsAlert} from './streamlabs'; -import {sendFreeMobileAlert} from './freemobile'; -import {DMPayload} from '.'; +// import {sendTwitchMessage} from './twitch'; +import {sendTweet} from './twitter'; export function sendNotification(link: Link, store: Store) { // Priority playSound(); + sendNtfyAlert(link, store); sendDiscordMessage(link, store); sendDesktopNotification(link, store); sendEmail(link, store); @@ -40,7 +42,7 @@ export function sendNotification(link: Link, store: Store) { sendTelegramMessage(link, store); sendTweet(link, store); sendTwilioMessage(link, store); - sendTwitchMessage(link, store); + // sendTwitchMessage(link, store); updateRedis(link, store); sendStreamLabsAlert(link, store); sendFreeMobileAlert(link, store); diff --git a/src/messaging/ntfy.ts b/src/messaging/ntfy.ts new file mode 100644 index 0000000000..f10f572741 --- /dev/null +++ b/src/messaging/ntfy.ts @@ -0,0 +1,55 @@ +import {Link, Store} from '../store/model'; +import {Print, logger} from '../logger'; +import {config} from '../config'; +import fetch from 'node-fetch'; + +const {ntfy} = config.notifications; + +export function sendNtfyAlert(link: Link, store: Store) { + if (ntfy.topic) { + logger.debug('↗ sending ntfy alert'); + + (async () => { + const message = `${Print.inStock(link, store)}`; + const headers: Record = {}; + + if (ntfy.priority) headers['Priority'] = ntfy.priority; + headers[ + 'Tags' + ] = `${store.name},${link.model},${link.series},${link.brand}`; + if (ntfy.title) headers['Title'] = ntfy.title; + if (ntfy.accessToken) + headers['Authorization'] = `Bearer ${ntfy.accessToken}`; + + const body = { + topic: ntfy.topic, + message, + actions: [ + { + action: 'view', + label: 'Add to cart', + url: link.cartUrl ?? link.url, + }, + ], + }; + + try { + const response = await fetch(ntfy.url, { + method: 'POST', + body: JSON.stringify(body), + headers: { + ...headers, + 'Content-Type': 'application/json', + }, + }); + + if (!response.ok) + throw new Error(`Failed to send ntfy alert: ${response.statusText}`); + + logger.info('✔ ntfy alert sent'); + } catch (error: unknown) { + logger.error("✖ couldn't send ntfy alert", error); + } + })(); + } +} diff --git a/src/messaging/redis.ts b/src/messaging/redis.ts index b338abfac3..0b36f2d3f3 100644 --- a/src/messaging/redis.ts +++ b/src/messaging/redis.ts @@ -1,7 +1,7 @@ -import {Link, Store} from '../store/model'; import redis, {RedisClient} from 'redis'; import {config} from '../config'; import {logger} from '../logger'; +import {Link, Store} from '../store/model'; const {url} = config.notifications.redis; let client: RedisClient; @@ -29,13 +29,22 @@ export function updateRedis(link: Link, store: Store) { 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})`); - } + const message = JSON.stringify(value); + client.set(key, message, error => { + if (error) { + logger.error(`✖ couldn't update redis for key (${key})`); + } else { + logger.info('✔ redis updated'); + } + }); + + client.publish('streetmerchant', message, error => { + if (error) { + logger.error("✖ couldn't publish to redis"); + } else { + logger.info('✔ redis message published'); + } + }); } } catch (error: unknown) { logger.error("✖ couldn't update redis", error); diff --git a/src/messaging/twitch.ts b/src/messaging/twitch.ts index 27faa963af..b2f80d6783 100644 --- a/src/messaging/twitch.ts +++ b/src/messaging/twitch.ts @@ -1,101 +1,112 @@ -import {Link, Store} from '../store/model'; -import {Print, logger} from '../logger'; -import {RefreshableAuthProvider, StaticAuthProvider} from 'twitch-auth'; -import {existsSync, promises, readFileSync} from 'fs'; -import {ChatClient} from 'twitch-chat-client'; -import {config} from '../config'; +/** + * TODO: Needs to be upgraded to @twurple/auth + @twurple/chat - currently throws the following error if no client params are in + * dotenv and an item is found + * + * var _this = _super.call(this) || this; + TypeError: Class constructor EventEmitter cannot be invoked without 'new' + at ChatClient.IrcClient [as constructor] (/streetmerchant/node_modules/.pnpm/ircv3@0.26.14/node_modules/ircv3/lib/IrcClient.js:24:28) + at new ChatClient (/streetmerchant/node_modules/.pnpm/twitch-chat-client@4.6.7_twitch@4.6.7/node_modules/twitch-chat-client/lib/ChatClient.js:44:28) + at Object. (/streetmerchant/build/src/messaging/twitch.js:23:20) + */ -const {twitch} = config.notifications; +// import {Link, Store} from '../store/model'; +// import {Print, logger} from '../logger'; +// import {RefreshableAuthProvider, StaticAuthProvider} from 'twitch-auth'; +// import {existsSync, promises, readFileSync} from 'fs'; +// import {ChatClient} from 'twitch-chat-client'; +// import {config} from '../config'; -const messages: string[] = []; -let alreadySaying = false; +// const {twitch} = config.notifications; -let tokenData = { - accessToken: twitch.accessToken, - expiryTimestamp: 0, - refreshToken: twitch.refreshToken, -}; +// const messages: string[] = []; +// let alreadySaying = false; -if (existsSync('./twitch.json')) { - tokenData = { - ...JSON.parse(readFileSync('./twitch.json', 'utf-8')), - ...tokenData, - }; -} +// let tokenData = { +// accessToken: twitch.accessToken, +// expiryTimestamp: 0, +// refreshToken: twitch.refreshToken, +// }; -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], - } -); +// if (existsSync('./twitch.json')) { +// tokenData = { +// ...JSON.parse(readFileSync('./twitch.json', 'utf-8')), +// ...tokenData, +// }; +// } -chatClient.onJoin((channel: string, user: string) => { - if (channel === `#${twitch.channel}` && user === chatClient.currentNick) { - while (messages.length) { - const message: string | undefined = messages.shift(); +// 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], +// } +// ); - 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); - } - } - } - } +// chatClient.onJoin((channel: string, user: string) => { +// if (channel === `#${twitch.channel}` && user === chatClient.currentNick) { +// while (messages.length) { +// const message: string | undefined = messages.shift(); - void chatClient.quit(); -}); +// 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); +// } +// } +// } +// } -chatClient.onDisconnect(() => { - alreadySaying = false; -}); +// void chatClient.quit(); +// }); -export function sendTwitchMessage(link: Link, store: Store) { - if ( - tokenData.accessToken && - twitch.channel && - twitch.clientId && - twitch.clientSecret && - tokenData.refreshToken - ) { - logger.debug('↗ sending twitch message'); +// chatClient.onDisconnect(() => { +// alreadySaying = false; +// }); - messages.push( - `${Print.inStock(link, store)}\n${link.cartUrl ? link.cartUrl : link.url}` - ); +// export function sendTwitchMessage(link: Link, store: Store) { +// if ( +// tokenData.accessToken && +// twitch.channel && +// twitch.clientId && +// twitch.clientSecret && +// tokenData.refreshToken +// ) { +// logger.debug('↗ sending twitch message'); - if (!alreadySaying) { - alreadySaying = true; - void chatClient.connect(); - } - } -} +// messages.push( +// `${Print.inStock(link, store)}\n${link.cartUrl ? link.cartUrl : link.url}` +// ); + +// if (!alreadySaying) { +// alreadySaying = true; +// void chatClient.connect(); +// } +// } +// } diff --git a/src/store/captcha-handler.ts b/src/store/captcha-handler.ts index 5936bc82b9..2a256ac8d0 100644 --- a/src/store/captcha-handler.ts +++ b/src/store/captcha-handler.ts @@ -1,14 +1,14 @@ import {Page} from 'puppeteer'; import {config} from '../config'; -import {Store} from './model'; import {logger} from '../logger'; -import {delay, deleteFile} from '../util'; import { + CaptchaPayload, + DMPayload, getCaptchaInputAsync, sendDMAsync, - DMPayload, - CaptchaPayload, } from '../messaging'; +import {delay, deleteFile} from '../util'; +import {Store} from './model'; const DefaultCaptureType = 'link'; @@ -88,7 +88,10 @@ async function getCaptchaPayloadAsync( break; case 'link': captchaPayload = { - content: await challengeElement?.evaluate(img => img.src), + content: + (await challengeElement?.evaluate( + img => (img as HTMLImageElement).src + )) || '', type: 'text', }; break; diff --git a/src/store/fetch-links.ts b/src/store/fetch-links.ts index 76fbd2752c..b41aac59bc 100644 --- a/src/store/fetch-links.ts +++ b/src/store/fetch-links.ts @@ -16,11 +16,12 @@ function addNewLinks(store: Store, links: Link[], series: Series) { const newLinks = links.filter(link => !existingUrls.has(link.url)); if (newLinks.length === 0) { + logger.debug(Print.message('NO NEW LINKS FOUND', series, store, true)); return; } logger.debug( - Print.message(`FOUND ${newLinks.length} STORE LINKS`, series, store, true) + Print.message(`FOUND ${newLinks.length} NEW LINKS`, series, store, true) ); logger.debug(JSON.stringify(newLinks, null, 2)); diff --git a/src/store/lookup.ts b/src/store/lookup.ts index c2a5f691e1..1c40cc613e 100644 --- a/src/store/lookup.ts +++ b/src/store/lookup.ts @@ -26,6 +26,8 @@ import {processBackoffDelay} from './model/helpers/backoff'; import {sendNotification} from '../messaging'; import {handleCaptchaAsync} from './captcha-handler'; import useProxy from '@doridian/puppeteer-page-proxy'; +import {promises as fs} from 'fs'; +import path from 'path'; const inStock: Record = {}; @@ -343,7 +345,11 @@ async function lookupIem( if (config.page.screenshot) { logger.debug('ℹ saving screenshot'); - link.screenshot = `success-${Date.now()}.png`; + await fs.mkdir(config.page.screenshotDir, {recursive: true}); + link.screenshot = path.join( + config.page.screenshotDir, + `success-${Date.now()}.png` + ); await page.screenshot({path: link.screenshot}); } } @@ -560,11 +566,11 @@ async function runCaptchaDeterrent(browser: Browser, store: Store, page: Page) { export async function tryLookupAndLoop(browser: Browser, store: Store) { if (!browser.isConnected()) { - logger.debug(`[${store.name}] Ending this loop as browser is disposed...`); + logger.silly(`[${store.name}] Ending this loop as browser is disposed...`); return; } - logger.debug(`[${store.name}] Starting lookup...`); + logger.silly(`[${store.name}] Starting lookup...`); try { await lookup(browser, store); } catch (error: unknown) { @@ -572,6 +578,6 @@ export async function tryLookupAndLoop(browser: Browser, store: Store) { } const sleepTime = getSleepTime(store); - logger.debug(`[${store.name}] Lookup done, next one in ${sleepTime} ms`); + logger.silly(`[${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 fbe253e0e1..1924f57d44 100644 --- a/src/store/model/acompc.ts +++ b/src/store/model/acompc.ts @@ -175,6 +175,114 @@ export const AComPC: Store = { 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: 'asrock', + model: 'challenger', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/ASRock-Radeon-RX-6700-XT-Challenger-D-12GB-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-x16-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'asrock', + model: 'challenger oc', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/ASRock-Radeon-RX-6700-XT-Challenger-D-12GB-OC-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-x16-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'asrock', + model: 'challenger pro oc', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/ASRock-Radeon-RX-6700-XT-Challenger-Pro-12GB-OC-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-x16-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'asus', + model: 'dual', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/ASUS-DUAL-RX6700XT-12G-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-HDMI-3x-DisplayPort.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/ASUS-TUF-RX6700XT-O12G-GAMING-OC-Edition-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/ASUS-ROG-STRIX-RX6700XT-O12G-GAMING-OC-Edition-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'gigabyte', + model: 'aorus elite', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/Gigabyte-AORUS-Radeon-RX-6700-XT-ELITE-12G-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-x16-2-x-HDMI-2-x-DisplayPort.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/Gigabyte-Radeon-RX-6700-XT-EAGLE-12G-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-x16-2x-HDMI-2x-DisplayPort.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/Gigabyte-Radeon-RX-6700-XT-GAMING-OC-12G-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-x16-2x-HDMI-2x-DisplayPort.html', + }, + { + brand: 'msi', + model: 'gaming x', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/MSI-Radeon-RX-6700-XT-GAMING-X-12G-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'msi', + model: 'mech 2x oc', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/MSI-Radeon-RX-6700-XT-MECH-2X-12G-OC-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'powercolor', + model: 'red devil', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/PowerColor-Red-Devil-Radeon-RX-6700XT-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-x16-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'powercolor', + model: 'hellhound', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/PowerColor-Hellhound-Radeon-RX-6700XT-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-x16-HDMI-3-x-DisplayPort.html', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/Sapphire-NITRO-Radeon-RX-6700-XT-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-HDMI-3x-DisplayPort.html', + }, + { + brand: 'sapphire', + model: 'pulse', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/Sapphire-Pulse-Radeon-RX-6700-XT-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-HDMI-3x-DisplayPort.html', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/XFX-Speedster-MERC319-Radeon-RX-6700-XT-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-x16-HDMI-3-x-DisplayPort-Schwarz.html', + }, + { + brand: 'xfx', + model: 'qick', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/XFX-Speedster-QICK319-Radeon-RX-6700-XT-Grafikkarten-Radeon-RX-6700-XT-12-GB-GDDR6-PCIe-4.0-x16-HDMI-3-x-DisplayPort-Schwarz.html', + }, + { + brand: 'xfx', + model: 'swft', + series: 'rx6700xt', + url: 'https://www.acom-pc.de/Hardware-Software/Grafikkarten-Zubehoer/Grafikkarten-AMD/ATI-PCI-Express/XFX-VGA-12GB-Radeon-RX6700XT-SWFT-309-Gaming-3xDP-H-Radeon-RX-6700XT-Grafikkarte-12.288-MB.html', + }, { brand: 'amd', model: '5600x', @@ -201,4 +309,5 @@ export const AComPC: Store = { }, ], name: 'acompc', + country: 'DE', }; diff --git a/src/store/model/adorama.ts b/src/store/model/adorama.ts index 4888e929ea..8d1e33f3c7 100644 --- a/src/store/model/adorama.ts +++ b/src/store/model/adorama.ts @@ -127,4 +127,5 @@ export const Adorama: Store = { }, ], name: 'adorama', + country: 'US', }; diff --git a/src/store/model/akinformatica.ts b/src/store/model/akinformatica.ts index 917fa280e1..0a7b597e49 100644 --- a/src/store/model/akinformatica.ts +++ b/src/store/model/akinformatica.ts @@ -283,5 +283,6 @@ export const Akinformatica: Store = { }, ], name: 'akinformatica', + country: 'IT', successStatusCodes: [[0, 399], 404], }; diff --git a/src/store/model/allneeds.ts b/src/store/model/allneeds.ts index 216544f9ba..69278ff913 100644 --- a/src/store/model/allneeds.ts +++ b/src/store/model/allneeds.ts @@ -56,4 +56,5 @@ export const Allneeds: Store = { }, ], name: 'allneeds', + country: 'AU', }; diff --git a/src/store/model/alternate-de.ts b/src/store/model/alternate-de.ts index bfc15310e6..7799e39e12 100644 --- a/src/store/model/alternate-de.ts +++ b/src/store/model/alternate-de.ts @@ -141,6 +141,18 @@ export const AlternateDe: Store = { series: '3060', url: 'https://www.alternate.de/html/product/1715299', }, + { + brand: 'msi', + model: 'gaming z trio', + series: '3060', + url: 'https://www.alternate.de/html/product/1753367', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060', + url: 'https://www.alternate.de/html/product/1719422', + }, { brand: 'asus', model: 'tuf oc', @@ -237,6 +249,72 @@ export const AlternateDe: Store = { series: '3060ti', url: 'https://www.alternate.de/html/product/1694335', }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3060ti', + url: 'https://www.alternate.de/html/product/1758204', + }, + { + brand: 'gigabyte', + model: 'aorus elite', + series: '3060ti', + url: 'https://www.alternate.de/html/product/1769551', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060ti', + url: 'https://www.alternate.de/html/product/1758690', + }, + { + brand: 'asus', + model: 'dual mini oc', + series: '3060ti', + url: 'https://www.alternate.de/html/product/1758702', + }, + { + brand: 'msi', + model: 'gaming x', + series: '3060ti', + url: 'https://www.alternate.de/html/product/1758136', + }, + { + brand: 'msi', + model: 'gaming z trio', + series: '3060ti', + url: 'https://www.alternate.de/html/product/1758139', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3060ti', + url: 'https://www.alternate.de/html/product/1758141', + }, + { + brand: 'palit', + model: 'dual', + series: '3060ti', + url: 'https://www.alternate.de/html/product/1780517', + }, + { + brand: 'gigabyte', + model: 'gaming pro oc', + series: '3060ti', + url: 'https://www.alternate.de/html/product/1762625', + }, + { + brand: 'inno3d', + model: 'twin x2 oc', + series: '3060ti', + url: 'https://www.alternate.de/html/product/1753819', + }, + { + brand: 'asus', + model: 'dual mini', + series: '3060ti', + url: 'https://www.alternate.de/html/product/1758703', + }, { brand: 'asus', model: 'dual oc', @@ -249,24 +327,12 @@ export const AlternateDe: Store = { series: '3070', url: 'https://www.alternate.de/html/product/1677327', }, - { - brand: 'asus', - model: 'strix oc', - series: '3070', - url: 'https://www.alternate.de/html/product/1677330', - }, { brand: 'asus', model: 'tuf', series: '3070', url: 'https://www.alternate.de/html/product/1679872', }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3070', - url: 'https://www.alternate.de/html/product/1687863', - }, { brand: 'evga', model: 'xc3 ultra', @@ -301,7 +367,7 @@ export const AlternateDe: Store = { brand: 'gigabyte', model: 'aorus master', series: '3070', - url: 'https://www.alternate.de/html/product/1688810', + url: 'https://www.alternate.de/html/product/1768036', }, { brand: 'gigabyte', @@ -319,7 +385,7 @@ export const AlternateDe: Store = { brand: 'inno3d', model: 'ichill x4', series: '3070', - url: 'https://www.alternate.de/html/product/1681759', + url: 'https://www.alternate.de/html/product/1753794', }, { brand: 'inno3d', @@ -333,11 +399,77 @@ export const AlternateDe: Store = { series: '3070', url: 'https://www.alternate.de/html/product/1681768', }, + { + brand: 'msi', + model: 'gaming z trio', + series: '3070', + url: 'https://www.alternate.de/html/product/1758122', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070', + url: 'https://www.alternate.de/html/product/1765420', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3070', + url: 'https://www.alternate.de/html/product/1758120', + }, + { + brand: 'evga', + model: 'ftw3 ultra', + series: '3070', + url: 'https://www.alternate.de/html/product/1756007', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: 'https://www.alternate.de/html/product/1758701', + }, + { + brand: 'gainward', + model: 'phantom', + series: '3070', + url: 'https://www.alternate.de/html/product/1780254', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.alternate.de/html/product/1758134', + }, + { + brand: 'gainward', + model: 'phantom gs', + series: '3070', + url: 'https://www.alternate.de/html/product/1780260', + }, + { + brand: 'zotac', + model: 'twin edge oc', + series: '3070', + url: 'https://www.alternate.de/html/product/1758192', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: 'https://www.alternate.de/html/product/1758698', + }, + { + brand: 'zotac', + model: 'amp holo', + series: '3070', + url: 'https://www.alternate.de/html/product/1758184', + }, { brand: 'palit', model: 'gaming pro', series: '3070', - url: 'https://www.alternate.de/html/product/1684572', + url: 'https://www.alternate.de/html/product/1780508', }, { brand: 'palit', @@ -369,6 +501,60 @@ export const AlternateDe: Store = { series: '3070', url: 'https://www.alternate.de/html/product/1679097', }, + { + brand: 'gainward', + model: 'phoenix', + series: '3070', + url: 'https://www.alternate.de/html/product/1771999', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070ti', + url: 'https://www.alternate.de/html/product/1756986', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3070ti', + url: 'https://www.alternate.de/html/product/1755059', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3070ti', + url: 'https://www.alternate.de/html/product/1770275', + }, + { + brand: 'palit', + model: 'gaming pro', + series: '3070ti', + url: 'https://www.alternate.de/html/product/1755057', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070ti', + url: 'https://www.alternate.de/html/product/1753410', + }, + { + brand: 'asus', + model: 'tuf', + series: '3070ti', + url: 'https://www.alternate.de/html/product/1756984', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3070ti', + url: 'https://www.alternate.de/html/product/1756202', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3070ti', + url: 'https://www.alternate.de/html/product/1759465', + }, { brand: 'asus', model: 'strix', @@ -385,7 +571,7 @@ export const AlternateDe: Store = { brand: 'asus', model: 'strix oc', series: '3080', - url: 'https://www.alternate.de/html/product/1672867', + url: 'https://www.alternate.de/html/product/1766848', }, { brand: 'asus', @@ -561,23 +747,59 @@ export const AlternateDe: Store = { series: '3080', url: 'https://www.alternate.de/html/product/1677982', }, + { + brand: 'zotac', + model: 'trinity oc', + series: '3080', + url: 'https://www.alternate.de/html/product/1677989', + }, + { + brand: 'zotac', + model: 'trinity', + series: '3080', + url: 'https://www.alternate.de/html/product/1672612', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: 'https://www.alternate.de/html/product/1758116', + }, + { + brand: 'gainward', + model: 'phantom', + series: '3080', + url: 'https://www.alternate.de/html/product/1780243', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3080', + url: 'https://www.alternate.de/html/product/1780244', + }, + { + brand: 'msi', + model: 'gaming z trio', + series: '3080', + url: 'https://www.alternate.de/html/product/1758119', + }, { brand: 'zotac', model: 'amp holo', series: '3080', - url: 'https://www.alternate.de/html/product/1677985', + url: 'https://www.alternate.de/html/product/1758181', }, { brand: 'zotac', model: 'trinity oc', series: '3080', - url: 'https://www.alternate.de/html/product/1677989', + url: 'https://www.alternate.de/html/product/1758185', }, { - brand: 'zotac', - model: 'trinity', + brand: 'gigabyte', + model: 'aorus master', series: '3080', - url: 'https://www.alternate.de/html/product/1672612', + url: 'https://www.alternate.de/html/product/1765406', }, { brand: 'asus', @@ -597,6 +819,12 @@ export const AlternateDe: Store = { series: '3090', url: 'https://www.alternate.de/html/product/1701891', }, + { + brand: 'asus', + model: 'strix white', + series: '3090', + url: 'https://www.alternate.de/html/product/1701894', + }, { brand: 'asus', model: 'tuf', @@ -651,6 +879,12 @@ export const AlternateDe: Store = { series: '3090', url: 'https://www.alternate.de/html/product/1688769', }, + { + brand: 'gainward', + model: 'phantom', + series: '3090', + url: 'https://www.alternate.de/html/product/1780227', + }, { brand: 'gainward', model: 'phantom gs', @@ -819,6 +1053,18 @@ export const AlternateDe: Store = { series: 'ryzen5950', url: 'https://www.alternate.de/html/product/1685584', }, + { + brand: 'asrock', + model: 'challenger', + series: 'rx6700xt', + url: 'https://www.alternate.de/html/product/1757933', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6700xt', + url: 'https://www.alternate.de/html/product/1730305', + }, { brand: 'gigabyte', model: 'gaming oc', @@ -1007,4 +1253,5 @@ export const AlternateDe: Store = { }, ], name: 'alternate-de', + country: 'DE', }; diff --git a/src/store/model/alternate-fr.ts b/src/store/model/alternate-fr.ts index f3c0530a5e..4a8438e248 100644 --- a/src/store/model/alternate-fr.ts +++ b/src/store/model/alternate-fr.ts @@ -205,4 +205,5 @@ export const AlternateFr: Store = { }, ], name: 'alternate-fr', + country: 'FR', }; diff --git a/src/store/model/alternate-nl.ts b/src/store/model/alternate-nl.ts index dc264e99c7..4b48c16d75 100644 --- a/src/store/model/alternate-nl.ts +++ b/src/store/model/alternate-nl.ts @@ -169,4 +169,5 @@ export const AlternateNL: Store = { }, ], name: 'alternate-nl', + country: 'NL', }; diff --git a/src/store/model/amazon-ca.ts b/src/store/model/amazon-ca.ts index ed8d358c31..6331e08a4c 100644 --- a/src/store/model/amazon-ca.ts +++ b/src/store/model/amazon-ca.ts @@ -311,4 +311,5 @@ export const AmazonCa: Store = { }, ], name: 'amazon-ca', + country: 'CA', }; diff --git a/src/store/model/amazon-de-warehouse.ts b/src/store/model/amazon-de-warehouse.ts index 6e4bc74b10..814353706c 100644 --- a/src/store/model/amazon-de-warehouse.ts +++ b/src/store/model/amazon-de-warehouse.ts @@ -66,4 +66,5 @@ export const AmazonDeWarehouse: Store = { }, ], name: 'amazon-de-warehouse', + country: 'DE', }; diff --git a/src/store/model/amazon-de.ts b/src/store/model/amazon-de.ts index 2e38ea3007..9b19bb8bfc 100644 --- a/src/store/model/amazon-de.ts +++ b/src/store/model/amazon-de.ts @@ -21,7 +21,7 @@ export const AmazonDe: Store = { text: ['in den einkaufswagen'], }, maxPrice: { - container: '#priceblock_ourprice', + container: '.a-text-price', euroFormat: true, }, outOfStock: [ @@ -480,6 +480,222 @@ export const AmazonDe: Store = { series: '3070', url: 'https://www.amazon.de/dp/B08HBJB7YD', }, + { + brand: 'asrock', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B0977DG15L&Quantity.1=1', + model: 'challenger oc', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B0977DG15L', + }, + { + brand: 'asrock', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B093Z4BHJH&Quantity.1=1', + model: 'challenger', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B093Z4BHJH', + }, + { + brand: 'asrock', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08ZDT3Q8H&Quantity.1=1', + model: 'challenger pro oc', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08ZDT3Q8H', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08CS6Z8R9&Quantity.1=1', + model: 'dual', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08CS6Z8R9', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08YWRFSQB&Quantity.1=1', + model: 'dual', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08YWRFSQB/', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08BZP24CH&Quantity.1=1', + model: 'tuf oc', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08BZP24CH', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08YX8D8ST&Quantity.1=1', + model: 'tuf oc', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08YX8D8ST/', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08BZPX64M&Quantity.1=1', + model: 'strix', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08BZPX64M/', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08Y74T47X&Quantity.1=1', + model: 'aorus elite', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08Y74T47X/', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08Y758F6C&Quantity.1=1', + model: 'eagle', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08Y758F6C/', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08Y746XN7&Quantity.1=1', + model: 'gaming oc', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08Y746XN7/', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08Z72P3R9&Quantity.1=1', + model: 'gaming x', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08Z72P3R9/', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B09318LCPP&Quantity.1=1', + model: 'gaming x', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B09318LCPP/', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08Z84S3K6&Quantity.1=1', + model: 'mech 2x', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08Z84S3K6', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08Z8LHVR1&Quantity.1=1', + model: 'mech 2x oc', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08Z8LHVR1/', + }, + { + brand: 'powercolor', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08Y93KQR4&Quantity.1=1', + model: 'hellhound', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08Y93KQR4/', + }, + { + brand: 'powercolor', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B094MM9X6S&Quantity.1=1', + model: 'hellhound white', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B094MM9X6S/', + }, + { + brand: 'powercolor', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08Y934HZQ&Quantity.1=1', + model: 'red devil', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08Y934HZQ/', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08Y7K29X9&Quantity.1=1', + model: 'amd reference', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08Y7K29X9/', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08Y835PXB&Quantity.1=1', + model: 'nitro+ oc', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08Y835PXB/', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B094593LB8&Quantity.1=1', + model: 'nitro+ oc', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B094593LB8/', + }, + { + brand: 'sapphire', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08Y7ZYNDN&Quantity.1=1', + model: 'nitro+ oc', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08Y7ZYNDN/', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08YKCRB74&Quantity.1=1', + model: 'amd reference', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08YKCRB74/', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08YK97LKC&Quantity.1=1', + model: 'merc', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08YK97LKC/', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B091ZKN2RV&Quantity.1=1', + model: 'qick', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B091ZKN2RV/', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08YKFS27X&Quantity.1=1', + model: 'qick ultra', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08YKFS27X/', + }, + { + brand: 'xfx', + cartUrl: + 'https://www.amazon.de/gp/aws/cart/add.html?ASIN.1=B08YKCC8XD&Quantity.1=1', + model: 'swft', + series: 'rx6700xt', + url: 'https://www.amazon.de/dp/B08YKCC8XD/', + }, { brand: 'amd', cartUrl: @@ -570,4 +786,5 @@ export const AmazonDe: Store = { }, ], name: 'amazon-de', + country: 'DE', }; diff --git a/src/store/model/amazon-es.ts b/src/store/model/amazon-es.ts index de6e464183..1f310b95fe 100644 --- a/src/store/model/amazon-es.ts +++ b/src/store/model/amazon-es.ts @@ -18,7 +18,7 @@ export const AmazonEs: Store = { text: ['añadir a la cesta'], }, maxPrice: { - container: '#price', + container: '.a-text-price', euroFormat: true, }, outOfStock: [ @@ -527,4 +527,5 @@ export const AmazonEs: Store = { }, ], name: 'amazon-es', + country: 'ES', }; diff --git a/src/store/model/amazon-fr.ts b/src/store/model/amazon-fr.ts index 0522cafcf1..670f185db3 100644 --- a/src/store/model/amazon-fr.ts +++ b/src/store/model/amazon-fr.ts @@ -18,7 +18,7 @@ export const AmazonFr: Store = { text: ['ajouter au panier'], }, maxPrice: { - container: '#priceblock_ourprice', + container: '.a-text-price', euroFormat: true, }, outOfStock: [ @@ -193,4 +193,5 @@ export const AmazonFr: Store = { }, ], name: 'amazon-fr', + country: 'FR', }; diff --git a/src/store/model/amazon-it.ts b/src/store/model/amazon-it.ts index 54fe90cb9b..1b8d3348d8 100644 --- a/src/store/model/amazon-it.ts +++ b/src/store/model/amazon-it.ts @@ -18,7 +18,7 @@ export const AmazonIt: Store = { text: ['Aggiungi al carrello'], }, maxPrice: { - container: '#priceblock_ourprice', + container: '.a-text-price', euroFormat: true, }, }, @@ -417,4 +417,5 @@ export const AmazonIt: Store = { }, ], name: 'amazon-it', + country: 'IT', }; diff --git a/src/store/model/amazon-nl.ts b/src/store/model/amazon-nl.ts index ad9c7b935a..b90d3e3e51 100644 --- a/src/store/model/amazon-nl.ts +++ b/src/store/model/amazon-nl.ts @@ -23,7 +23,7 @@ export const AmazonNl: Store = { }, ], maxPrice: { - container: '#priceblock_ourprice', + container: '.a-text-price', euroFormat: true, }, outOfStock: [ @@ -240,4 +240,5 @@ export const AmazonNl: Store = { }, ], name: 'amazon-nl', + country: 'NL', }; diff --git a/src/store/model/amazon-sg.ts b/src/store/model/amazon-sg.ts index faddfa200b..aba3aca940 100644 --- a/src/store/model/amazon-sg.ts +++ b/src/store/model/amazon-sg.ts @@ -24,7 +24,7 @@ export const AmazonSg: Store = { }, ], maxPrice: { - container: '#priceblock_ourprice', + container: '.a-text-price', }, }, links: [ @@ -762,4 +762,5 @@ export const AmazonSg: Store = { }, ], name: 'amazon-sg', + country: 'SG', }; diff --git a/src/store/model/amazon-uk.ts b/src/store/model/amazon-uk.ts index ae8bb66f39..94dd123cc2 100644 --- a/src/store/model/amazon-uk.ts +++ b/src/store/model/amazon-uk.ts @@ -18,7 +18,7 @@ export const AmazonUk: Store = { text: ['in stock'], }, maxPrice: { - container: '#priceblock_ourprice', + container: '.a-text-price', }, outOfStock: [ { @@ -714,4 +714,5 @@ export const AmazonUk: Store = { }, ], name: 'amazon-uk', + country: 'UK', }; diff --git a/src/store/model/amazon.ts b/src/store/model/amazon.ts index 9f6de57594..3b5f166871 100644 --- a/src/store/model/amazon.ts +++ b/src/store/model/amazon.ts @@ -33,7 +33,7 @@ export const Amazon: Store = { }, ], maxPrice: { - container: '#priceblock_ourprice', + container: '.a-offscreen', }, }, links: [ @@ -779,6 +779,223 @@ export const Amazon: Store = { series: 'sf', url: 'https://www.amazon.com/dp/B07F84FJ1G', }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BGJRHX1X&Quantity.1=1', + model: 'trinity oc', + series: '4090', + url: 'https://www.amazon.com/dp/B0BGJRHX1X', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B09D1VF7F8&Quantity.1=1', + model: 'amp extreme airo', + series: '4090', + url: 'https://www.amazon.com/dp/B09D1VF7F8', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BGJQBW6Z&Quantity.1=1', + model: 'trinity', + series: '4090', + url: 'https://www.amazon.com/dp/B0BGJQBW6Z', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BGT61797&Quantity.1=1', + model: 'strix oc', + series: '4090', + url: 'https://www.amazon.com/dp/B0BGT61797', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BGV6LQYR&Quantity.1=1', + model: 'tuf oc', + series: '4090', + url: 'https://www.amazon.com/dp/B0BGV6LQYR', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BGP87RQ2&Quantity.1=1', + model: 'aorus master', + series: '4090', + url: 'https://www.amazon.com/dp/B0BGP87RQ2', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BGP8FGNZ&Quantity.1=1', + model: 'gaming oc', + series: '4090', + url: 'https://www.amazon.com/dp/B0BGP8FGNZ', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BGP9X18Q&Quantity.1=1', + model: 'windforce', + series: '4090', + url: 'https://www.amazon.com/dp/B0BGP9X18Q', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BG93V9GW&Quantity.1=1', + model: 'xlr8 verto epic x', + series: '4090', + url: 'https://www.amazon.com/dp/B0BG93V9GW', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BG94BM2G&Quantity.1=1', + model: 'suprim liquid x', + series: '4090', + url: 'https://www.amazon.com/dp/B0BG94BM2G', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BG92GY61&Quantity.1=1', + model: 'suprim', + series: '4090', + url: 'https://www.amazon.com/dp/B0BG92GY61', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BG94PS2F&Quantity.1=1', + model: 'gaming x trio', + series: '4090', + url: 'https://www.amazon.com/dp/B0BG94PS2F', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BG959RCF&Quantity.1=1', + model: 'gaming trio', + series: '4090', + url: 'https://www.amazon.com/dp/B0BG959RCF', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BKK1G181&Quantity.1=1', + model: 'trinity', + series: '4080-16g', + url: 'https://www.amazon.com/dp/B0BKK1G181', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BKK371SB&Quantity.1=1', + model: 'trinity oc', + series: '4080-16g', + url: 'https://www.amazon.com/dp/B0BKK371SB', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BLGHRCLX&Quantity.1=1', + model: 'tuf', + series: '4080-16g', + url: 'https://www.amazon.com/dp/B0BLGHRCLX', + }, + { + brand: 'asus', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BLGQHS53&Quantity.1=1', + model: 'tuf oc', + series: '4080-16g', + url: 'https://www.amazon.com/dp/B0BLGQHS53', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BL61TNG1&Quantity.1=1', + model: 'ventus 3x', + series: '4080-16g', + url: 'https://www.amazon.com/dp/B0BL61TNG1', + }, + { + brand: 'zotac', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BKK3RFT6&Quantity.1=1', + model: 'amp airo', + series: '4080-16g', + url: 'https://www.amazon.com/dp/B0BKK3RFT6', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BMNBJ1DF&Quantity.1=1', + model: 'eagle oc', + series: '4080-16g', + url: 'https://www.amazon.com/dp/B0BMNBJ1DF', + }, + { + brand: 'msi', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BL668N1X&Quantity.1=1', + model: 'gaming x trio', + series: '4080-16g', + url: 'https://www.amazon.com/dp/B0BL668N1X', + }, + { + brand: 'pny', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0BG95T5WD&Quantity.1=1', + model: 'xlr8 verto epic x', + series: '4080-16g', + url: 'https://www.amazon.com/dp/B0BG95T5WD', + }, + { + brand: 'lianli', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0DFS88R2L&Quantity.1=1', + model: 'a3 matx wd', + series: 'a3-matx', + url: 'https://www.amazon.com/dp/B0DFS88R2L', + }, + { + brand: 'sparkle', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0DNMH4KQM&Quantity.1=1', + model: 'b580', + series: 'arc', + url: 'https://www.amazon.com/dp/B0DNMH4KQM', + }, + { + brand: 'intel', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=B0DPM9923G&Quantity.1=1', + model: 'b580', + series: 'arc', + url: 'https://www.amazon.com/dp/B0DPM9923G', + }, ], name: 'amazon', + country: 'US', }; + +/* Copy Paste Template + +Copy the product id from the amazon URL. +For example if you have https://www.amazon.com/gp/product/B08M9R8HQY just copy B08M9R8HQY. +Paste it after ASIN.1= in the cartUrl and at the end of /dp/ in the url. + +{ + brand: '', + cartUrl: + 'https://www.amazon.com/gp/aws/cart/add.html?ASIN.1=&Quantity.1=1', + model: '', + series: '', + url: 'https://www.amazon.com/dp/', +}, +*/ diff --git a/src/store/model/amd-at.ts b/src/store/model/amd-at.ts index f8bfaf944b..0417c40ecf 100644 --- a/src/store/model/amd-at.ts +++ b/src/store/model/amd-at.ts @@ -97,4 +97,5 @@ export const AmdAt: Store = { }, ], name: 'amd-at', + country: 'AT', }; diff --git a/src/store/model/amd-be.ts b/src/store/model/amd-be.ts index 7dec61e472..b356b3d7e6 100644 --- a/src/store/model/amd-be.ts +++ b/src/store/model/amd-be.ts @@ -97,4 +97,5 @@ export const AmdBe: Store = { }, ], name: 'amd-be', + country: 'BE', }; diff --git a/src/store/model/amd-ca.ts b/src/store/model/amd-ca.ts index f2fcfb6710..4bfeaa1bfa 100644 --- a/src/store/model/amd-ca.ts +++ b/src/store/model/amd-ca.ts @@ -53,4 +53,5 @@ export const AmdCa: Store = { }, ], name: 'amd-ca', + country: 'CA', }; diff --git a/src/store/model/amd-de.ts b/src/store/model/amd-de.ts index db0b2f4528..230b4ec78d 100644 --- a/src/store/model/amd-de.ts +++ b/src/store/model/amd-de.ts @@ -55,6 +55,14 @@ export const AmdDe: Store = { series: 'ryzen5600', url: 'https://www.amd.com/de/direct-buy/5450881700/de', }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/de/direct-buy/5496921400/de?add-to-cart=true', + model: 'amd reference', + series: 'rx6700xt', + url: 'https://www.amd.com/de/direct-buy/5496921400/de', + }, { brand: 'amd', cartUrl: @@ -89,4 +97,5 @@ export const AmdDe: Store = { }, ], name: 'amd-de', + country: 'DE', }; diff --git a/src/store/model/amd-it.ts b/src/store/model/amd-it.ts index 150767dff8..9e0bd15b1b 100644 --- a/src/store/model/amd-it.ts +++ b/src/store/model/amd-it.ts @@ -69,4 +69,5 @@ export const AmdIt: Store = { }, ], name: 'amd-it', + country: 'IT', }; diff --git a/src/store/model/amd-nl.ts b/src/store/model/amd-nl.ts index 0ff09a2006..d1d1f68a5b 100644 --- a/src/store/model/amd-nl.ts +++ b/src/store/model/amd-nl.ts @@ -81,4 +81,5 @@ export const AmdNl: Store = { }, ], name: 'amd-nl', + country: 'NL', }; diff --git a/src/store/model/amd-uk.ts b/src/store/model/amd-uk.ts index fa19119ffa..0f9a86ae8c 100644 --- a/src/store/model/amd-uk.ts +++ b/src/store/model/amd-uk.ts @@ -101,4 +101,5 @@ export const AmdUk: Store = { }, ], name: 'amd-uk', + country: 'UK', }; diff --git a/src/store/model/amd.ts b/src/store/model/amd.ts index a9120a81a9..3e5178f8d2 100644 --- a/src/store/model/amd.ts +++ b/src/store/model/amd.ts @@ -54,10 +54,10 @@ export const Amd: Store = { { brand: 'amd', cartUrl: - 'https://www.amd.com/en/direct-buy/5458374200/us?add-to-cart=true', + '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/5458374200/us', + url: 'https://www.amd.com/en/direct-buy/5458372200/us', }, { brand: 'amd', @@ -83,6 +83,64 @@ export const Amd: Store = { series: 'rx6800xt', url: 'https://www.amd.com/en/direct-buy/5496921500/us', }, + { + brand: 'amd', + cartUrl: + 'https://www.amd.com/en/direct-buy/5496921400/us?add-to-cart=true', + model: 'amd reference', + series: 'rx6700xt', + url: 'https://www.amd.com/en/direct-buy/5496921400/us', + }, + { + brand: 'amd', + model: '9800x3d', + series: 'ryzen9800x3d', + url: 'https://shop-us-en.amd.com/amd-ryzen-7-9800x3d-processor/', + }, + { + brand: 'amd', + model: '9950x', + series: 'ryzen9950x', + url: 'https://shop-us-en.amd.com/amd-ryzen-9-9950x-processor/', + }, + { + brand: 'amd', + model: '9900x', + series: 'ryzen9900x', + url: 'https://shop-us-en.amd.com/amd-ryzen-9-9900x-processor/', + }, + { + brand: 'amd', + model: '9700x', + series: 'ryzen9700x', + url: 'https://shop-us-en.amd.com/amd-ryzen-7-9700x-processor/', + }, + { + brand: 'amd', + model: '9600x', + series: 'ryzen9600x', + url: 'https://shop-us-en.amd.com/amd-ryzen-5-9600x-processor/', + }, + { + brand: 'amd', + model: '7800x3d', + series: 'ryzen7800x3d', + url: 'https://shop-us-en.amd.com/amd-ryzen-7-7800x3d-processor/', + }, ], name: 'amd', + country: 'US', }; + +/* Copy Paste Template + +As of 01-12-2025 I cant figure out the add to cart URL. +For now just copy the product page URL into the url field. -agpuperson + +{ + brand: 'amd', + model: '', + series: '', + url: '', +}, +*/ diff --git a/src/store/model/antonline.ts b/src/store/model/antonline.ts index fbbfd6d38e..15fb2a0379 100644 --- a/src/store/model/antonline.ts +++ b/src/store/model/antonline.ts @@ -37,4 +37,5 @@ export const AntOnline: Store = { }, ], name: 'antonline', + country: 'US', }; diff --git a/src/store/model/ao.ts b/src/store/model/ao.ts index 7f16eab0f7..8224d309ee 100644 --- a/src/store/model/ao.ts +++ b/src/store/model/ao.ts @@ -23,4 +23,5 @@ export const AO: Store = { }, ], name: 'ao', + country: 'UK', }; diff --git a/src/store/model/argos-ie.ts b/src/store/model/argos-ie.ts index f470cee6fe..37b07ab458 100644 --- a/src/store/model/argos-ie.ts +++ b/src/store/model/argos-ie.ts @@ -30,4 +30,5 @@ export const ArgosIE: Store = { }, ], name: 'argos-ie', + country: 'IE', }; diff --git a/src/store/model/argos.ts b/src/store/model/argos.ts index 934ee174bb..04510fc4d0 100644 --- a/src/store/model/argos.ts +++ b/src/store/model/argos.ts @@ -44,4 +44,5 @@ export const Argos: Store = { }, ], name: 'argos', + country: 'UK', }; diff --git a/src/store/model/aria.ts b/src/store/model/aria.ts index de374e4895..f9748c9505 100644 --- a/src/store/model/aria.ts +++ b/src/store/model/aria.ts @@ -61,5 +61,6 @@ export const Aria: Store = { ], }, name: 'aria', + country: 'UK', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/arlt.ts b/src/store/model/arlt.ts index 5eba41f2de..18c06fa90c 100644 --- a/src/store/model/arlt.ts +++ b/src/store/model/arlt.ts @@ -119,6 +119,25 @@ export const Arlt: Store = { series: 'ryzen5950', url: 'https://www.arlt.com/Hardware/PC-Komponenten/Prozessoren-arlt/AMD-Ryzen-9-5950X-boxed.html', }, + { + brand: 'asus', + model: 'dual', + series: 'rx6700xt', + url: 'https://www.arlt.com/Gaming/Gaming-Hardware/Grafikkarten/ASUS-Radeon-RX-6700-XT-Dual.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6700xt', + url: 'https://www.arlt.com/Gaming/Gaming-Hardware/Grafikkarten/ASUS-ROG-Strix-Radeon-RX-6700-XT-OC.html', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6700xt', + url: 'https://www.arlt.com/Gaming/Gaming-Hardware/Grafikkarten/Sapphire-Nitro-Radeon-RX-6700-XT.html', + }, ], name: 'arlt', + country: 'DE', }; diff --git a/src/store/model/asus-de.ts b/src/store/model/asus-de.ts index 6797602772..c2bcf99dab 100644 --- a/src/store/model/asus-de.ts +++ b/src/store/model/asus-de.ts @@ -63,6 +63,25 @@ export const AsusDe: Store = { series: '3090', url: 'https://webshop.asus.com/de/komponenten/grafikkarten/nvidia-serie/2823/asus-tuf-rtx3090-o24g-gaming', }, + { + brand: 'asus', + model: 'dual', + series: 'rx6700xt', + url: 'https://webshop.asus.com/de/komponenten/grafikkarten/dual-series/3104/asus-dual-rx6700xt-12g', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6700xt', + url: 'https://webshop.asus.com/de/komponenten/grafikkarten/rog-serie/3106/asus-rog-strix-rx6700xt-o12g-gaming', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6700xt', + url: 'https://webshop.asus.com/de/komponenten/grafikkarten/tuf-247-betrieb/3105/asus-tuf-rx6700xt-o12g-gaming', + }, ], name: 'asus-de', + country: 'DE', }; diff --git a/src/store/model/asus-es.ts b/src/store/model/asus-es.ts index 3f3c239cf6..bb4be9eec1 100644 --- a/src/store/model/asus-es.ts +++ b/src/store/model/asus-es.ts @@ -29,4 +29,5 @@ export const AsusEs: Store = { }, ], name: 'asus-es', + country: 'ES', }; diff --git a/src/store/model/asus.ts b/src/store/model/asus.ts index 4a72fbd014..51a3235cbd 100644 --- a/src/store/model/asus.ts +++ b/src/store/model/asus.ts @@ -1,5 +1,5 @@ -import {Store} from './store'; import fetch from 'node-fetch'; +import {Store} from './store'; export const Asus: Store = { backoffStatusCodes: [403, 429, 503], @@ -157,6 +157,7 @@ export const Asus: Store = { }, ], name: 'asus', + country: 'US', realTimeInventoryLookup: async (itemNumber: string) => { const request_url = 'https://store.asus.com/us/category/get_real_time_data'; const response = await fetch(request_url, { @@ -181,3 +182,15 @@ export const Asus: Store = { }, successStatusCodes: [[0, 399], 404], }; + +/* Copy Paste Template + +Asus depreciated item numbers, do not use. Instead just copy and paste the links like normal. + +{ + brand: '', + model: '', + series: '', + url: '', +}, +*/ diff --git a/src/store/model/awd.ts b/src/store/model/awd.ts index bfba91d6a9..4b0a7f2869 100644 --- a/src/store/model/awd.ts +++ b/src/store/model/awd.ts @@ -79,5 +79,6 @@ export const Awd: Store = { ], }, name: 'awd', + country: 'UK', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/azerty.ts b/src/store/model/azerty.ts index 640ed2c3e0..c3d0c29a96 100644 --- a/src/store/model/azerty.ts +++ b/src/store/model/azerty.ts @@ -187,4 +187,5 @@ export const Azerty: Store = { }, ], name: 'azerty', + country: 'NL', }; diff --git a/src/store/model/bandh.ts b/src/store/model/bandh.ts index 586104d8f8..21caea49bd 100644 --- a/src/store/model/bandh.ts +++ b/src/store/model/bandh.ts @@ -157,7 +157,6 @@ export const BAndH: Store = { 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', @@ -254,6 +253,84 @@ export const BAndH: Store = { series: '3090', url: 'https://www.bhphotovideo.com/c/product/1614302-REG/asus_rog_strix_rtx3090_o24g_white_rog_strix_geforce_rtx.html', }, + { + brand: 'zotac', + model: 'trinity oc', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1730538-REG/zotac_zt_d40900j_10p_geforce_rtx_4090_trinity.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1730540-REG/zotac_zt_d40900d_10p_geforce_rtx_4090_trinity.html', + }, + { + brand: 'zotac', + model: 'amp extreme airo', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1730539-REG/zotac_zt_d40900b_10p_geforce_rtx_4090_amp.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1729221-REG/gigabyte_gv_n4090gaming_oc_24gd_geforce_rtx_4090_gaming.html', + }, + { + brand: 'gigabyte', + model: 'windforce', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1729222-REG/gigabyte_gv_n4090wf3_24gd_geforce_rtx_4090_windforce.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1729257-REG/asus_rog_strix_rtx4090_o24g_gaming_geforce_rtx_4090_rog.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1730937-REG/asus_tuf_rtx4090_24g_gaming_geforce_rtx_4090_tuf.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1729258-REG/asus_tuf_rtx4090_o24g_gaming_geforce_rtx_4090_tuf.html', + }, + { + brand: 'msi', + model: 'suprim x', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1729349-REG/msi_g4090sx24_geforce_rtx_4090_suprim.html', + }, + { + brand: 'msi', + model: 'suprim liquid x', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1729348-REG/msi_g4090slx24_geforce_rtx_4090_suprim.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1729347-REG/msi_g4090gxt24_geforce_rtx_4090_gaming.html', + }, + { + brand: 'msi', + model: 'gaming trio', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1729346-REG/msi_g4090gt24_geforce_rtx_4090_gaming.html', + }, + { + brand: 'pny', + model: 'gaming verto epic-x', + series: '4090', + url: 'https://www.bhphotovideo.com/c/product/1729096-REG/pny_vcg409024tfxxpb1_geforce_rtx_4090_24gb.html', + }, { brand: 'amd', model: '5950x', @@ -290,6 +367,358 @@ export const BAndH: Store = { series: 'sf', url: 'https://www.bhphotovideo.com/c/product/1560680-REG/corsair_cp_9020186_na_corsair_sf750_power_supply.html', }, + { + brand: 'pny', + model: 'xlr8 verto epic x', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1729444-REG/pny_vcg408016tfxxpb1_nvidia_geforce_rtx_4080.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1731403-REG/gigabyte_gv_n4080gaming_oc_16gd_geforce_rtx_4080_16gb.html', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1731405-REG/gigabyte_gv_n4080eagle_oc_16gd_geforce_rtx_4080_16gb.html', + }, + { + brand: 'zotac', + model: 'amp extreme airo', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1732733-REG/zotac_zt_d40810b_10p_geforce_rtx_4080_amp.html', + }, + { + brand: 'gigabyte', + model: 'aero oc', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1731404-REG/gigabyte_gv_n4080aero_oc_16gd_geforce_rtx_4080_16gb.html', + }, + { + brand: 'zotac', + model: 'trinity', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1732735-REG/zotac_zt_d40810d_10p_geforce_rtx_4080_trinity.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1731409-REG/gigabyte_gv_n4080eagle_16gd_geforce_rtx_4080_16gb.html', + }, + { + brand: 'gigabyte', + model: 'master', + series: '4080-16g', + url: '', + }, + { + brand: 'asus', + model: 'strix oc', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1733173-REG/asus_rog_strix_rtx4080_o16g_gaming_geforce_rtx_4080_republic.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1733163-REG/asus_tuf_rtx4080_o16g_gaming_geforce_rtx_4080_tuf.html', + }, + { + brand: 'asus', + model: 'tuf', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1733171-REG/asus_tuf_rtx4080_16g_gaming_geforce_rtx_4080_tuf.html', + }, + { + brand: 'msi', + model: 'suprim x', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1733724-REG/msi_g408016sx_geforce_rtx_4080_16gb.html', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1733725-REG/msi_g408016gxt_geforce_rtx_4080_16gb.html', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1733740-REG/msi_g408016v3x_geforce_rtx_4080_16gb.html', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1732734-REG/zotac_zt_d40810j_10p_geforce_rtx_4080_trinity.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1733739-REG/msi_g408016v3xc_geforce_rtx_4080_16gb.html', + }, + { + brand: 'pny', + model: 'xlr8 verto oc', + series: '4080-16g', + url: '', + }, + { + brand: 'pny', + model: 'xlr8 verto epic x', + series: '4080-16g', + url: 'https://www.bhphotovideo.com/c/product/1729444-REG/pny_vcg408016tfxxpb1_nvidia_geforce_rtx_4080.html', + }, + { + brand: 'asus', + model: 'prime oc', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1872328-REG/asus_prime_rtx5080_o16g_geforce_rtx_5080_prime.html', + }, + { + brand: 'asus', + model: 'astral oc', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1872329-REG/asus_rog_astral_rtx5080_o16g_gaming_republic_of_gamers_astral.html', + }, + { + brand: 'asus', + model: 'tuf gaming oc', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1872330-REG/asus_tuf_rtx5080_o16g_gaming_geforce_rtx_5080_tuf.html', + }, + { + brand: 'msi', + model: 'gaming trio oc', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875457-REG/msi_g5080_16gtc_geforce_rtx_5080_gaming.html', + }, + { + brand: 'msi', + model: 'gaming trio oc white', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875458-REG/msi_g5080_16gtcw_geforce_rtx_5080_gaming.html', + }, + { + brand: 'msi', + model: 'inspire 3x oc', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875459-REG/msi_g5080_16i3c_geforce_rtx_5080_inspire.html', + }, + { + brand: 'asus', + model: 'prime', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1874876-REG/asus_prime_rtx5080_16g_geforce_rtx_5080_prime.html', + }, + { + brand: 'pny', + model: 'suprim liquid soc', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875460-REG/msi_g5080_16sls_geforce_rtx_5080_suprim.html', + }, + { + brand: 'msi', + model: 'suprim soc', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875461-REG/msi_g5080_16sps_geforce_rtx_5080_suprim.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc plus', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875462-REG/msi_g5080_16v3cp_geforce_rtx_5080_ventus.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1872786-REG/gigabyte_gv_n5080gaming_oc_16gd_geforce_rtx_5080_gaming.html', + }, + { + brand: 'msi', + model: 'vanguard soc', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875463-REG/msi_g5080_16vgs_geforce_rtx_5080_vanguard.html', + }, + { + brand: 'gigabyte', + model: 'aero oc sff', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875711-REG/gigabyte_gv_n5080aero_oc_16gd_geforce_rtx_5080_aero.html', + }, + { + brand: 'gigabyte', + model: 'windforce oc sff', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875716-REG/gigabyte_gv_n5080wf3oc_16gd_geforce_rtx_5080_windforce.html', + }, + { + brand: 'msi', + model: 'vanguard soc launch edition', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875464-REG/msi_g5080_16vgsl_geforce_rtx_5080_vanguard.html', + }, + { + brand: 'pny', + model: 'triple fan oc', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1874645-REG/pny_vcg508016tfxpb1_o_nvidia_geforce_rtx_5080.html', + }, + { + brand: 'pny', + model: 'epic x', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1874646-REG/pny_vcg508016tfxxpb1_o_nvidia_geforce_rtx_5080.html', + }, + { + brand: 'gigabyte', + model: 'master ice', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875713-REG/gigabyte_gv_n5080aorusm_ice_16gd_geforce_rtx_5080_master.html', + }, + { + brand: 'gigabyte', + model: 'master', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875712-REG/gigabyte_gv_n5080aorus_m_16gd_geforce_rtx_5080_master.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875715-REG/gigabyte_gv_n5080aorusx_wb_16gd_geforce_rtx_5080_aorus.html', + }, + { + brand: 'pny', + model: 'aorus xtreme waterforce', + series: '5080', + url: 'https://www.bhphotovideo.com/c/product/1875714-REG/gigabyte_gv_n5080aorusx_w_16gd_geforce_rtx_5080_aorus.html', + }, + { + brand: 'msi', + model: 'gaming trio oc', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875465-REG/msi_g5090_32gtc_geforce_rtx_5090_gaming.html', + }, + { + brand: 'msi', + model: 'suprim liquid soc', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875466-REG/msi_g5090_32sls_geforce_rtx_5090_suprim.html', + }, + { + brand: 'pny', + model: 'triple fan oc', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1874647-REG/pny_vcg509032tfxpb1_o_nvidia_geforce_rtx_5090.html', + }, + { + brand: 'msi', + model: 'suprim soc', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875467-REG/msi_g5090_32sps_geforce_rtx_5090_suprim.html', + }, + { + brand: 'asus', + model: 'tuf gaming oc', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875902-REG/asus_tuf_rtx5090_o32g_gaming_geforce_rtx_5090_tuf.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875720-REG/gigabyte_gv_n5090aorusx_wb_32gd_geforce_rtx_5090_aorus.html', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875719-REG/gigabyte_gv_n5090aorusx_w_32gd_geforce_rtx_5080_aorus.html', + }, + { + brand: 'asus', + model: 'astral', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1876781-REG/asus_rog_astral_rtx5090_32g_gaming_rog_astral_gfrce_rtx.html', + }, + { + brand: 'asus', + model: 'astral oc', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875529-REG/asus_rog_astral_rtx5090_o32g_gaming_geforce_rtx_5090_republic.html', + }, + { + brand: 'pny', + model: 'epic x oc', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1874648-REG/pny_vcg509032tfxxpb1_o_nvidia_geforce_rtx_5090.html', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875468-REG/msi_g5090_32v3c_geforce_rtx_5090_ventus.html', + }, + { + brand: 'msi', + model: 'vanguard soc launch edition', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875470-REG/msi_g5090_32vgsl_geforce_rtx_5090_vanguard.html', + }, + { + brand: 'msi', + model: 'vanguard soc', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875469-REG/msi_g5090_32vgs_geforce_rtx_5090_vanguard.html', + }, + { + brand: 'gigabyte', + model: 'windforce oc', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875722-REG/gigabyte_gv_n5090wf3oc_32gd_geforce_rtx_5090_windforce.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875721-REG/gigabyte_gv_n5090gaming_oc_32gd_geforce_rtx_5090_gaming.html', + }, + { + brand: 'asus', + model: 'tuf gaming', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875530-REG/asus_tuf_rtx5090_32g_gaming_geforce_rtx_5090_tuf.html', + }, + { + brand: 'gigabyte', + model: 'master ice', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875718-REG/gigabyte_gv_n5090aorusm_ice_32gd_geforce_rtx_5090_master.html', + }, + { + brand: 'gigabyte', + model: 'master', + series: '5090', + url: 'https://www.bhphotovideo.com/c/product/1875717-REG/gigabyte_gv_n5090aorus_m_32gd_geforce_rtx_5090_master.html', + }, ], name: 'bandh', + country: 'US', }; + +/* Copy Paste Template + { + brand: 'pny', + model: '', + series: '', + url: '', + }, +*/ diff --git a/src/store/model/bestbuy-ca.ts b/src/store/model/bestbuy-ca.ts index c21e171ed2..6d57444396 100644 --- a/src/store/model/bestbuy-ca.ts +++ b/src/store/model/bestbuy-ca.ts @@ -23,7 +23,7 @@ export const BestBuyCa: Store = { brand: 'msi', model: 'ventus 3x', series: '3060', - url: 'https://www.bestbuy.ca/en-ca/product/msi-nvidia-geforce-rtx-3060-ventus-3x-12gb-gddr6-video-card/15324508', + url: 'https://www.bestbuy.ca/en-ca/product/16595219', }, { brand: 'zotac', @@ -229,7 +229,140 @@ export const BestBuyCa: Store = { series: '3080ti', url: 'https://www.bestbuy.ca/en-ca/product/nvidia-geforce-rtx-3080-ti-12gb-gddr6x-video-card/15530045', }, + { + brand: 'nvidia', + model: 'founders edition', + series: '5090', + url: 'https://www.bestbuy.ca/en-ca/product/18931348', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/18931347', + }, + { + brand: 'asus', + model: 'astral oc', + series: '5090', + url: 'https://www.bestbuy.ca/en-ca/product/19177947', + }, + { + brand: 'asus', + model: 'astral oc', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/19177946', + }, + { + brand: 'asus', + model: 'prime', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/18971064', + }, + { + brand: 'asus', + model: 'tuf', + series: '5090', + url: 'https://www.bestbuy.ca/en-ca/product/18969272', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/18938760', + }, + { + brand: 'msi', + model: 'gaming trio oc', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/18938759', + }, + { + brand: 'msi', + model: 'suprim liquid x', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/18938758', + }, + { + brand: 'msi', + model: 'suprim liquid soc', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/18938757', + }, + { + brand: 'msi', + model: 'vanguard soc launch edition', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/18938756', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '5090', + url: 'https://www.bestbuy.ca/en-ca/product/18938755', + }, + { + brand: 'msi', + model: 'suprim liquid x', + series: '5090', + url: 'https://www.bestbuy.ca/en-ca/product/18938754', + }, + { + brand: 'msi', + model: 'vanguard', + series: '5090', + url: 'https://www.bestbuy.ca/en-ca/product/18938752', + }, + { + brand: 'msi', + model: 'gaming trio oc', + series: '5090', + url: 'https://www.bestbuy.ca/en-ca/product/18938751', + }, + { + brand: 'asus', + model: 'prime', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/18934247', + }, + { + brand: 'pny', + model: 'triple fan oc', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/18934178', + }, + { + brand: 'pny', + model: 'epic x oc', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/18934177', + }, + { + brand: 'zotac', + model: 'solid', + series: '5090', + url: 'https://www.bestbuy.ca/en-ca/product/18931631', + }, + { + brand: 'zotac', + model: 'solid oc', + series: '5080', + url: 'https://www.bestbuy.ca/en-ca/product/18931629', + }, ], name: 'bestbuy-ca', + country: 'CA', waitUntil: 'domcontentloaded', }; + +/* Copy Paste Template + +Just paste product ID at the end of the link + +{ + brand: '', + model: '', + series: '', + url: 'https://www.bestbuy.ca/en-ca/product/', +}, +*/ diff --git a/src/store/model/bestbuy.ts b/src/store/model/bestbuy.ts index def86e3263..fc3f0bdb81 100644 --- a/src/store/model/bestbuy.ts +++ b/src/store/model/bestbuy.ts @@ -4,12 +4,16 @@ export const BestBuy: Store = { currency: '$', labels: { inStock: { - container: '[data-sticky-media-gallery] .fulfillment-add-to-cart-button', + container: '.fulfillment-add-to-cart-button', text: ['add to cart'], }, - maxPrice: { + outOfStock: { container: - '[data-sticky-media-gallery] .priceView-price .priceView-hero-price span', + 'button.c-button.c-button-disabled[data-button-state="SOLD_OUT]', + text: ['coming soon'], + }, + maxPrice: { + container: '.priceView-price', }, }, links: [ @@ -17,7 +21,21 @@ export const BestBuy: Store = { brand: 'test:brand', model: 'test:model', series: 'test:series', - url: 'https://api.bestbuy.com/click/-/6258941/pdp', + url: 'https://api.bestbuy.com/click/-/6489491/pdp', + }, + { + brand: 'amd', + model: '7950x', + cartUrl: 'https://api.bestbuy.com/click/-/6519470/cart', + series: 'ryzen7950x', + url: 'https://api.bestbuy.com/click/-/6519470/pdp', + }, + { + brand: 'amd', + model: '9800x3d', + cartUrl: 'https://api.bestbuy.com/click/-/6606318/cart', + series: 'ryzen9800x3d', + url: 'https://api.bestbuy.com/click/-/6606318/pdp', }, { brand: 'nvidia', @@ -257,6 +275,62 @@ export const BestBuy: Store = { series: '3080ti', url: 'https://api.bestbuy.com/click/-/6462956/pdp', }, + { + brand: 'nvidia', + cartUrl: 'https://api.bestbuy.com/click/-/6521430/cart', + model: 'founders edition', + series: '4090', + url: 'https://api.bestbuy.com/click/-/6521430/pdp', + }, + { + brand: 'pny', + cartUrl: 'https://api.bestbuy.com/click/-/6522679/cart', + model: 'xlr8 gaming', + series: '4090', + url: 'https://api.bestbuy.com/click/-/6522679/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6524435/cart', + model: 'strix', + series: '4090', + url: 'https://api.bestbuy.com/click/-/6524435/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6524436/cart', + model: 'tuf', + series: '4090', + url: 'https://api.bestbuy.com/click/-/6524436/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6522371/cart', + model: 'gaming trio', + series: '4090', + url: 'https://api.bestbuy.com/click/-/6522371/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6522334/cart', + model: 'suprim liquid x', + series: '4090', + url: 'https://api.bestbuy.com/click/-/6522334/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6521518/cart', + model: 'gaming oc', + series: '4090', + url: 'https://api.bestbuy.com/click/-/6521518/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6521517/cart', + model: 'windforce', + series: '4090', + url: 'https://api.bestbuy.com/click/-/6521517/pdp', + }, { brand: 'nvidia', cartUrl: 'https://api.bestbuy.com/click/-/6429434/cart', @@ -537,6 +611,244 @@ export const BestBuy: Store = { series: '3060', url: 'https://api.bestbuy.com/click/-/6454318/pdp', }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6524517/cart', + model: 'gaming oc', + series: '4080-16g', + url: 'https://api.bestbuy.com/click/-/6524517/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6525660/cart', + model: 'aero oc', + series: '4080-16g', + url: 'https://api.bestbuy.com/click/-/6525660/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6525662/cart', + model: 'eagle', + series: '4080-16g', + url: 'https://api.bestbuy.com/click/-/6525662/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6524441/cart', + model: 'ventus 3x oc', + series: '4080-16g', + url: 'https://api.bestbuy.com/click/-/6524441/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6524440/cart', + model: 'gaming x trio', + series: '4080-16g', + url: 'https://api.bestbuy.com/click/-/6524440/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6525658/cart', + model: 'strix', + series: '4080-16g', + url: 'https://api.bestbuy.com/click/-/6525658/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6525663/cart', + model: 'eagle oc', + series: '4080-16g', + url: 'https://api.bestbuy.com/click/-/6525663/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6525659/cart', + model: 'tuf', + series: '4080-16g', + url: 'https://api.bestbuy.com/click/-/6525659/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6525661/cart', + model: 'master', + series: '4080-16g', + url: 'https://api.bestbuy.com/click/-/6525661/pdp', + }, + { + brand: 'pny', + cartUrl: 'https://api.bestbuy.com/click/-/6522940/cart', + model: 'xlr8', + series: '4080-16g', + url: 'https://api.bestbuy.com/click/-/6522940/pdp', + }, + { + brand: 'nvidia', + cartUrl: 'https://api.bestbuy.com/click/-/6614154/cart', + model: 'founders edition', + series: '4080-16g', + url: 'https://api.bestbuy.com/click/-/6614154/pdp', + }, + { + brand: 'intel', + cartUrl: 'https://api.bestbuy.com/click/-/6614154/cart', + model: 'b580', + series: 'arc', + url: 'https://api.bestbuy.com/click/-/6614154/pdp', + }, + { + brand: 'nvidia', + cartUrl: 'https://api.bestbuy.com/click/-/6614154/cart', + model: 'founders edition', + series: '5070', + url: 'https://api.bestbuy.com/click/-/6614154/pdp', + }, + { + brand: 'nvidia', + cartUrl: 'https://api.bestbuy.com/click/-/6614153/cart', + model: 'founders edition', + series: '5080', + url: 'https://api.bestbuy.com/click/-/6614153/pdp', + }, + { + brand: 'nvidia', + cartUrl: 'https://api.bestbuy.com/click/-/6614151/cart', + model: 'founders edition', + series: '5090', + url: 'https://api.bestbuy.com/click/-/6614151/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6617487/cart', + model: 'master ice', + series: '5090', + url: 'https://api.bestbuy.com/click/-/6617487/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6616102/cart', + model: 'windforce oc', + series: '5080', + url: 'https://api.bestbuy.com/click/-/6616102/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6615925/cart', + model: 'gaming oc', + series: '5080', + url: 'https://api.bestbuy.com/click/-/6615925/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6615927/cart', + model: 'aorus xtreme waterforce', + series: '5080', + url: 'https://api.bestbuy.com/click/-/6615927/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6615934/cart', + model: 'master ice', + series: '5080', + url: 'https://api.bestbuy.com/click/-/6615934/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6615924/cart', + model: 'master', + series: '5080', + url: 'https://api.bestbuy.com/click/-/6615924/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6616100/cart', + model: 'aero oc sff', + series: '5080', + url: 'https://api.bestbuy.com/click/-/6616100/pdp', + }, + { + brand: 'gigabyte', + cartUrl: 'https://api.bestbuy.com/click/-/6615928/cart', + model: 'aorus xtreme waterforce wb', + series: '5080', + url: 'https://api.bestbuy.com/click/-/6615928/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6616090/cart', + model: 'gaming trio oc', + series: '5090', + url: 'https://api.bestbuy.com/click/-/6616090/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6616093/cart', + model: 'ventus 3x oc', + series: '5090', + url: 'https://api.bestbuy.com/click/-/6616093/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6614122/cart', + model: 'tuf gaming oc', + series: '5090', + url: 'https://api.bestbuy.com/click/-/6614122/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6615831/cart', + model: 'prime', + series: '5080', + url: 'https://api.bestbuy.com/click/-/6615831/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6616092/cart', + model: 'suprim soc', + series: '5090', + url: 'https://api.bestbuy.com/click/-/6616092/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6614120/cart', + model: 'astral', + series: '5090', + url: 'https://api.bestbuy.com/click/-/6614120/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-/6614119/cart', + model: 'tuf gaming', + series: '5090', + url: 'https://api.bestbuy.com/click/-/6614119/pdp', + }, + { + brand: 'msi', + cartUrl: 'https://api.bestbuy.com/click/-/6615232/cart', + model: 'suprim soc', + series: '5080', + url: 'https://api.bestbuy.com/click/-/6615232/pdp', + }, + { + brand: 'asus', + cartUrl: 'https://api.bestbuy.com/click/-//cart', + model: 'tuf gaming oc', + series: '5080', + url: 'https://api.bestbuy.com/click/-//pdp', + }, ], name: 'bestbuy', + country: 'US', }; + +/* Copy Paste template + +Paste the SKU from the site in between both sets of /-// example: /-/sku/cart, /-/sku/pdp + +{ + brand: '', + cartUrl: 'https://api.bestbuy.com/click/-//cart', + model: '', + series: '', + url: 'https://api.bestbuy.com/click/-//pdp', +}, +*/ diff --git a/src/store/model/box.ts b/src/store/model/box.ts index 8248177b26..3a96cabefb 100644 --- a/src/store/model/box.ts +++ b/src/store/model/box.ts @@ -86,5 +86,6 @@ export const Box: Store = { ], }, name: 'box', + country: 'UK', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/bpctech.ts b/src/store/model/bpctech.ts index 04d65152ba..d701fedc87 100644 --- a/src/store/model/bpctech.ts +++ b/src/store/model/bpctech.ts @@ -148,4 +148,5 @@ export const Bpctech: Store = { }, ], name: 'bpctech', + country: 'AU', }; diff --git a/src/store/model/bpmpower.ts b/src/store/model/bpmpower.ts index 2e250f7822..34fe731e56 100644 --- a/src/store/model/bpmpower.ts +++ b/src/store/model/bpmpower.ts @@ -37,4 +37,5 @@ export const BpmPower: Store = { }, ], name: 'bpm-power', + country: 'IT', }; diff --git a/src/store/model/bt.ts b/src/store/model/bt.ts index 32ec32595a..42dfc1d22d 100644 --- a/src/store/model/bt.ts +++ b/src/store/model/bt.ts @@ -23,4 +23,5 @@ export const BT: Store = { }, ], name: 'bt', + country: 'UK', }; diff --git a/src/store/model/canadacomputers.ts b/src/store/model/canadacomputers.ts index 1624169820..293625c124 100644 --- a/src/store/model/canadacomputers.ts +++ b/src/store/model/canadacomputers.ts @@ -507,5 +507,6 @@ export const CanadaComputers: Store = { }, ], name: 'canadacomputers', + country: 'CA', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/caseking.ts b/src/store/model/caseking.ts index 1098f95efc..77e4074412 100644 --- a/src/store/model/caseking.ts +++ b/src/store/model/caseking.ts @@ -756,6 +756,84 @@ export const Caseking: Store = { series: 'ryzen5950', url: 'https://www.caseking.de/amd-ryzen-9-5950x-3-4-ghz-vermeer-am4-boxed-ohne-kuehler-hpam-205.html', }, + { + brand: 'asus', + model: 'dual', + series: 'rx6700xt', + url: 'https://www.caseking.de/asus-radeon-rx-6700-xt-dual-12g-12288-mb-gddr6-gcas-453.html', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6700xt', + url: 'https://www.caseking.de/asus-radeon-rx-6700-xt-tuf-o12g-12288-mb-gddr6-gcas-449.html', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6700xt', + url: 'https://www.caseking.de/asus-radeon-rx-6700-xt-rog-strix-o12g-12288-mb-gddr6-gcas-448.html', + }, + { + brand: 'gigabyte', + model: 'amd reference', + series: 'rx6700xt', + url: 'https://www.caseking.de/gigabyte-radeon-rx-6700-xt-12g-12288-mb-gddr6-gcgb-376.html', + }, + { + brand: 'gigabyte', + model: 'aorus elite', + series: 'rx6700xt', + url: 'https://www.caseking.de/gigabyte-aorus-radeon-rx-6700-xt-elite-12g-12288-mb-gddr6-gcgb-377.html', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: 'rx6700xt', + url: 'https://www.caseking.de/gigabyte-radeon-rx-6700-xt-eagle-12g-12288-mb-gddr6-gcgb-375.html', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6700xt', + url: 'https://www.caseking.de/gigabyte-radeon-rx-6700-xt-gaming-oc-12g-12288-mb-gddr6-gcgb-374.html', + }, + { + brand: 'gigabyte', + model: 'gaming x', + series: 'rx6700xt', + url: 'https://www.caseking.de/msi-radeon-rx-6700-xt-gaming-x-12g-12288-mb-gddr6-gcmc-269.html', + }, + { + brand: 'msi', + model: 'mech 2x', + series: 'rx6700xt', + url: 'https://www.caseking.de/msi-radeon-rx-6700-xt-mech-2x-12g-12288-mb-gddr6-gcmc-271.html', + }, + { + brand: 'msi', + model: 'mech 2x oc', + series: 'rx6700xt', + url: 'https://www.caseking.de/msi-radeon-rx-6700-xt-mech-2x-12g-oc-12288-mb-gddr6-gcmc-270.html', + }, + { + brand: 'sapphire', + model: 'nitro oc', + series: 'rx6700xt', + url: 'https://www.caseking.de/sapphire-nitro-radeon-rx-6700-xt-gaming-oc-12g-12288-mb-gddr6-gcsp-219.html', + }, + { + brand: 'sapphire', + model: 'pulse', + series: 'rx6700xt', + url: 'https://www.caseking.de/sapphire-pulse-radeon-rx-6700-xt-gaming-12g-12288-mb-gddr6-gcsp-220.html', + }, + { + brand: 'sapphire', + model: 'pulse oc', + series: 'rx6700xt', + url: 'https://www.caseking.de/sapphire-pulse-radeon-rx-6700-xt-oc-12g-12288-mb-gddr6-gcsp-226.html', + }, { brand: 'sapphire', model: 'nitro oc se', @@ -794,4 +872,5 @@ export const Caseking: Store = { }, ], name: 'caseking', + country: 'DE', }; diff --git a/src/store/model/ccl.ts b/src/store/model/ccl.ts index 087895f796..4352fcb259 100644 --- a/src/store/model/ccl.ts +++ b/src/store/model/ccl.ts @@ -93,5 +93,6 @@ export const Ccl: Store = { ], }, name: 'ccl', + country: 'UK', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/centrecom.ts b/src/store/model/centrecom.ts index 71363558c5..db38277dc2 100644 --- a/src/store/model/centrecom.ts +++ b/src/store/model/centrecom.ts @@ -74,4 +74,5 @@ export const Centrecom: Store = { }, ], name: 'centrecom', + country: 'AU', }; diff --git a/src/store/model/comet.ts b/src/store/model/comet.ts index ff72ebce4e..3b11570610 100644 --- a/src/store/model/comet.ts +++ b/src/store/model/comet.ts @@ -38,4 +38,5 @@ export const Comet: Store = { }, ], name: 'comet', + country: 'IT', }; diff --git a/src/store/model/computeralliance.ts b/src/store/model/computeralliance.ts index 6bd4775b96..08309592f3 100644 --- a/src/store/model/computeralliance.ts +++ b/src/store/model/computeralliance.ts @@ -256,4 +256,5 @@ export const ComputerAlliance: Store = { }, ], name: 'computeralliance', + country: 'AU', }; diff --git a/src/store/model/computeruniverse.ts b/src/store/model/computeruniverse.ts index 53f6981fd4..db86a2e3f6 100644 --- a/src/store/model/computeruniverse.ts +++ b/src/store/model/computeruniverse.ts @@ -634,6 +634,36 @@ export const Computeruniverse: Store = { series: '3090', url: 'https://www.computeruniverse.net/de/zotac-gaming-geforce-rtx-3090-trinity-24-gb-enthusiast-grafikkarte', }, + { + brand: 'asrock', + model: 'challenger oc', + series: 'rx6700xt', + url: 'https://www.computeruniverse.net/de/p/90829010', + }, + { + brand: 'asrock', + model: 'challenger pro oc', + series: 'rx6700xt', + url: 'https://www.computeruniverse.net/de/p/90829011', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6700xt', + url: 'https://www.computeruniverse.net/de/p/90828759', + }, + { + brand: 'gigabyte', + model: 'aorus elite', + series: 'rx6700xt', + url: 'https://www.computeruniverse.net/de/p/90829454', + }, + { + brand: 'xfx', + model: 'swft', + series: 'rx6700xt', + url: 'https://www.computeruniverse.net/de/p/90829019', + }, { brand: 'amd', model: '5600x', @@ -672,4 +702,5 @@ export const Computeruniverse: Store = { }, ], name: 'computeruniverse', + country: 'DE', }; diff --git a/src/store/model/coolblue.ts b/src/store/model/coolblue.ts index b29149db2b..8ad03d256d 100644 --- a/src/store/model/coolblue.ts +++ b/src/store/model/coolblue.ts @@ -152,4 +152,5 @@ export const Coolblue: Store = { }, ], name: 'coolblue', + country: 'NL', }; diff --git a/src/store/model/coolmod.ts b/src/store/model/coolmod.ts index b17d12789f..376d8c86f7 100644 --- a/src/store/model/coolmod.ts +++ b/src/store/model/coolmod.ts @@ -1,19 +1,20 @@ import {Store} from './store'; +import {getProductLinksBuilder} from './helpers/card'; export const Coolmod: Store = { currency: '€', labels: { inStock: { - container: '.product-availability', - text: ['Envío'], + container: '#productBuyButtons', + text: ['COMPRAR'], }, maxPrice: { - container: '.text-price-total', + container: '#normalpricenumber', euroFormat: true, }, outOfStock: { - container: '.product-availability', - text: ['Sin Stock'], + container: '#productBuyButtons', + text: ['NO DISPONIBLE'], }, }, links: [ @@ -23,387 +24,6 @@ export const Coolmod: Store = { series: 'test:series', url: 'https://www.coolmod.com/kfa2-geforce-rtx-2060-super-1-click-oc-8gb-gddr6-tarjeta-grafica-precio', }, - // 3090 - { - brand: 'asus', - model: 'strix oc white', - series: '3090', - url: 'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3090-oc-white-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'evga', - model: 'xc3 ultra', - series: '3090', - url: 'https://www.coolmod.com/evga-geforce-rtx-3090-xc3-ultra-gaming-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'evga', - model: 'xc3', - series: '3090', - url: 'https://www.coolmod.com/evga-geforce-rtx-3090-xc3-gaming-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3090', - url: 'https://www.coolmod.com/evga-geforce-rtx-3090-xc3-black-gaming-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'gigabyte', - model: 'aorus xtreme waterforce', - series: '3090', - url: 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3090-xtreme-waterforce-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'gigabyte', - model: 'aorus master', - series: '3090', - url: 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3090-master-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3090', - url: 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3090-xtrem-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3090', - url: 'https://www.coolmod.com/inno3d-geforce-rtx-3090-ichill-x4-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'kfa2', - model: 'hof', - series: '3090', - url: 'https://www.coolmod.com/kfa2-geforce-rtx-3090-hof-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'kfa2', - model: 'hof premium', - series: '3090', - url: 'https://www.coolmod.com/kfa2-geforce-rtx-3090-hof-premium-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'kfa2', - model: 'hof limited edition', - series: '3090', - url: 'https://www.coolmod.com/kfa2-geforce-rtx-3090-hof-limited-edition-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'msi', - model: 'suprim x', - series: '3090', - url: 'https://www.coolmod.com/msi-geforce-rtx-3090-suprim-x-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'pny', - model: 'xlr8 uprising', - series: '3090', - url: 'https://www.coolmod.com/pny-geforce-rtx-3090-xlr8-gaming-epic-x-rgb-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'pny', - model: 'xlr8 revel', - series: '3090', - url: 'https://www.coolmod.com/pny-geforce-rtx-3090-xlr8-gaming-epic-x-rgb-24gb-gddr6x-tarjeta-grafica_76404-precio', - }, - { - brand: 'zotac', - model: 'trinity oc', - series: '3090', - url: 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3090-trinity-oc-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3090', - url: 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3090-amp-core-holo-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'zotac', - model: 'articstorm', - series: '3090', - url: 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3090-arcticstorm-24gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'zotac', - model: 'trinity', - series: '3090', - url: 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3090-trinity-24gb-gddr6x-tarjeta-grafica-precio', - }, - // 3080ti - { - brand: 'asus', - model: 'strix', - series: '3080ti', - url: 'https://www.coolmod.com/asus-rog-strix-geforce-rtx-3080-ti-gaming-oc-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'evga', - model: 'xc3 black', - series: '3080ti', - url: 'https://www.coolmod.com/evga-geforce-rtx-3080-ti-xc3-black-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'evga', - model: 'xc3', - series: '3080ti', - url: 'https://www.coolmod.com/evga-geforce-rtx-3080-ti-xc3-gaming-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'evga', - model: 'ftw3', - series: '3080ti', - url: 'https://www.coolmod.com/evga-geforce-rtx-3080-ti-ftw3-gaming-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'evga', - model: 'ftw3 ultra', - series: '3080ti', - url: 'https://www.coolmod.com/evga-geforce-rtx-3080-ti-ftw3-ultra-gaming-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'gigabyte', - model: 'gaming oc', - series: '3080ti', - url: 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-ti-gaming-oc-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'gigabyte', - model: 'vision oc', - series: '3080ti', - url: 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-ti-vision-oc-12gb-gddr6x-tarjeta-grafica_81994-precio', - }, - { - brand: 'gigabyte', - model: 'eagle oc', - series: '3080ti', - url: 'https://www.coolmod.com/gigabyte-geforce-rtx-3080-ti-eagle-oc-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'gigabyte', - model: 'aorus xtreme', - series: '3080ti', - url: 'https://www.coolmod.com/gigabyte-aorus-geforce-rtx-3080-ti-xtreme-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'inno3d', - model: 'ichill x4', - series: '3080ti', - url: 'https://www.coolmod.com/inno3d-geforce-rtx-3080-ti-ichill-x4-12gb-gddr6x-tarjeta-grafica_81785-precio', - }, - { - brand: 'inno3d', - model: 'x3 oc', - series: '3080ti', - url: 'https://www.coolmod.com/inno3d-geforce-rtx-3080-ti-x3-oc-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'inno3d', - model: 'ichill frostbite', - series: '3080ti', - url: 'https://www.coolmod.com/inno3d-geforce-rtx-3080-ti-ichill-frostbite-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'inno3d', - model: 'x3', - series: '3080ti', - url: 'https://www.coolmod.com/inno3d-geforce-rtx-3080-ti-x3-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'inno3d', - model: 'ichill x3', - series: '3080ti', - url: 'https://www.coolmod.com/inno3d-geforce-rtx-3080-ti-ichill-x3-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'kfa2', - model: 'sg', - series: '3080ti', - url: 'https://www.coolmod.com/kfa2-geforce-rtx-3080-ti-sg-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'kfa2', - model: 'sg oc', - series: '3080ti', - url: 'https://www.coolmod.com/kfa2-geforce-rtx-3080-ti-exg-1-click-oc-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'msi', - model: 'gaming x trio', - series: '3080ti', - url: 'https://www.coolmod.com/msi-geforce-rtx-3080-ti-gaming-x-trio-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'pny', - model: 'xlr8 uprising', - series: '3080ti', - url: 'https://www.coolmod.com/pny-geforce-rtx-3080-ti-xlr8-gaming-uprising-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'palit', - model: 'gaming pro', - series: '3080ti', - url: 'https://www.coolmod.com/palit-geforce-rtx-3080-ti-gamingpro-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'zotac', - model: 'trinity', - series: '3080ti', - url: 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3080-ti-trinity-triple-fan-12gb-gddr6x-tarjeta-grafica-precio', - }, - { - brand: 'zotac', - model: 'amp holo', - series: '3080ti', - url: 'https://www.coolmod.com/zotac-gaming-geforce-rtx-3080-ti-trinity-amp-holo-12gb-gddr6x-tarjeta-grafica-precio', - }, - // 3080 - { - 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', @@ -428,66 +48,46 @@ export const Coolmod: Store = { 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', + country: 'ES', + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '.productInfo.itemFiltered', + sitePrefix: 'https://www.coolmod.com/', + titleSelector: '.productName a', + }), + ttl: 1, + waitForSelector: '.productInfo.itemFiltered', + urls: [ + { + series: '3060', + url: 'https://www.coolmod.com/tarjetas-graficas/appliedfilters/9678', + }, + { + series: '3060ti', + url: 'https://www.coolmod.com/tarjetas-graficas/appliedfilters/9674', + }, + { + series: '3070', + url: 'https://www.coolmod.com/tarjetas-graficas/appliedfilters/9675', + }, + { + series: '3070ti', + url: 'https://www.coolmod.com/tarjetas-graficas/appliedfilters/9727', + }, + { + series: '3080', + url: 'https://www.coolmod.com/tarjetas-graficas/appliedfilters/9676', + }, + { + series: '3080ti', + url: 'https://www.coolmod.com/tarjetas-graficas/appliedfilters/9728', + }, + { + series: '3090', + url: 'https://www.coolmod.com/tarjetas-graficas/appliedfilters/8557', + }, + ], + }, }; diff --git a/src/store/model/corsair-uk.ts b/src/store/model/corsair-uk.ts index 0fca6ef770..b76ec6a5b1 100644 --- a/src/store/model/corsair-uk.ts +++ b/src/store/model/corsair-uk.ts @@ -39,4 +39,5 @@ export const CorsairUK: Store = { }, ], name: 'corsair-uk', + country: 'UK', }; diff --git a/src/store/model/corsair.ts b/src/store/model/corsair.ts index b360a189ea..4d924fcaed 100644 --- a/src/store/model/corsair.ts +++ b/src/store/model/corsair.ts @@ -33,4 +33,5 @@ export const Corsair: Store = { }, ], name: 'corsair', + country: 'US', }; diff --git a/src/store/model/cpl.ts b/src/store/model/cpl.ts index 3af45bf720..7c6b8eab76 100644 --- a/src/store/model/cpl.ts +++ b/src/store/model/cpl.ts @@ -132,4 +132,5 @@ export const Cpl: Store = { }, ], name: 'cpl', + country: 'AU', }; diff --git a/src/store/model/currys.ts b/src/store/model/currys.ts index 7af054db7f..e39aa993f5 100644 --- a/src/store/model/currys.ts +++ b/src/store/model/currys.ts @@ -116,5 +116,6 @@ export const Currys: Store = { ], }, name: 'currys', + country: 'UK', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/cyberport-at.ts b/src/store/model/cyberport-at.ts index 3b6a52b698..e760971598 100644 --- a/src/store/model/cyberport-at.ts +++ b/src/store/model/cyberport-at.ts @@ -121,4 +121,5 @@ export const CyberportAt: Store = { }, ], name: 'cyberport-at', + country: 'AT', }; diff --git a/src/store/model/cyberport.ts b/src/store/model/cyberport.ts index 363767cb81..de7cec4039 100644 --- a/src/store/model/cyberport.ts +++ b/src/store/model/cyberport.ts @@ -95,6 +95,54 @@ export const Cyberport: Store = { series: '3080', url: 'https://www.cyberport.de?DEEP=2E13-1H7', }, + { + brand: 'asus', + model: 'dual', + series: 'rx6700xt', + url: 'https://www.cyberport.de?DEEP=2E07-A0A', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6700xt', + url: 'https://www.cyberport.de?DEEP=2E07-A08', + }, + { + brand: 'gigabyte', + model: 'aorus elite', + series: 'rx6700xt', + url: 'https://www.cyberport.de?DEEP=2E21-326', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: 'rx6700xt', + url: 'https://www.cyberport.de?DEEP=2E21-324', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6700xt', + url: 'https://www.cyberport.de?DEEP=2E21-325', + }, + { + brand: 'msi', + model: 'gaming x', + series: 'rx6700xt', + url: 'https://www.cyberport.de?DEEP=2E12-3FZ', + }, + { + brand: 'msi', + model: 'mech 2x oc', + series: 'rx6700xt', + url: 'https://www.cyberport.de?DEEP=2E12-3G0', + }, + { + brand: 'sapphire', + model: 'pulse oc', + series: 'rx6700xt', + url: 'https://www.cyberport.de?DEEP=2E01-7JQ', + }, { brand: 'amd', model: '5600x', @@ -121,4 +169,5 @@ export const Cyberport: Store = { }, ], name: 'cyberport', + country: 'DE', }; diff --git a/src/store/model/dcomp.ts b/src/store/model/dcomp.ts index 6c8d66a369..8727a33af1 100644 --- a/src/store/model/dcomp.ts +++ b/src/store/model/dcomp.ts @@ -218,4 +218,5 @@ export const Dcomp: Store = { }, ], name: 'dcomp', + country: 'AU', }; diff --git a/src/store/model/drako.ts b/src/store/model/drako.ts index d9169307ac..cb32462754 100644 --- a/src/store/model/drako.ts +++ b/src/store/model/drako.ts @@ -241,5 +241,6 @@ export const Drako: Store = { }, ], name: 'drako', + country: 'IT', successStatusCodes: [[0, 399], 404], }; diff --git a/src/store/model/dustinhome-no.ts b/src/store/model/dustinhome-no.ts index 6c5be2c819..446d6e0412 100644 --- a/src/store/model/dustinhome-no.ts +++ b/src/store/model/dustinhome-no.ts @@ -73,4 +73,5 @@ export const DustinHomeNO: Store = { }, ], name: 'dustinhome-no', + country: 'NO', }; diff --git a/src/store/model/ebuyer.ts b/src/store/model/ebuyer.ts index 1a0cdc5964..154c24d4cd 100644 --- a/src/store/model/ebuyer.ts +++ b/src/store/model/ebuyer.ts @@ -120,5 +120,6 @@ export const Ebuyer: Store = { ], }, name: 'ebuyer', + country: 'UK', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/elcorteingles.ts b/src/store/model/elcorteingles.ts index bf4a4fdd63..5a7eae5062 100644 --- a/src/store/model/elcorteingles.ts +++ b/src/store/model/elcorteingles.ts @@ -67,4 +67,5 @@ export const Elcorteingles: Store = { }, ], name: 'elcorteingles', + country: 'ES', }; diff --git a/src/store/model/eletronicamente.ts b/src/store/model/eletronicamente.ts index 18516ffc4d..8b1ffa9723 100644 --- a/src/store/model/eletronicamente.ts +++ b/src/store/model/eletronicamente.ts @@ -134,4 +134,5 @@ export const Eletronicamente: Store = { }, ], name: 'eletronicamente', + country: 'ES', }; diff --git a/src/store/model/elkjop.ts b/src/store/model/elkjop.ts index d7a5ab8b20..1e043cfd75 100644 --- a/src/store/model/elkjop.ts +++ b/src/store/model/elkjop.ts @@ -194,6 +194,63 @@ export const Elkjop: Store = { 'https://www.elkjop.no/INTERSHOP/web/WFS/store-elkjop-Site/no_NO/-/NOK/ViewCart-AddProductByAjax?SKU=275719&Quantity=1&AddToCart=true', url: 'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/275719/msi-geforce-rtx-3080-suprim-x-10-gb-grafikkort', }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060', + cartUrl: + 'https://www.elkjop.no/INTERSHOP/web/WFS/store-elkjop-Site/no_NO/-/NOK/ViewCart-AddProductByAjax?SKU=293925&Quantity=1&AddToCart=true', + url: 'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/293925/msi-rtx-3060-gaming-x-trio-12gb-graphics-card', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3070', + cartUrl: + 'https://www.elkjop.no/INTERSHOP/web/WFS/store-elkjop-Site/no_NO/-/NOK/ViewCart-AddProductByAjax?SKU=275718&Quantity=1&AddToCart=true', + url: 'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/275718/msi-geforce-rtx-3070-suprim-x-8-gb-grafikkort', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + cartUrl: + 'https://www.elkjop.no/INTERSHOP/web/WFS/store-elkjop-Site/no_NO/-/NOK/ViewCart-AddProductByAjax?SKU=216110&Quantity=1&AddToCart=true', + url: 'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/216110/gigabyte-geforce-rtx-3090-24gb-gaming-oc', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3070', + cartUrl: + 'https://www.elkjop.no/INTERSHOP/web/WFS/store-elkjop-Site/no_NO/-/NOK/ViewCart-AddProductByAjax?SKU=252773&Quantity=1&AddToCart=true', + url: 'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/252773/gigabyte-geforce-rtx-3070-vision-oc-8gb', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3070', + cartUrl: + 'https://www.elkjop.no/INTERSHOP/web/WFS/store-elkjop-Site/no_NO/-/NOK/ViewCart-AddProductByAjax?SKU=252824&Quantity=1&AddToCart=true', + url: 'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/252824/gigabyte-geforce-rtx-3070-aorus-master-8gb', + }, + { + brand: 'gainward', + model: 'phantom gs', + series: '3090', + cartUrl: + 'https://www.elkjop.no/INTERSHOP/web/WFS/store-elkjop-Site/no_NO/-/NOK/ViewCart-AddProductByAjax?SKU=266679&Quantity=1&AddToCart=true', + url: 'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/266679/geforce-rtx-3090-phantom gs', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060', + cartUrl: + 'https://www.elkjop.no/INTERSHOP/web/WFS/store-elkjop-Site/no_NO/-/NOK/ViewCart-AddProductByAjax?SKU=293922&Quantity=1&AddToCart=true', + url: 'https://www.elkjop.no/product/data/pc-komponenter/grafikkort/293922/asus-geforce-rtx-3060-tuf-12gb-graphics-card', + }, ], name: 'elkjop', + country: 'NO', }; diff --git a/src/store/model/eprice.ts b/src/store/model/eprice.ts index 0f1ee0cf73..44a82e062a 100644 --- a/src/store/model/eprice.ts +++ b/src/store/model/eprice.ts @@ -85,4 +85,5 @@ export const Eprice: Store = { }, ], name: 'eprice', + country: 'IT', }; diff --git a/src/store/model/equippr.ts b/src/store/model/equippr.ts index 4264c12755..fe872ec880 100644 --- a/src/store/model/equippr.ts +++ b/src/store/model/equippr.ts @@ -1,4 +1,5 @@ import {Store} from './store'; +import {getProductLinksBuilder} from './helpers/card'; export const Equippr: Store = { currency: '€', @@ -89,6 +90,51 @@ export const Equippr: Store = { series: '3080', url: 'https://www.equippr.de/evga-geforce-rtx-3080-xc3-gaming-10-gb-gddr6x-retail-2061391.html', }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6700xt', + url: 'https://www.equippr.de/asus-radeon-rx-6700-xt-rog-strix-oc-12-gb-gddr6-retail-2072469.html', + }, ], name: 'equippr', + country: 'DE', + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '.product--box', + sitePrefix: 'https://www.equippr.de/', + titleSelector: 'a.product--title', + }), + ttl: 1, + urls: [ + { + series: '3060', + url: 'https://www.equippr.de/computer-elektronik/pc-komponenten/grafikkarten/nvidia-geforce-rtx/?p=1&o=8&n=120&f=67374', + }, + { + series: '3060ti', + url: 'https://www.equippr.de/computer-elektronik/pc-komponenten/grafikkarten/nvidia-geforce-rtx/?p=1&o=8&n=120&f=66256', + }, + { + series: '3070', + url: 'https://www.equippr.de/computer-elektronik/pc-komponenten/grafikkarten/nvidia-geforce-rtx/?p=1&o=8&n=120&f=66230', + }, + { + series: '3070ti', + url: 'https://www.equippr.de/computer-elektronik/pc-komponenten/grafikkarten/nvidia-geforce-rtx/?p=1&o=8&n=120&f=69119', + }, + { + series: '3080', + url: 'https://www.equippr.de/computer-elektronik/pc-komponenten/grafikkarten/nvidia-geforce-rtx/?p=1&o=8&n=120&f=66221', + }, + { + series: '3080ti', + url: 'https://www.equippr.de/computer-elektronik/pc-komponenten/grafikkarten/nvidia-geforce-rtx/?p=1&o=8&n=120&f=69117', + }, + { + series: '3090', + url: 'https://www.equippr.de/computer-elektronik/pc-komponenten/grafikkarten/nvidia-geforce-rtx/?p=1&o=8&n=120&f=66208', + }, + ], + }, }; diff --git a/src/store/model/euronics-de.ts b/src/store/model/euronics-de.ts index bc14bca4d8..8713eb24a3 100644 --- a/src/store/model/euronics-de.ts +++ b/src/store/model/euronics-de.ts @@ -53,4 +53,5 @@ export const EuronicsDE: Store = { }, ], name: 'euronics-de', + country: 'DE', }; diff --git a/src/store/model/euronics.ts b/src/store/model/euronics.ts index 1ee308b26b..57b55f5ddb 100644 --- a/src/store/model/euronics.ts +++ b/src/store/model/euronics.ts @@ -35,4 +35,5 @@ export const Euronics: Store = { }, ], name: 'euronics', + country: 'IT', }; diff --git a/src/store/model/evatech.ts b/src/store/model/evatech.ts index 5540c380f2..900858db4d 100644 --- a/src/store/model/evatech.ts +++ b/src/store/model/evatech.ts @@ -98,4 +98,5 @@ export const Evatech: Store = { }, ], name: 'evatech', + country: 'AU', }; diff --git a/src/store/model/evga-eu.ts b/src/store/model/evga-eu.ts index 8d22d7a9a3..7dbd3ca597 100644 --- a/src/store/model/evga-eu.ts +++ b/src/store/model/evga-eu.ts @@ -71,4 +71,5 @@ export const EvgaEu: Store = { }, ], name: 'evga-eu', + country: 'EU', }; diff --git a/src/store/model/evga.ts b/src/store/model/evga.ts index 14832eaf06..67936ee6d6 100644 --- a/src/store/model/evga.ts +++ b/src/store/model/evga.ts @@ -119,4 +119,5 @@ export const Evga: Store = { }, ], name: 'evga', + country: 'US', }; diff --git a/src/store/model/expert.ts b/src/store/model/expert.ts index 6e20d5791c..040f37d6ed 100644 --- a/src/store/model/expert.ts +++ b/src/store/model/expert.ts @@ -53,4 +53,5 @@ export const Expert: Store = { }, ], name: 'expert', + country: 'DE', }; diff --git a/src/store/model/futurex.ts b/src/store/model/futurex.ts index e1d0803cdb..89e582d2e8 100644 --- a/src/store/model/futurex.ts +++ b/src/store/model/futurex.ts @@ -61,6 +61,25 @@ export const Futurex: Store = { series: '3080', url: 'https://www.equippr.de/zotac-geforce-rtx-3080-trinity-10-gb-gddr6x-retail-2060389.html', }, + { + brand: 'gigabyte', + model: 'aorus elite', + series: 'rx6700xt', + url: 'https://www.future-x.de/gigabyte-radeon-rx6700xt-aorus-elite-12gb-gddr6-2xhdmi-2xd-12288-mb-p-8808313', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: 'rx6700xt', + url: 'https://www.future-x.de/gigabyte-radeon-rx-6700-xt-gaming-oc-12gb-gddr6-2xdp-1xhdmi-grafikkarte-12288-mb-p-8787855/', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6700xt', + url: 'https://www.future-x.de/sapphire-amd-radeon-rx-6700-xt-gaming-oc-12gb-gddr6-hdmi-12288-mb-p-8808436/', + }, ], name: 'futurex', + country: 'DE', }; diff --git a/src/store/model/galaxus.ts b/src/store/model/galaxus.ts index 8a1b65c208..92e9082e93 100644 --- a/src/store/model/galaxus.ts +++ b/src/store/model/galaxus.ts @@ -55,6 +55,55 @@ export const Galaxus: Store = { series: 'ryzen5950', url: 'https://www.galaxus.de/de/product/13987916', }, + { + brand: 'amd', + model: '5950x', + series: 'ryzen5950', + url: 'https://www.galaxus.de/de/product/13987916', + }, + { + brand: 'asrock', + model: 'challenger', + series: 'rx6700xt', + url: 'https://www.galaxus.de/de/product/15816697', + }, + { + brand: 'asrock', + model: 'phantom gaming oc', + series: 'rx6700xt', + url: 'https://www.galaxus.de/de/product/15948741', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6700xt', + url: 'https://www.galaxus.de/de/product/15300561', + }, + { + brand: 'gigabyte', + model: 'aorus elite', + series: 'rx6700xt', + url: 'https://www.galaxus.de/de/product/15301182', + }, + { + brand: 'msi', + model: 'mech 2x oc', + series: 'rx6700xt', + url: 'https://www.galaxus.de/de/product/15301319', + }, + { + brand: 'sapphire', + model: 'nitro+ oc', + series: 'rx6700xt', + url: 'https://www.galaxus.de/de/product/15059558', + }, + { + brand: 'sapphire', + model: 'pulse', + series: 'rx6700xt', + url: 'https://www.galaxus.de/de/product/15059559', + }, ], name: 'galaxus', + country: 'DE', }; diff --git a/src/store/model/game-es.ts b/src/store/model/game-es.ts index 39c4ccafa9..e5fb5fcac1 100644 --- a/src/store/model/game-es.ts +++ b/src/store/model/game-es.ts @@ -165,4 +165,5 @@ export const GameES: Store = { }, ], name: 'game-es', + country: 'ES', }; diff --git a/src/store/model/game.ts b/src/store/model/game.ts index 49a2cbd685..fd124fa156 100644 --- a/src/store/model/game.ts +++ b/src/store/model/game.ts @@ -49,4 +49,5 @@ export const Game: Store = { }, ], name: 'game', + country: 'UK', }; diff --git a/src/store/model/ebgames.ts b/src/store/model/gamestop-ca.ts similarity index 63% rename from src/store/model/ebgames.ts rename to src/store/model/gamestop-ca.ts index 5e57a83ccd..47c907cbfe 100644 --- a/src/store/model/ebgames.ts +++ b/src/store/model/gamestop-ca.ts @@ -1,6 +1,6 @@ import {Store} from './store'; -export const EbGames: Store = { +export const GamestopCA: Store = { currency: '$', labels: { maxPrice: { @@ -16,32 +16,33 @@ export const EbGames: Store = { brand: 'test:brand', model: 'test:model', series: 'test:series', - url: 'https://www.ebgames.ca/Switch/Games/727918/mario-kart-8-deluxe', + url: 'https://www.gamestop.ca/Switch/Games/727918/mario-kart-8-deluxe', }, { brand: 'sony', model: 'ps5 console', series: 'sonyps5c', - url: 'https://www.ebgames.ca/PS5/Games/877522', + url: 'https://www.gamestop.ca/PS5/Games/877522', }, { brand: 'sony', model: 'ps5 digital', series: 'sonyps5de', - url: 'https://www.ebgames.ca/PS5/Games/877523', + url: 'https://www.gamestop.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', + url: 'https://www.gamestop.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', + url: 'https://www.gamestop.ca/Xbox%20Series%20X/Games/877780/xbox-series-s', }, ], - name: 'ebgames', + name: 'gamestop-ca', + country: 'CA', }; diff --git a/src/store/model/gamestop-de.ts b/src/store/model/gamestop-de.ts index 63a5513ab4..bd7a8875bb 100644 --- a/src/store/model/gamestop-de.ts +++ b/src/store/model/gamestop-de.ts @@ -37,5 +37,6 @@ export const GamestopDE: Store = { }, ], name: 'gamestop-de', + country: 'DE', successStatusCodes: [[0, 399], 404], }; diff --git a/src/store/model/gamestop-ie.ts b/src/store/model/gamestop-ie.ts index 1230351753..383913f395 100644 --- a/src/store/model/gamestop-ie.ts +++ b/src/store/model/gamestop-ie.ts @@ -26,4 +26,5 @@ export const GamestopIE: Store = { }, ], name: 'gamestop-ie', + country: 'IE', }; diff --git a/src/store/model/gamestop-it.ts b/src/store/model/gamestop-it.ts index cec223085c..c9ae510061 100644 --- a/src/store/model/gamestop-it.ts +++ b/src/store/model/gamestop-it.ts @@ -31,4 +31,5 @@ export const GamestopIT: Store = { }, ], name: 'gamestop-it', + country: 'IT', }; diff --git a/src/store/model/gamestop.ts b/src/store/model/gamestop.ts index 4d1a3014f1..ad757e308d 100644 --- a/src/store/model/gamestop.ts +++ b/src/store/model/gamestop.ts @@ -139,5 +139,6 @@ export const Gamestop: Store = { }, ], name: 'gamestop', + country: 'US', successStatusCodes: [[0, 399], 404], }; diff --git a/src/store/model/globaldata.ts b/src/store/model/globaldata.ts index 00ee86ce4f..88ccdbb0c8 100644 --- a/src/store/model/globaldata.ts +++ b/src/store/model/globaldata.ts @@ -497,5 +497,6 @@ export const Globaldata: Store = { }, ], name: 'globaldata', + country: 'PT', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/hardware-planet.ts b/src/store/model/hardware-planet.ts index 16f1f52fbc..e2dbddc49b 100644 --- a/src/store/model/hardware-planet.ts +++ b/src/store/model/hardware-planet.ts @@ -1,5 +1,5 @@ -import {Store} from './store'; import {getProductLinksBuilder} from './helpers/card'; +import {Store} from './store'; export const HardwarePlanet: Store = { backoffStatusCodes: [404, 429, 503], @@ -10,7 +10,7 @@ export const HardwarePlanet: Store = { text: ['Aggiungi al carrello'], }, maxPrice: { - container: '.product-price', + container: '..current-price > span', euroFormat: true, }, outOfStock: { @@ -23,7 +23,7 @@ export const HardwarePlanet: Store = { 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', + url: 'https://www.hardware-planet.it/cavi-per-ventole/74819-vendita-cavi-per-ventole-inline-cavo-alimentazione-6x-ventola-3pin-da-1x-3pin-femmina-35mainboard-supporta-6-ventole-offerta-del-mese-33436-4043718149780.html', }, { brand: 'amd', @@ -46,25 +46,42 @@ export const HardwarePlanet: Store = { ], linksBuilder: { builder: getProductLinksBuilder({ - productsSelector: '.js-product-miniature-wrapper', + productsSelector: '.horizontal_mode .js-product-miniature', sitePrefix: 'https://www.hardware-planet.it', - titleSelector: '.product-title > a', + titleSelector: '.product_name > a', }), urls: [ { series: '3060ti', - url: 'https://www.hardware-planet.it/module/iqitsearch/searchiqit?s=rtx+3060', + url: 'https://www.hardware-planet.it/55-schede-video-nvidia?q=Processore+grafico-GeForce+RTX+3060+Ti', + }, + { + series: '3080', + url: 'https://www.hardware-planet.it/55-schede-video-nvidia?q=Processore+grafico-GeForce+RTX+3080', }, { - series: '3070', - url: 'https://www.hardware-planet.it/module/iqitsearch/searchiqit?s=rtx+3070', + series: '3080ti', + url: 'https://www.hardware-planet.it/55-schede-video-nvidia?q=Processore+grafico-GeForce+RTX+3080+Ti', }, { - series: '3080', - url: 'https://www.hardware-planet.it/module/iqitsearch/searchiqit?s=rtx+3080', + series: '3090', + url: 'https://www.hardware-planet.it/55-schede-video-nvidia?q=Processore+grafico-GeForce+RTX+3090', + }, + { + series: 'rx6700xt', + url: 'https://www.hardware-planet.it/54-schede-video-ati-amd?q=Processore+grafico-Radeon+RX+6700+XT', + }, + { + series: 'rx6800xt', + url: 'https://www.hardware-planet.it/54-schede-video-ati-amd?q=Processore+grafico-Radeon+RX+6800+XT', + }, + { + series: 'rx6900xt', + url: 'https://www.hardware-planet.it/54-schede-video-ati-amd?q=Processore+grafico-Radeon+RX+6900+XT', }, ], }, name: 'hardware-planet', + country: 'IT', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/harristechnology.ts b/src/store/model/harristechnology.ts index 707f466343..3b862655a3 100644 --- a/src/store/model/harristechnology.ts +++ b/src/store/model/harristechnology.ts @@ -48,4 +48,5 @@ export const HarrisTechnology: Store = { }, ], name: 'harristechnology', + country: 'AU', }; diff --git a/src/store/model/harveynorman-ie.ts b/src/store/model/harveynorman-ie.ts index 511364f405..99ac9fae1b 100644 --- a/src/store/model/harveynorman-ie.ts +++ b/src/store/model/harveynorman-ie.ts @@ -25,5 +25,6 @@ export const HarveyNormanIE: Store = { }, ], name: 'harveynorman-ie', + country: 'IE', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/helpers/card.ts b/src/store/model/helpers/card.ts index 106976e10f..c0e21fd836 100644 --- a/src/store/model/helpers/card.ts +++ b/src/store/model/helpers/card.ts @@ -14,7 +14,7 @@ interface LinksBuilderOptions { urlSelector?: string; } -const isPartialUrlRegExp = /^\/[^/]/i; +const isPartialUrlRegExp = /^(?!https?:).*/i; export function getProductLinksBuilder(options: LinksBuilderOptions) { return (docElement: cheerio.Cheerio, series: Series): Link[] => { diff --git a/src/store/model/igame.ts b/src/store/model/igame.ts index 66de3fef94..ba08479815 100644 --- a/src/store/model/igame.ts +++ b/src/store/model/igame.ts @@ -82,4 +82,5 @@ export const Igamecomputer: Store = { }, ], name: 'igame-computer', + country: 'AU', }; diff --git a/src/store/model/index.ts b/src/store/model/index.ts index d758476658..a7a412db70 100644 --- a/src/store/model/index.ts +++ b/src/store/model/index.ts @@ -1,8 +1,6 @@ import {config, defaultStoreData} from '../../config'; + import {AComPC} from './acompc'; -import {Ldlc} from './ldlc'; -import {LdlcEs} from './ldlc-es'; -import {Materiel} from './materiel'; import {Adorama} from './adorama'; import {Akinformatica} from './akinformatica'; import {Allneeds} from './allneeds'; @@ -63,7 +61,6 @@ import {CyberportAt} from './cyberport-at'; import {Dcomp} from './dcomp'; import {Drako} from './drako'; import {DustinHomeNO} from './dustinhome-no'; -import {EbGames} from './ebgames'; import {Ebuyer} from './ebuyer'; import {Elcorteingles} from './elcorteingles'; import {Eletronicamente} from './eletronicamente'; @@ -81,6 +78,7 @@ import {Galaxus} from './galaxus'; import {Game} from './game'; import {GameES} from './game-es'; import {Gamestop} from './gamestop'; +import {GamestopCA} from './gamestop-ca'; import {GamestopDE} from './gamestop-de'; import {GamestopIE} from './gamestop-ie'; import {GamestopIT} from './gamestop-it'; @@ -92,15 +90,22 @@ import {Igamecomputer} from './igame'; import {JohnLewis} from './johnlewis'; import {Kabum} from './kabum'; import {KomplettNO} from './komplett-no'; +import {Ldlc} from './ldlc'; +import {LdlcEs} from './ldlc-es'; +import {LDLCItaly} from './ldlc-italy'; import {LandmarkComputers} from './lmc'; +import {Materiel} from './materiel'; import {Mediamarkt} from './mediamarkt'; import {MediamarktAt} from './mediamarkt-at'; import {Medimax} from './medimax'; import {Megekko} from './megekko'; import {MemoryExpress} from './memoryexpress'; import {MicroCenter} from './microcenter'; +import {Microsoft} from './microsoft'; +import {MicrosoftCA} from './microsoft-ca'; import {MightyApe} from './mightyape'; import {Mindfactory} from './mindfactory'; +import {MSI} from './msi'; import {Msy} from './msy'; import {Multicom} from './multicom'; import {Mwave} from './mwave'; @@ -152,8 +157,10 @@ import {TescoIE} from './tesco-ie'; import {TheWarehouse} from './thewarehouse'; import {TopAchat} from './topachat'; import {ToysRUs} from './toysrus'; +import {Ubiquiti} from './ubiquiti'; import {Umart} from './umart'; import {Unieuro} from './unieuro'; +import {UltimaInformatica} from './utlimainformatica'; import {Very} from './very'; import {VsGamers} from './vsgamers'; import {Vuugo} from './vuugo'; @@ -162,11 +169,11 @@ import {WalmartCa} from './walmart-ca'; import {WellsTechnology} from './wellstechnology'; import {Wipoid} from './wipoid'; import {Xbox} from './xbox'; +import {XtremMedia} from './xtremmedia'; import {Zotac} from './zotac'; -import {logger} from '../../logger'; + import chalk from 'chalk'; -import {UltimaInformatica} from './utlimainformatica'; -import {XtremMedia} from './xtremmedia'; +import {logger} from '../../logger'; export const storeList = new Map([ [AComPC.name, AComPC], @@ -230,7 +237,6 @@ export const storeList = new Map([ [Dcomp.name, Dcomp], [Drako.name, Drako], [DustinHomeNO.name, DustinHomeNO], - [EbGames.name, EbGames], [Ebuyer.name, Ebuyer], [Elcorteingles.name, Elcorteingles], [Eletronicamente.name, Eletronicamente], @@ -248,6 +254,7 @@ export const storeList = new Map([ [Game.name, Game], [GameES.name, GameES], [Gamestop.name, Gamestop], + [GamestopCA.name, GamestopCA], [GamestopDE.name, GamestopDE], [GamestopIE.name, GamestopIE], [GamestopIT.name, GamestopIT], @@ -260,17 +267,21 @@ export const storeList = new Map([ [Kabum.name, Kabum], [KomplettNO.name, KomplettNO], [LandmarkComputers.name, LandmarkComputers], + [Ldlc.name, Ldlc], + [LdlcEs.name, LdlcEs], + [LDLCItaly.name, LDLCItaly], + [Materiel.name, Materiel], [Mediamarkt.name, Mediamarkt], [MediamarktAt.name, MediamarktAt], [Medimax.name, Medimax], [Megekko.name, Megekko], - [Ldlc.name, Ldlc], - [LdlcEs.name, LdlcEs], - [Materiel.name, Materiel], [MemoryExpress.name, MemoryExpress], [MicroCenter.name, MicroCenter], + [Microsoft.name, Microsoft], + [MicrosoftCA.name, MicrosoftCA], [MightyApe.name, MightyApe], [Mindfactory.name, Mindfactory], + [MSI.name, MSI], [Msy.name, Msy], [Multicom.name, Multicom], [Mwave.name, Mwave], @@ -321,9 +332,10 @@ export const storeList = new Map([ [TheWarehouse.name, TheWarehouse], [TopAchat.name, TopAchat], [ToysRUs.name, ToysRUs], + [Ubiquiti.name, Ubiquiti], + [UltimaInformatica.name, UltimaInformatica], [Umart.name, Umart], [Unieuro.name, Unieuro], - [UltimaInformatica.name, UltimaInformatica], [Very.name, Very], [VsGamers.name, VsGamers], [Vuugo.name, Vuugo], @@ -463,6 +475,14 @@ export function getAllModels() { return [...models]; } +export function getAllCountries() { + return Array.from( + new Set( + [...storeList].map(storeInfo => storeInfo[1]).map(store => store.country) + ) + ).sort(); +} + export function getStores() { return stores; } diff --git a/src/store/model/johnlewis.ts b/src/store/model/johnlewis.ts index e439df205c..7b8bfe5a29 100644 --- a/src/store/model/johnlewis.ts +++ b/src/store/model/johnlewis.ts @@ -23,4 +23,5 @@ export const JohnLewis: Store = { }, ], name: 'johnlewis', + country: 'UK', }; diff --git a/src/store/model/kabum.ts b/src/store/model/kabum.ts index 917958f381..36de0fa940 100644 --- a/src/store/model/kabum.ts +++ b/src/store/model/kabum.ts @@ -169,4 +169,5 @@ export const Kabum: Store = { }, ], name: 'kabum', + country: 'BR', }; diff --git a/src/store/model/komplett-no.ts b/src/store/model/komplett-no.ts index 05ae120bfe..4e2cb17399 100644 --- a/src/store/model/komplett-no.ts +++ b/src/store/model/komplett-no.ts @@ -250,12 +250,6 @@ export const KomplettNO: Store = { series: '3090', url: 'https://www.komplett.no/product/1168127', }, - { - brand: 'asus', - model: 'ekwb', - series: '3070', - url: 'https://www.komplett.no/product/1174234', - }, { brand: 'asus', model: 'tuf oc', @@ -354,7 +348,7 @@ export const KomplettNO: Store = { }, { brand: 'gainward', - model: 'phantom gs', + model: 'phoenix', series: '3060', url: 'https://www.komplett.no/product/1180413/', }, @@ -670,6 +664,97 @@ export const KomplettNO: Store = { series: '3060ti', url: 'https://www.komplett.no/product/1175535/', }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3070', + url: 'https://www.komplett.no/product/1168377/', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3060', + url: 'https://www.komplett.no/product/1182236/', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3060', + url: 'https://www.komplett.no/product/1180870/', + }, + { + brand: 'msi', + model: 'gaming x', + series: '3060', + url: 'https://www.komplett.no/product/1179438/', + }, + { + brand: 'msi', + model: 'dual', + series: '3060', + url: 'https://www.komplett.no/product/1179340/', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.komplett.no/product/1176248/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3090', + url: 'https://www.komplett.no/product/1175706/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3080', + url: 'https://www.komplett.no/product/1175704/', + }, + { + brand: 'asus', + model: 'ekwb', + series: '3080', + url: 'https://www.komplett.no/product/1174235/', + }, + { + brand: 'gainward', + model: 'phantom gs', + series: '3090', + url: 'https://www.komplett.no/product/1171803/', + }, + { + brand: 'palit', + model: 'gamerock', + series: '3080', + url: 'https://www.komplett.no/product/1171800/', + }, + { + brand: 'gainward', + model: 'phantom gs', + series: '3090', + url: 'https://www.komplett.no/product/1171799/', + }, + { + brand: 'palit', + model: 'gamerock oc', + series: '3080', + url: 'https://www.komplett.no/product/1171797/', + }, + { + brand: 'gainward', + model: 'phoenix gs', + series: '3090', + url: 'https://www.komplett.no/product/1168420/', + }, + { + brand: 'gainward', + model: 'phoenix', + series: '3090', + url: 'https://www.komplett.no/product/1168126/', + }, ], name: 'komplett-no', + country: 'NO', }; diff --git a/src/store/model/ldlc-es.ts b/src/store/model/ldlc-es.ts index a96d84d4bc..a112910ce0 100644 --- a/src/store/model/ldlc-es.ts +++ b/src/store/model/ldlc-es.ts @@ -895,4 +895,5 @@ export const LdlcEs: Store = { }, ], name: 'ldlc-es', + country: 'ES', }; diff --git a/src/store/model/ldlc-italy.ts b/src/store/model/ldlc-italy.ts new file mode 100644 index 0000000000..068ffe0eff --- /dev/null +++ b/src/store/model/ldlc-italy.ts @@ -0,0 +1,83 @@ +import {getProductLinksBuilder} from './helpers/card'; +import {Store} from './store'; + +export const LDLCItaly: Store = { + currency: '€', + labels: { + inStock: { + container: '.stock', + text: ['Disponibile'], + }, + maxPrice: { + container: '.price', + euroFormat: true, + }, + outOfStock: { + container: '.stock', + text: ['Rottura'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.ldlc.com/it-it/scheda/PB00098129.html', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.ldlc.com/it-it/scheda/PB00390450.html', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.ldlc.com/it-it/scheda/PB00390458.html', + }, + ], + linksBuilder: { + builder: getProductLinksBuilder({ + productsSelector: '.pdt-item', + sitePrefix: 'https://www.ldlc.com', + titleSelector: '.title-3 > a[href]', + }), + urls: [ + { + series: '3060', + url: 'https://www.ldlc.com/it-it/informatica/componenti/scheda-video/c4684/+fv1026-5801+fv121-19509.html', + }, + { + series: '3060ti', + url: 'https://www.ldlc.com/it-it/informatica/componenti/scheda-video/c4684/+fv1026-5801+fv121-19365.html', + }, + { + series: '3070', + url: 'https://www.ldlc.com/it-it/informatica/componenti/scheda-video/c4684/+fv1026-5801+fv121-19184.html', + }, + { + series: '3080', + url: 'https://www.ldlc.com/it-it/informatica/componenti/scheda-video/c4684/+fv1026-5801+fv121-19183.html', + }, + { + series: '3090', + url: 'https://www.ldlc.com/it-it/informatica/componenti/scheda-video/c4684/+fv1026-5801+fv121-19185.html', + }, + { + series: 'rx6800', + url: 'https://www.ldlc.com/it-it/informatica/componenti/scheda-video/c4684/+fv1026-5800+fv121-19339.html', + }, + { + series: 'rx6800xt', + url: 'https://www.ldlc.com/it-it/informatica/componenti/scheda-video/c4684/+fv1026-5800+fv121-19340.html', + }, + { + series: 'rx6900xt', + url: 'https://www.ldlc.com/it-it/informatica/componenti/scheda-video/c4684/+fv1026-5800+fv121-19367.html', + }, + ], + }, + name: 'ldlc-it', + country: 'IT', +}; diff --git a/src/store/model/ldlc.ts b/src/store/model/ldlc.ts index cfda382661..d04772fd96 100644 --- a/src/store/model/ldlc.ts +++ b/src/store/model/ldlc.ts @@ -41,6 +41,12 @@ export const Ldlc: Store = { series: '3080', url: 'https://www.ldlc.com/fr-be/fiche/PB00369299.html', }, + { + brand: 'msi', + model: 'ventus 2X (LHR)', + series: '3050', + url: 'https://www.ldlc.com/fiche/PB00480344.html', + }, { brand: 'gigabyte', model: 'gaming oc', @@ -65,6 +71,12 @@ export const Ldlc: Store = { series: '3080', url: 'https://www.ldlc.com/fr-be/fiche/PB00368690.html', }, + { + brand: 'inno3d', + model: 'twin x2', + series: '3050', + url: 'https://www.ldlc.com/fiche/PB00481183.html', + }, { brand: 'palit', model: 'gaming pro', @@ -253,4 +265,5 @@ export const Ldlc: Store = { }, ], name: 'ldlc', + country: 'FR', }; diff --git a/src/store/model/lmc.ts b/src/store/model/lmc.ts index 56d7cf4326..084bf93cab 100644 --- a/src/store/model/lmc.ts +++ b/src/store/model/lmc.ts @@ -32,4 +32,5 @@ export const LandmarkComputers: Store = { }, ], name: 'landmark-computers', + country: 'AU', }; diff --git a/src/store/model/materiel.ts b/src/store/model/materiel.ts index 43a1682ba7..0f4025040a 100644 --- a/src/store/model/materiel.ts +++ b/src/store/model/materiel.ts @@ -143,6 +143,12 @@ export const Materiel: Store = { series: '3060ti', url: 'https://www.materiel.net/produit/202011160036.html', }, + { + brand: 'inno3d', + model: 'twin x2', + series: '3050', + url: 'https://www.materiel.net/produit/202201170090.html', + }, { brand: 'kfa2', model: 'sg oc', @@ -721,4 +727,5 @@ export const Materiel: Store = { }, ], name: 'materiel', + country: 'FR', }; diff --git a/src/store/model/mediamarkt-at.ts b/src/store/model/mediamarkt-at.ts index a5fd580b5e..85221583d6 100644 --- a/src/store/model/mediamarkt-at.ts +++ b/src/store/model/mediamarkt-at.ts @@ -33,6 +33,10 @@ export const MediamarktAt: Store = { container: '#root', text: ['Dieser Artikel ist bald wieder für Sie verfügbar'], }, + { + container: '#root', + text: ['Dieser Artikel ist bald wieder verfügbar'], + }, ], }, links: [ @@ -86,4 +90,5 @@ export const MediamarktAt: Store = { }, ], name: 'mediamarkt-at', + country: 'AT', }; diff --git a/src/store/model/mediamarkt.ts b/src/store/model/mediamarkt.ts index 06ee07712d..6171b8fe6f 100644 --- a/src/store/model/mediamarkt.ts +++ b/src/store/model/mediamarkt.ts @@ -33,6 +33,10 @@ export const Mediamarkt: Store = { container: '#root', text: ['Dieser Artikel ist bald wieder für Sie verfügbar'], }, + { + container: '#root', + text: ['Dieser Artikel ist bald wieder verfügbar'], + }, ], }, links: [ @@ -276,6 +280,48 @@ export const Mediamarkt: Store = { series: '3090', url: 'https://www.mediamarkt.de/de/product/-2683226.html', }, + { + brand: 'asrock', + model: 'phantom gaming oc', + series: 'rx6700xt', + url: 'https://www.mediamarkt.de/de/product/-85340951.html', + }, + { + brand: 'gigabyte', + model: 'aorus elite', + series: 'rx6700xt', + url: 'https://www.mediamarkt.de/de/product/-2728671.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/-2661938.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-playstation%C2%AE5-hd-kamera-2715822.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-ps5-assassins-creed-valhalla-2715828.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-ps5-marvel-s-spider-man-miles-morales-2715827.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-ps5-marvels-spider-man-miles-morales-ultimate-edition-2715826.html', + }, { brand: 'sony', model: 'ps5 console', @@ -306,12 +352,72 @@ export const Mediamarkt: Store = { series: 'sonyps5c', url: 'https://www.mediamarkt.de/de/product/_sony-ps5-marvels-spider-man-miles-morales-ultimate-edition-2715826.html', }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-ps5-ghost-of-tsushima-directors-cut-2757003.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-ps5-ratchet-clank-rift-apart-2741441.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-playstationr5-deathloop-death-stranding-dc-nur-online-2768018.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-playstationr5-death-stranding-directors-cut-nur-online-2765122.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-playstationr5-ghost-of-tsushima-death-stranding-dc-nur-online-2768019.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-playstationr5-2762011.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-playstation%C2%AE5-2661938.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.mediamarkt.de/de/product/_sony-playstation%C2%AE5-dualsense%E2%84%A2-2752998.html', + }, { brand: 'sony', model: 'ps5 digital', series: 'sonyps5de', url: 'https://www.mediamarkt.de/de/product/-2661939.html', }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.mediamarkt.de/de/product/_sony-playstation%C2%AE5-digital-edition-2661939.html', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.mediamarkt.de/de/product/_sony-playstation%C2%AE5-digital-edition-medienfernbedienung-2722423.html', + }, { brand: 'microsoft', model: 'xbox series x', @@ -326,4 +432,5 @@ export const Mediamarkt: Store = { }, ], name: 'mediamarkt', + country: 'DE', }; diff --git a/src/store/model/medimax.ts b/src/store/model/medimax.ts index 8de0f7fb93..430168fd19 100644 --- a/src/store/model/medimax.ts +++ b/src/store/model/medimax.ts @@ -43,4 +43,5 @@ export const Medimax: Store = { }, ], name: 'medimax', + country: 'DE', }; diff --git a/src/store/model/megekko.ts b/src/store/model/megekko.ts index 85e285b72f..2abb66afe3 100644 --- a/src/store/model/megekko.ts +++ b/src/store/model/megekko.ts @@ -157,4 +157,5 @@ export const Megekko: Store = { }, ], name: 'megekko', + country: 'NL', }; diff --git a/src/store/model/memoryexpress.ts b/src/store/model/memoryexpress.ts index 6d6ea3ea8d..af288341c2 100644 --- a/src/store/model/memoryexpress.ts +++ b/src/store/model/memoryexpress.ts @@ -504,5 +504,6 @@ export const MemoryExpress: Store = { }, ], name: 'memoryexpress', + country: 'CA', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/microcenter.ts b/src/store/model/microcenter.ts index fffc6ae380..712217677e 100644 --- a/src/store/model/microcenter.ts +++ b/src/store/model/microcenter.ts @@ -9,6 +9,7 @@ const microCenterLocationToId: Map = new Map([ ['brooklyn', '115'], ['brentwood', '095'], ['cambridge', '121'], + ['charlotte', '175'], ['chicago', '151'], ['columbus', '141'], ['dallas', '131'], @@ -20,6 +21,7 @@ const microCenterLocationToId: Map = new Map([ ['madison-heights', '055'], ['marietta', '041'], ['mayfield-heights', '051'], + ['miami', '185'], ['north-jersey', '075'], ['overland-park', '191'], ['parkville', '125'], @@ -336,6 +338,120 @@ for (const microCenterLocation of microCenterLocations) { series: 'darkhero', url: `https://www.microcenter.com/product/631349/asus-x570-rog-crosshair-viii-dark-hero-amd-am4-atx-motherboard/?storeid=${storeId}`, }, + { + brand: 'asus', + model: 'tuf oc', + series: '4090', + url: `https://www.microcenter.com/product/654070/asus-geforce-rtx%C2%A04090-tuf-gaming-overclocked-triple-fan-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'tuf', + series: '4090', + url: `https://www.microcenter.com/product/659687/asus-geforce-rtx-4090-tuf-gaming-triple-fan-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'msi', + model: 'suprim liquid x', + series: '4090', + url: `https://www.microcenter.com/product/659534/msi-geforce-rtx%C2%A04090-suprim-liquid-x-24g-hybrid-cooling-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'gigabyte', + model: 'windforce', + series: '4090', + url: `https://www.microcenter.com/product/654056/gigabyte-nvidia-geforce-rtx-4090-windforce-triple-fan-24-gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'msi', + model: 'gaming trio', + series: '4090', + url: `https://www.microcenter.com/product/659527/msi-nvidia-geforce-rtx-4090-gaming-trio-triple-fan-24-gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '4090', + url: `https://www.microcenter.com/product/659528/msi-nvidia-geforce-rtx-4090-gaming-x-trio-triple-fan-24-gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'msi', + model: 'suprim x', + series: '4090', + url: `https://www.microcenter.com/product/659533/msi-geforce-rtx%C2%A04090-suprim-x-24g-triple-fan-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'strix oc', + series: '4090', + url: `https://www.microcenter.com/product/654069/asus-nvidia-geforce-rtx-4090-rog-strix-overclocked-triple-fan-24-gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'zotac', + model: 'trinity', + series: '4090', + url: `https://www.microcenter.com/product/659575/zotac-nvidia-geforce-rtx-4090-trinity-triple-fan-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '4090', + url: `https://www.microcenter.com/product/654055/gigabyte-nvidia-geforce-rtx-4090-gaming-overclocked-triple-fan-24-gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'zotac', + model: 'amp airo', + series: '4090', + url: `https://www.microcenter.com/product/659576/zotac-nvidia-geforce-rtx-4090-amp-extreme-airo-triple-fan-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'strix oc white', + series: '4090', + url: `https://www.microcenter.com/product/663068/asus-nvidia-geforce-rtx-4090-rog-strix-white-rgb-overclocked-triple-fan-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce 24g', + series: '4090', + url: `https://www.microcenter.com/product/663237/gigabyte-nvidia-geforce-rtx-4090-xtreme-waterforce-rgb-overclocked-liquid-cooled-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'gigabyte', + model: 'aorus master 24g', + series: '4090', + url: `https://www.microcenter.com/product/663238/gigabyte-nvidia-geforce-rtx-4090-aorus-master-overclocked-triple-fan-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'pny', + model: 'vetro', + series: '4090', + url: `https://www.microcenter.com/product/663856/pny-nvidia-geforce-rtx-4090-verto-triple-fan-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'gigabyte', + model: 'aero oc', + series: '4090', + url: `https://www.microcenter.com/product/664673/gigabyte-nvidia-geforce-rtx-4090-aero-rgb-overclocked-triple-fan-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'gigabyte', + model: 'windforce v2', + series: '4090', + url: `https://www.microcenter.com/product/667906/gigabyte-nvidia-geforce-rtx-4090-windforce-v2-overclocked-triple-fan-24gb-gddr6-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'asus', + model: 'tuf oc', + series: '4090', + url: `https://www.microcenter.com/product/668521/asus-nvidia-geforce-rtx-4090-tuf-gaming-rgb-overclocked-triple-fan-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, + { + brand: 'msi', + model: 'gaming x slim', + series: '4090', + url: `https://www.microcenter.com/product/671031/msi-nvidia-geforce-rtx-4090-gaming-x-slim-overclocked-triple-fan-24gb-gddr6x-pcie-40-graphics-card/?storeid=${storeId}`, + }, ]); } } @@ -358,4 +474,5 @@ export const MicroCenter: Store = { }, links, name: 'microcenter', + country: 'US', }; diff --git a/src/store/model/microsoft-ca.ts b/src/store/model/microsoft-ca.ts new file mode 100644 index 0000000000..69cee6f1d3 --- /dev/null +++ b/src/store/model/microsoft-ca.ts @@ -0,0 +1,37 @@ +import {Store} from './store'; + +export const MicrosoftCA: Store = { + currency: '$', + labels: { + inStock: { + container: 'button[aria-label="Checkout bundle"]', + text: ['Checkout'], + }, + outOfStock: { + container: 'button[aria-label="Checkout bundle"]', + text: ['Out of stock'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.xbox.com/en-ca/configure/8WJ714N3RBTL', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.xbox.com/en-ca/configure/8WJ714N3RBTL', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.xbox.com/en-ca/configure/942J774TP9JN', + }, + ], + name: 'microsoft-ca', + country: 'CA', +}; diff --git a/src/store/model/microsoft.ts b/src/store/model/microsoft.ts new file mode 100644 index 0000000000..a28b6b7456 --- /dev/null +++ b/src/store/model/microsoft.ts @@ -0,0 +1,37 @@ +import {Store} from './store'; + +export const Microsoft: Store = { + currency: '$', + labels: { + inStock: { + container: 'button[aria-label="Checkout bundle"]', + text: ['Checkout'], + }, + outOfStock: { + container: 'button[aria-label="Checkout bundle"]', + text: ['Out of stock'], + }, + }, + links: [ + { + brand: 'test:brand', + model: 'test:model', + series: 'test:series', + url: 'https://www.xbox.com/en-us/configure/8WJ714N3RBTL', + }, + { + brand: 'microsoft', + model: 'xbox series x', + series: 'xboxsx', + url: 'https://www.xbox.com/en-us/configure/8WJ714N3RBTL', + }, + { + brand: 'microsoft', + model: 'xbox series s', + series: 'xboxss', + url: 'https://www.xbox.com/en-us/configure/942J774TP9JN', + }, + ], + name: 'microsoft', + country: 'US', +}; diff --git a/src/store/model/mightyape.ts b/src/store/model/mightyape.ts index 593f3d833a..6248540b0a 100644 --- a/src/store/model/mightyape.ts +++ b/src/store/model/mightyape.ts @@ -43,4 +43,5 @@ export const MightyApe: Store = { }, ], name: 'mightyape', + country: 'NZ', }; diff --git a/src/store/model/mindfactory.ts b/src/store/model/mindfactory.ts index 96dc416c26..335ba861f5 100644 --- a/src/store/model/mindfactory.ts +++ b/src/store/model/mindfactory.ts @@ -107,6 +107,63 @@ export const Mindfactory: Store = { series: 'ryzen5950', url: 'https://www.mindfactory.de/product_info.php/AMD-Ryzen-9-5950X-16x-3-40GHz-So-AM4-WOF_1380729.html', }, + // #region 6700xt + { + brand: 'asrock', + model: 'challenger', + series: 'rx6700xt', + url: 'https://www.mindfactory.de/product_info.php/12GB-ASRock-Radeon-RX-6700-XT-Challenger-12G--Retail-_1402343.html', + }, + { + brand: 'asrock', + model: 'phantom gaming', + series: 'rx6700xt', + url: 'https://www.mindfactory.de/product_info.php/12GB-ASRock-Radeon-RX-6700-XT-PHANTOM-GAMING-DDR6--Retail-_1404253.html', + }, + { + brand: 'asrock', + model: 'challenger oc', + series: 'rx6700xt', + url: 'https://www.mindfactory.de/product_info.php/12GB-ASRock-Radeon-RX-6700-XT-Challenger-D-OC--Retail-_1416036.html', + }, + { + brand: 'msi', + model: 'mech 2x oc', + series: 'rx6700xt', + url: 'https://www.mindfactory.de/product_info.php/12GB-MSI-Radeon-RX-6700-XT-MECH-2X-OC-DDR6-3xDP--Retail-_1401817.html', + }, + { + brand: 'powercolor', + model: 'fighter', + series: 'rx6700xt', + url: 'https://www.mindfactory.de/product_info.php/12GB-Powercolor-Radeon-RX-6700XT-Fighter-DDR6--Retail-_1402737.html', + }, + { + brand: 'powercolor', + model: 'hellhound', + series: 'rx6700xt', + url: 'https://www.mindfactory.de/product_info.php/12GB-PowerColor-Radeon-RX-6700-XT-Hellhound--Retail-_1402054.html', + }, + { + brand: 'powercolor', + model: 'red devil', + series: 'rx6700xt', + url: 'https://www.mindfactory.de/product_info.php/12GB-PowerColor-Radeon-RX-6700-XT-Red-Devil-12GB-GDDR6-HDMI-3xDP_1402329.html', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6700xt', + url: 'https://www.mindfactory.de/product_info.php/12GB-XFX-Radeon-RX-6700-XT-MERC319-Black-GAMING--Retail-_1402055.html', + }, + { + brand: 'xfx', + model: 'qick', + series: 'rx6700xt', + url: 'https://www.mindfactory.de/product_info.php/12GB-XFX-Radeon-RX-6700-XT-QICK319-DDR6-Black-Gaming-3xDP--Retail-_1405679.html', + }, + + // #endregion // #region 6800 { brand: 'gigabyte', @@ -205,4 +262,5 @@ export const Mindfactory: Store = { // #endregion ], name: 'mindfactory', + country: 'DE', }; diff --git a/src/store/model/msi.ts b/src/store/model/msi.ts new file mode 100644 index 0000000000..aa20a50859 --- /dev/null +++ b/src/store/model/msi.ts @@ -0,0 +1,246 @@ +import {Store} from './store'; + +export const MSI: Store = { + currency: '$', + labels: { + inStock: { + container: '#button-cart', + text: ['ADD TO CART'], + }, + outOfStock: { + container: '#product_qty > button.btn.add-cart-button-3', + text: ['Notify Me'], + }, + maxPrice: { + container: '#prices-new', + }, + }, + links: [ + { + brand: 'msi', + model: 'vanguard soc', + series: '5090', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5090-32G%20-VANGUARD-SOC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2472', + }, + { + brand: 'msi', + model: 'gaming trio oc', + series: '5080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5080-16G-GAMING-TRIO-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2480', + }, + { + brand: 'msi', + model: 'gaming trio oc white', + series: '5080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5080-16G-GAMING-TRIO-OC-WHITE", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2479', + }, + { + brand: 'msi', + model: 'inspire 3x', + series: '5080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5080-16G-INSPRIE-3X-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2481', + }, + { + brand: 'msi', + model: 'shadow 3x', + series: '5080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5080-16G-SHADOW-3X-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2485', + }, + { + brand: 'msi', + model: 'suprim liquid soc', + series: '5080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5080-16G-SUPRIM-LIQUID-SOC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2475', + }, + { + brand: 'msi', + model: 'suprim soc', + series: '5080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5080-16G-SUPRIM-SOC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2476', + }, + { + brand: 'msi', + model: 'vanguard soc', + series: '5080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5080-16G-VANGUARD-SOC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2478', + }, + { + brand: 'msi', + model: 'vanguard soc launch edition', + series: '5080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5080-16G-VANGUARD-SOC-LAUNCH-EDITION", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2477', + }, + { + brand: 'msi', + model: 'ventus 3x', + series: '5080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5080-16G-VENTUS-3X", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2487', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '5080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5080-16G-VENTUS-3X-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2482', + }, + { + brand: 'msi', + model: 'ventus 3x oc plus', + series: '5080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5080-16G-VENTUS-3X-OC-PLUS", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2483', + }, + { + brand: 'msi', + model: 'gaming trio oc', + series: '5090', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-5090-32G-GAMING-TRIO-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2473', + }, + { + brand: 'msi', + model: 'suprim liquid soc', + series: '5090', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5090-32G-SUPRIM-LIQUID-SOC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2469', + }, + { + brand: 'msi', + model: 'suprim oc', + series: '5090', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/Geforce-RTX-5090-32G-SUPRIM-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2470', + }, + { + brand: 'msi', + model: 'vanguard soc launch edition', + series: '5090', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5090-32G-VANGUARD-SOC-LAUNCH-EDITION", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2471', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '5090', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series/GeForce-RTX-5090-32G-VENTUS-3X-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-50-Series?product_id=2474', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '4060', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series/GeForce-RTX-4060-VENTUS-2X-BLACK-8G-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series?product_id=1799', + }, + { + brand: 'msi', + model: 'ventus 2x white oc', + series: '4060', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series/GeForce-RTX-4060-VENTUS-2X-WHITE-8G-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series?product_id=1852', + }, + { + brand: 'msi', + model: 'gaming x slim', + series: '4070super', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series/GeForce-RTX-4070-SUPER-12G-GAMING-X-SLIM", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series?product_id=2055', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '4070super', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series/GeForce-RTX-4070-SUPER-12G-VENTUS-2X-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series?product_id=2057', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '4070super', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series/GeForce-RTX-4070-SUPER-12G-VENTUS-3X-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series?product_id=2050', + }, + { + brand: 'msi', + model: 'expert', + series: '4070ti', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series/GeForce-RTX-4070-Ti-SUPER-16G-EXPERT", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series?product_id=2174', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '4070', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series/GeForce-RTX-4070-VENTUS-3X-12G-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series?product_id=1741', + }, + { + brand: 'msi', + model: 'ventus 3x e1 oc', + series: '4070', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series/GeForce-RTX-4070-VENTUS-3X-E1-12G-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-40-Series?product_id=2361', + }, + { + brand: 'msi', + model: 'gaming x', + series: '3050', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series/GeForce-RTX-3050-GAMING-X-6G", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series?product_id=2140', + }, + { + brand: 'msi', + model: 'lp oc', + series: '3050', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series/GeForce-RTX-3050-LP-6G-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series?product_id=2138', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3050', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series/GeForce-RTX-3050-VENTUS-2X-6G-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series?product_id=2139', + }, + { + brand: 'msi', + model: 'gaming trio', + series: '3080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series/GeForce-RTX-3080-Gaming-Z-Trio-10G-LHR", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series?product_id=954', + }, + { + brand: 'msi', + model: 'gaming trio', + series: '3080', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series/GeForce-RTX-3080-GAMING-Z-TRIO-12G-LHR", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series?product_id=1246', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3080ti', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series/GeForce-RTX-3080-Ti-Gaming-X-Trio-12G", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series?product_id=940', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080ti', + // "https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series/GeForce-RTX-3080-Ti-Ventus-3X-12G-OC", + url: 'https://us-store.msi.com/Graphics-Cards/NVIDIA-GPU/GeForce-RTX-30-Series?product_id=939', + }, + ], + name: 'msi', + country: 'US', +}; diff --git a/src/store/model/msy.ts b/src/store/model/msy.ts index 32e1013deb..59d6c9db57 100644 --- a/src/store/model/msy.ts +++ b/src/store/model/msy.ts @@ -166,4 +166,5 @@ export const Msy: Store = { }, ], name: 'msy', + country: 'AU', }; diff --git a/src/store/model/multicom.ts b/src/store/model/multicom.ts index b78f49dfa8..8087cf01ec 100644 --- a/src/store/model/multicom.ts +++ b/src/store/model/multicom.ts @@ -394,4 +394,5 @@ export const Multicom: Store = { }, ], name: 'multicom', + country: 'NO', }; diff --git a/src/store/model/mwave.ts b/src/store/model/mwave.ts index 4171585795..7c7a2cc798 100644 --- a/src/store/model/mwave.ts +++ b/src/store/model/mwave.ts @@ -166,4 +166,5 @@ export const Mwave: Store = { }, ], name: 'mwave', + country: 'AU', }; diff --git a/src/store/model/neobyte.ts b/src/store/model/neobyte.ts index 4530e7f8e5..6d8b89671c 100644 --- a/src/store/model/neobyte.ts +++ b/src/store/model/neobyte.ts @@ -330,4 +330,5 @@ export const NeoByte: Store = { }, ], name: 'neobyte', + country: 'ES', }; diff --git a/src/store/model/netonnet-no.ts b/src/store/model/netonnet-no.ts index abfaf90f19..cf304dcb60 100644 --- a/src/store/model/netonnet-no.ts +++ b/src/store/model/netonnet-no.ts @@ -251,6 +251,25 @@ export const NetonnetNO: Store = { series: '3070', url: 'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/kfa2-geforce-rtx-3070-1-click-oc-8gb/1017014.11111/', }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/asus-geforce-rtx-3090-rog-strix-gaming-oc-10g/1017795.11111/', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3060', + url: 'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/gigabyte-geforce-rtx-3060-vision-oc-12gb/1017250.11111/', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3090', + url: 'https://www.netonnet.no/art/datakomponenter/skjermkort/nvidia/gigabyte-geforce-rtx-3090-vision-oc-24gb/1015516.11111/', + }, ], name: 'netonnet-no', + country: 'NO', }; diff --git a/src/store/model/newegg-ca.ts b/src/store/model/newegg-ca.ts index 45def07ff6..0d6c874d6a 100644 --- a/src/store/model/newegg-ca.ts +++ b/src/store/model/newegg-ca.ts @@ -1007,6 +1007,7 @@ export const NeweggCa: Store = { }, ], name: 'newegg-ca', + country: 'CA', realTimeInventoryLookup: async (itemNumber: string) => { const request_url = 'https://www.newegg.ca/product/api/ProductRealtime?ItemNumber=' + diff --git a/src/store/model/newegg-sg.ts b/src/store/model/newegg-sg.ts index 088a84cde3..aac7753fb7 100644 --- a/src/store/model/newegg-sg.ts +++ b/src/store/model/newegg-sg.ts @@ -1122,6 +1122,7 @@ export const NeweggSg: Store = { }, ], name: 'newegg-sg', + country: 'SG', realTimeInventoryLookup: async (itemNumber: string) => { const request_url = 'https://www.newegg.com/global/sg-en/product/api/ProductRealtime?ItemNumber=' + diff --git a/src/store/model/newegg.ts b/src/store/model/newegg.ts index 691b00043f..4401b483b5 100644 --- a/src/store/model/newegg.ts +++ b/src/store/model/newegg.ts @@ -1,5 +1,5 @@ -import {Store} from './store'; import fetch from 'node-fetch'; +import {Store} from './store'; export const Newegg: Store = { currency: '$', @@ -38,6 +38,7 @@ export const Newegg: Store = { model: 'test:model', series: 'test:series', url: 'https://www.newegg.com/western-digital-blue-500gb/p/N82E16820250087?Item=N82E16820250087', + itemNumber: '20-250-087', }, { brand: 'msi', @@ -507,6 +508,132 @@ export const Newegg: Store = { series: '3090', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090eagle-oc-24gd/p/N82E16814932328', }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932555', + itemNumber: 'N82E16814932555', + model: 'aorus master 24g', + series: '4090', + url: 'https://www.newegg.com/gigabyte-geforce-rtx-4090-gv-n4090aorus-m-24gd/p/N82E16814932555', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932556', + itemNumber: 'N82E16814932556', + model: 'aorus xtreme waterforce 24g', + series: '4090', + url: 'https://www.newegg.com/gigabyte-geforce-rtx-4090-gv-n4090aorusx-w-24gd/p/N82E16814932556', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932550', + itemNumber: 'N82E16814932550', + model: 'gaming oc', + series: '4090', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814932550', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932554', + itemNumber: 'N82E16814932554', + model: 'windforce', + series: '4090', + url: 'https://www.newegg.com/gigabyte-geforce-rtx-4090-gv-n4090wf3-24gd/p/N82E16814932554', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137761', + itemNumber: 'N82E16814137761', + model: 'gaming x trio', + series: '4090', + url: 'https://www.newegg.com/msi-geforce-rtx-4090-rtx-4090-gaming-x-trio-24g/p/N82E16814137761', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137762', + itemNumber: 'N82E16814137762', + model: 'gaming trio', + series: '4090', + url: 'https://www.newegg.com/msi-geforce-rtx-4090-rtx-4090-gaming-trio-24g/p/N82E16814137762', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137759', + itemNumber: 'N82E16814137759', + model: 'suprim', + series: '4090', + url: 'https://www.newegg.com/msi-geforce-rtx-4090-rtx-4090-suprim-liquid-x-24g/p/N82E16814137759', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137760', + itemNumber: 'N82E16814137760', + model: 'suprim x', + series: '4090', + url: 'https://www.newegg.com/msi-geforce-rtx-4090-rtx-4090-suprim-liquid-x-24g/p/N82E16814137760', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126600', + itemNumber: 'N82E16814126600', + model: 'strix', + series: '4090', + url: 'https://www.newegg.com/asus-geforce-rtx-4090-rog-strix-rtx4090-24g-gaming/p/N82E16814126600', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126593', + itemNumber: 'N82E16814126593', + model: 'strix oc', + series: '4090', + url: 'https://www.newegg.com/asus-geforce-rtx-4090-rog-strix-rtx4090-o24g-gaming/p/N82E16814126593', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126596', + itemNumber: 'N82E16814126596', + model: 'tuf', + series: '4090', + url: 'https://www.newegg.com/asus-geforce-rtx-4090-tuf-rtx4090-24g-gaming/p/N82E16814126596', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126594', + itemNumber: 'N82E16814126594', + model: 'tuf oc', + series: '4090', + url: 'https://www.newegg.com/asus-geforce-rtx-4090-tuf-rtx4090-o24g-gaming/p/N82E16814126594', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500539', + itemNumber: 'N82E16814500539', + model: 'trinity', + series: '4090', + url: 'https://www.newegg.com/zotac-geforce-rtx-4090-zt-d40900d-10p/p/N82E16814500539', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500538', + itemNumber: 'N82E16814500538', + model: 'amp extreme airo', + series: '4090', + url: 'https://www.newegg.com/zotac-geforce-rtx-4090-zt-d40900b-10p/p/N82E16814500538', + }, { brand: 'amd', cartUrl: @@ -547,6 +674,7 @@ export const Newegg: Store = { brand: 'microsoft', cartUrl: 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16868105273', + itemNumber: '68-105-273', model: 'xbox series x', series: 'xboxsx', url: 'https://www.newegg.com/p/N82E16868105273', @@ -558,6 +686,7 @@ export const Newegg: Store = { model: 'xbox series s', series: 'xboxss', url: 'https://www.newegg.com/p/N82E16868105274', + itemNumber: '68-105-274', }, { brand: 'asrock', @@ -566,6 +695,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6900xt', url: 'https://www.newegg.com/asrock-radeon-rx-6900-xt-rx6900xt-16g/p/N82E16814930051', + itemNumber: '14-930-051', }, { brand: 'gigabyte', @@ -574,6 +704,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6900xt', url: 'https://www.newegg.com/gigabyte-radeon-rx-6900-xt-gv-r69xt-16gc-b/p/N82E16814932384', + itemNumber: '14-932-384', }, { brand: 'msi', @@ -582,6 +713,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6900xt', url: 'https://www.newegg.com/msi-radeon-rx-6900-xt-rx-6900-xt-16g/p/N82E16814137618', + itemNumber: '14-137-618', }, { brand: 'powercolor', @@ -590,6 +722,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6900xt', url: 'https://www.newegg.com/powercolor-radeon-rx-6900-xt-axrx-6900xt-16gbd6-m2dhc/p/N82E16814131774', + itemNumber: '14-131-774', }, { brand: 'sapphire', @@ -598,6 +731,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6900xt', url: 'https://www.newegg.com/sapphire-radeon-rx-6900-xt-21308-01-20g/p/N82E16814202393', + itemNumber: '14-202-393', }, { brand: 'asrock', @@ -606,6 +740,7 @@ export const Newegg: Store = { model: 'phantom gaming', series: 'rx6900xt', url: 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx6900xt-pgd-16g/p/N82E16814930052', + itemNumber: '14-930-052', }, { brand: 'xfx', @@ -614,6 +749,7 @@ export const Newegg: Store = { model: 'merc', series: 'rx6900xt', url: 'https://www.newegg.com/xfx-radeon-rx-6900-xt-rx-69xtacud9/p/N82E16814150846', + itemNumber: '14-150-846', }, { brand: 'gigabyte', @@ -622,6 +758,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6800xt', url: 'https://www.newegg.com/gigabyte-radeon-rx-6800-xt-gv-r68xt-16gc-b/p/N82E16814932373', + itemNumber: '14-932-373', }, { brand: 'gigabyte', @@ -630,6 +767,7 @@ export const Newegg: Store = { model: 'gaming oc', series: 'rx6800xt', url: 'https://www.newegg.com/gigabyte-radeon-rx-6800-xt-gv-r68xtgaming-oc-16gd/p/N82E16814932381', + itemNumber: '14-932-381', }, { brand: 'sapphire', @@ -638,6 +776,7 @@ export const Newegg: Store = { model: 'pulse', series: 'rx6800', url: 'https://www.newegg.com/sapphire-radeon-rx-6800-11305-02-20g/p/N82E16814202394', + itemNumber: '14-202-394', }, { brand: 'msi', @@ -646,6 +785,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6800xt', url: 'https://www.newegg.com/msi-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814137607', + itemNumber: '14-137-607', }, { brand: 'sapphire', @@ -654,6 +794,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6800xt', url: 'https://www.newegg.com/sapphire-radeon-rx-6800-xt-21304-01-20g/p/N82E16814202388', + itemNumber: '14-202-388', }, { brand: 'asrock', @@ -662,6 +803,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6800xt', url: 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx-6800-xt-16g/p/N82E16814930045', + itemNumber: '14-930-045', }, { brand: 'asus', @@ -670,6 +812,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6800xt', url: 'https://www.newegg.com/asus-radeon-rx-6800-xt-rx6800xt-16g/p/N82E16814126472', + itemNumber: '14-126-472', }, { brand: 'asus', @@ -678,6 +821,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6800', url: 'https://www.newegg.com/asus-radeon-rx-6800-rx6800-16g/p/N82E16814126473', + itemNumber: '14-126-473', }, { brand: 'asrock', @@ -686,6 +830,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6800', url: 'https://www.newegg.com/asrock-radeon-rx-6800-rx-6800-16g/p/N82E16814930046', + itemNumber: '14-930-046', }, { brand: 'gigabyte', @@ -694,6 +839,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6800', url: 'https://www.newegg.com/gigabyte-radeon-rx-6800-gv-r68-16gc-b/p/N82E16814932374', + itemNumber: '14-932-374', }, { brand: 'sapphire', @@ -702,6 +848,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6800', url: 'https://www.newegg.com/sapphire-radeon-rx-6800-21305-01-20g/p/N82E16814202389', + itemNumber: '14-202-389', }, { brand: 'msi', @@ -710,6 +857,7 @@ export const Newegg: Store = { model: 'amd reference', series: 'rx6800', url: 'https://www.newegg.com/msi-radeon-rx-6800-rx-6800-16g/p/N82E16814137608', + itemNumber: '14-137-608', }, { brand: 'asrock', @@ -718,8 +866,8 @@ export const Newegg: Store = { model: 'challenger', series: 'rx6800', url: 'https://www.newegg.com/asrock-radeon-rx-6800-rx6800-clp-16go/p/N82E16814930047', + itemNumber: '14-930-047', }, - { brand: 'asrock', cartUrl: @@ -727,6 +875,7 @@ export const Newegg: Store = { model: 'phantom gaming', series: 'rx6800', url: 'https://www.newegg.com/asrock-radeon-rx-6800-rx6800-pgd-16go/p/N82E16814930048', + itemNumber: '14-930-048', }, { brand: 'asrock', @@ -735,6 +884,7 @@ export const Newegg: Store = { model: 'phantom gaming', series: 'rx6800xt', url: 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx6800xt-pgd-16go/p/N82E16814930049', + itemNumber: '14-930-049', }, { brand: 'asrock', @@ -743,6 +893,7 @@ export const Newegg: Store = { model: 'taichi', series: 'rx6800xt', url: 'https://www.newegg.com/asrock-radeon-rx-6800-xt-rx6800xt-tcx-16go/p/N82E16814930050', + itemNumber: '14-930-050', }, { brand: 'asus', @@ -751,6 +902,7 @@ export const Newegg: Store = { model: 'tuf', series: 'rx6800', url: 'https://www.newegg.com/asus-radeon-rx-6800-tuf-rx6800-o16g-gaming/p/N82E16814126478', + itemNumber: '14-126-478', }, { brand: 'asus', @@ -759,6 +911,7 @@ export const Newegg: Store = { model: 'tuf', series: 'rx6800xt', url: 'https://www.newegg.com/asus-radeon-rx-6800-xt-tuf-rx6800xt-o16g-gaming/p/N82E16814126476', + itemNumber: '14-126-476', }, { brand: 'asus', @@ -767,6 +920,7 @@ export const Newegg: Store = { model: 'strix', series: 'rx6800', url: 'https://www.newegg.com/asus-radeon-rx-6800-rog-strix-rx6800-o16g-gaming/p/N82E16814126477', + itemNumber: '14-126-477', }, { brand: 'asus', @@ -775,6 +929,7 @@ export const Newegg: Store = { model: 'strix lc', series: 'rx6800xt', url: 'https://www.newegg.com/asus-radeon-rx-6800-xt-rog-strix-lc-rx6800xt-o16g-gaming/p/N82E16814126475', + itemNumber: '14-126-475', }, { brand: 'sapphire', @@ -783,6 +938,7 @@ export const Newegg: Store = { model: 'nitro+', series: 'rx6800xt', url: 'https://www.newegg.com/sapphire-radeon-rx-6800-xt-11304-02-20g/p/N82E16814202391', + itemNumber: '14-202-391', }, { brand: 'sapphire', @@ -791,6 +947,7 @@ export const Newegg: Store = { model: 'nitro+ se', series: 'rx6800xt', url: 'https://www.newegg.com/sapphire-radeon-rx-6800-xt-11304-01-20g/p/N82E16814202390', + itemNumber: '14-202-390', }, { brand: 'xfx', @@ -799,6 +956,7 @@ export const Newegg: Store = { model: 'merc', series: 'rx6800xt', url: 'https://www.newegg.com/xfx-radeon-rx-6800-xt-rx-68xtacbd9/p/N82E16814150844', + itemNumber: '14-150-844', }, { brand: 'corsair', @@ -807,6 +965,7 @@ export const Newegg: Store = { model: '750 platinum', series: 'sf', url: 'https://www.newegg.com/corsair-sf750-cp-9020186-na-750w/p/N82E16817139080', + itemNumber: '17-139-080', }, { brand: 'gigabyte', @@ -815,6 +974,7 @@ export const Newegg: Store = { model: 'vision oc', series: '3060', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3060-gv-n3060vision-oc-12gd/p/N82E16814932401', + itemNumber: '14-932-401', }, { brand: 'gigabyte', @@ -823,6 +983,7 @@ export const Newegg: Store = { model: 'eagle', series: '3060', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3060-gv-n3060eagle-12gd/p/N82E16814932399', + itemNumber: '14-932-399', }, { brand: 'gigabyte', @@ -831,6 +992,7 @@ export const Newegg: Store = { model: 'eagle', series: '3060', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3060-gv-n3060eagle-12gd/p/N82E16814932399', + itemNumber: '14-932-399', }, { brand: 'gigabyte', @@ -839,6 +1001,7 @@ export const Newegg: Store = { model: 'aorus', series: '3060', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3060-gv-n3060aorus-e-12gd/p/N82E16814932400', + itemNumber: '14-932-400', }, { brand: 'gigabyte', @@ -847,6 +1010,7 @@ export const Newegg: Store = { model: 'eagle oc', series: '3060', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3060-gv-n3060eagle-oc-12gd/p/N82E16814932403', + itemNumber: '14-932-403', }, { brand: 'evga', @@ -855,6 +1019,7 @@ export const Newegg: Store = { model: 'xc black', series: '3060', url: 'https://www.newegg.com/evga-geforce-rtx-3060-12g-p5-3655-kr/p/N82E16814487538', + itemNumber: '14-487-538', }, { brand: 'evga', @@ -863,6 +1028,7 @@ export const Newegg: Store = { model: 'xc gaming', series: '3060', url: 'https://www.newegg.com/evga-geforce-rtx-3060-12g-p5-3657-kr/p/N82E16814487539', + itemNumber: '14-487-539', }, { brand: 'msi', @@ -871,6 +1037,7 @@ export const Newegg: Store = { model: 'gaming x trio', series: '3060', url: 'https://www.newegg.com/msi-geforce-rtx-3060-rtx-3060-gaming-x-trio-12g/p/N82E16814137629', + itemNumber: '14-137-629', }, { brand: 'msi', @@ -879,6 +1046,7 @@ export const Newegg: Store = { model: 'gaming x', series: '3060', url: 'https://www.newegg.com/msi-geforce-rtx-3060-rtx-3060-gaming-x-12g/p/N82E16814137630', + itemNumber: '14-137-630', }, { brand: 'msi', @@ -887,6 +1055,7 @@ export const Newegg: Store = { model: 'ventus 3x', series: '3060', url: 'https://www.newegg.com/msi-geforce-rtx-3060-rtx-3060-ventus-3x-12g-oc/p/N82E16814137631', + itemNumber: '14-137-631', }, { brand: 'msi', @@ -895,6 +1064,7 @@ export const Newegg: Store = { model: 'ventus 2x oc', series: '3060', url: 'https://www.newegg.com/msi-geforce-rtx-3060-rtx-3060-ventus-2x-12g-oc/p/N82E16814137632', + itemNumber: '14-137-632', }, { brand: 'msi', @@ -903,6 +1073,7 @@ export const Newegg: Store = { model: 'ventus 2x', series: '3060', url: 'https://www.newegg.com/msi-geforce-rtx-3060-rtx-3060-ventus-2x-12g/p/N82E16814137638', + itemNumber: '14-137-638', }, { brand: 'asus', @@ -911,6 +1082,7 @@ export const Newegg: Store = { model: 'tuf oc', series: '3060', url: 'https://www.newegg.com/asus-geforce-rtx-3060-tuf-rtx3060-o12g-gaming/p/N82E16814126491', + itemNumber: '14-126-491', }, { brand: 'asus', @@ -919,6 +1091,7 @@ export const Newegg: Store = { model: 'strix oc', series: '3060', url: 'https://www.newegg.com/asus-geforce-rtx-3060-rog-strix-rtx3060-o12g-gaming/p/N82E16814126492', + itemNumber: '14-126-492', }, { brand: 'asus', @@ -927,6 +1100,7 @@ export const Newegg: Store = { model: 'dual', series: '3060', url: 'https://www.newegg.com/asus-geforce-rtx-3060-dual-rtx3060-12g/p/N82E16814126493', + itemNumber: '14-126-493', }, { brand: 'zotac', @@ -935,6 +1109,7 @@ export const Newegg: Store = { model: 'twin edge oc', series: '3060', url: 'https://www.newegg.com/zotac-geforce-rtx-3060-zt-a30600h-10m/p/N82E16814500508', + itemNumber: '14-500-508', }, { brand: 'zotac', @@ -943,6 +1118,7 @@ export const Newegg: Store = { model: 'twin edge', series: '3060', url: 'https://www.newegg.com/zotac-geforce-rtx-3060-zt-a30600e-10m/p/N82E16814500509', + itemNumber: '14-500-509', }, { brand: 'zotac', @@ -951,6 +1127,7 @@ export const Newegg: Store = { model: 'twin edge', series: '3060', url: 'https://www.newegg.com/zotac-geforce-rtx-3060-zt-a30600e-10m/p/N82E16814500509', + itemNumber: '14-500-509', }, { brand: 'corsair', @@ -959,6 +1136,7 @@ export const Newegg: Store = { model: '600 platinum', series: 'sf', url: 'https://www.newegg.com/corsair-sf-series-sf600-cp-9020182-na-600w/p/N82E16817139242', + itemNumber: '17-139-242', }, { brand: 'asus', @@ -967,6 +1145,7 @@ export const Newegg: Store = { model: 'strix', series: '3060ti', url: 'https://www.newegg.com/asus-geforce-rtx-3060-ti-rog-strix-rtx3060ti-o8g-gaming/p/N82E16814126470', + itemNumber: '14-126-470', }, { brand: 'msi', @@ -975,6 +1154,7 @@ export const Newegg: Store = { model: 'gaming x trio', series: '3060ti', url: 'https://www.newegg.com/msi-geforce-rtx-3060-ti-rtx-3060-ti-gaming-x-trio/p/N82E16814137611', + itemNumber: '14-137-611', }, { brand: 'zotac', @@ -983,6 +1163,7 @@ export const Newegg: Store = { model: 'twin edge oc', series: '3060ti', url: 'https://www.newegg.com/zotac-geforce-rtx-3060-ti-zt-a30610h-10m/p/N82E16814500507', + itemNumber: '14-500-507', }, { brand: 'asus', @@ -991,6 +1172,7 @@ export const Newegg: Store = { model: 'tuf', series: '3060ti', url: 'https://www.newegg.com/asus-geforce-rtx-3060-ti-tuf-rtx3060ti-o8g-gaming/p/N82E16814126471', + itemNumber: '14-126-471', }, { brand: 'evga', @@ -999,6 +1181,7 @@ export const Newegg: Store = { model: 'xc3', series: '3060ti', url: 'https://www.newegg.com/evga-geforce-rtx-3060-ti-08g-p5-3663-kr/p/N82E16814487535', + itemNumber: '14-487-535', }, { brand: 'asus', @@ -1007,6 +1190,7 @@ export const Newegg: Store = { model: 'dual', series: '3060ti', url: 'https://www.newegg.com/asus-geforce-rtx-3060-ti-dual-rtx3060ti-o8g/p/N82E16814126468', + itemNumber: '14-126-468', }, { brand: 'msi', @@ -1015,6 +1199,7 @@ export const Newegg: Store = { model: 'ventus 2x oc', series: '3060ti', url: 'https://www.newegg.com/msi-geforce-rtx-3060-ti-rtx-3060-ti-ventus-2x-oc/p/N82E16814137612', + itemNumber: '14-137-612', }, { brand: 'evga', @@ -1023,6 +1208,7 @@ export const Newegg: Store = { model: 'ftw3 ultra', series: '3060ti', url: 'https://www.newegg.com/evga-geforce-rtx-3060-ti-08g-p5-3667-kr/p/N82E16814487537', + itemNumber: '14-487-537', }, { brand: 'gigabyte', @@ -1031,6 +1217,7 @@ export const Newegg: Store = { model: 'aorus', series: '3060ti', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306taorus-m-8gd/p/N82E16814932375', + itemNumber: '14-932-375', }, { brand: 'gigabyte', @@ -1039,6 +1226,7 @@ export const Newegg: Store = { model: 'gaming oc', series: '3060ti', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306tgamingoc-pro-8gd/p/N82E16814932376', + itemNumber: '14-932-376', }, { brand: 'gigabyte', @@ -1047,6 +1235,7 @@ export const Newegg: Store = { model: 'eagle', series: '3060ti', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-8gd/p/N82E16814932379', + itemNumber: '14-932-379', }, { brand: 'gigabyte', @@ -1055,6 +1244,7 @@ export const Newegg: Store = { model: 'gaming oc', series: '3060ti', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306tgaming-oc-8gd/p/N82E16814932377', + itemNumber: '14-932-377', }, { brand: 'zotac', @@ -1063,6 +1253,7 @@ export const Newegg: Store = { model: 'twin edge', series: '3060ti', url: 'https://www.newegg.com/zotac-geforce-rtx-3060-ti-zt-a30610e-10m/p/N82E16814500506', + itemNumber: '14-500-506', }, { brand: 'gigabyte', @@ -1071,6 +1262,7 @@ export const Newegg: Store = { model: 'eagle', series: '3060ti', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3060-ti-gv-n306teagle-oc-8gd/p/N82E16814932378', + itemNumber: '14-932-378', }, { brand: 'asus', @@ -1079,6 +1271,7 @@ export const Newegg: Store = { model: 'gaming', series: '3060ti', url: 'https://www.newegg.com/asus-geforce-rtx-3060-ti-ko-rtx3060ti-o8g-gaming/p/N82E16814126474', + itemNumber: '14-126-474', }, { brand: 'asus', @@ -1087,6 +1280,7 @@ export const Newegg: Store = { model: 'dual', series: '3060ti', url: 'https://www.newegg.com/asus-geforce-rtx-3060-ti-dual-rtx3060ti-8g/p/N82E16814126480', + itemNumber: '14-126-480', }, { brand: 'msi', @@ -1095,6 +1289,7 @@ export const Newegg: Store = { model: 'suprim x', series: '3070', url: 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-suprim-x-8g/p/N82E16814137620', + itemNumber: '14-137-620', }, { brand: 'msi', @@ -1103,6 +1298,7 @@ export const Newegg: Store = { model: 'suprim', series: '3070', url: 'https://www.newegg.com/msi-geforce-rtx-3070-rtx-3070-suprim-8g/p/N82E16814137623', + itemNumber: '14-137-623', }, { brand: 'gigabyte', @@ -1111,6 +1307,7 @@ export const Newegg: Store = { model: 'aorus xtreme', series: '3080', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorus-x-10gd/p/N82E16814932345', + itemNumber: '14-932-345', }, { brand: 'gigabyte', @@ -1119,6 +1316,7 @@ export const Newegg: Store = { model: 'aorus xtreme waterforce', series: '3080', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorusx-w-10gd/p/N82E16814932372', + itemNumber: '14-932-372', }, { brand: 'gigabyte', @@ -1127,6 +1325,7 @@ export const Newegg: Store = { model: 'aorus xtreme waterforce wb', series: '3080', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080aorusx-wb-10gd/p/N82E16814932371', + itemNumber: '14-932-371', }, { brand: 'asus', @@ -1135,6 +1334,7 @@ export const Newegg: Store = { model: 'strix white', series: '3080', url: 'https://www.newegg.com/asus-geforce-rtx-3080-rog-strix-rtx3080-o10g-white/p/N82E16814126483', + itemNumber: '14-126-483', }, { brand: 'msi', @@ -1143,6 +1343,7 @@ export const Newegg: Store = { model: 'suprim x', series: '3080', url: 'https://www.newegg.com/msi-geforce-rtx-3080-rtx3080-suprim-x-10g/p/N82E16814137609', + itemNumber: '14-137-609', }, { brand: 'gigabyte', @@ -1151,6 +1352,7 @@ export const Newegg: Store = { model: 'eagle', series: '3080', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3080-gv-n3080eagle-10gd/p/N82E16814932367', + itemNumber: '14-932-367', }, { brand: 'asus', @@ -1159,6 +1361,7 @@ export const Newegg: Store = { model: 'ekwb', series: '3090', url: 'https://www.newegg.com/asus-geforce-rtx-3090-rtx3090-24g-ek/p/N82E16814126485', + itemNumber: '14-126-485', }, { brand: 'gigabyte', @@ -1167,6 +1370,7 @@ export const Newegg: Store = { model: 'aorus master', series: '3090', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090aorus-m-24gd/p/N82E16814932341', + itemNumber: '14-932-341', }, { brand: 'gigabyte', @@ -1175,6 +1379,7 @@ export const Newegg: Store = { model: 'aorus xtreme waterforce', series: '3090', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090aorusx-w-24gd/p/N82E16814932387', + itemNumber: '14-932-387', }, { brand: 'asus', @@ -1183,6 +1388,7 @@ export const Newegg: Store = { model: 'tuf oc', series: '3090', url: 'https://www.newegg.com/asus-geforce-rtx-3090-tuf-rtx3090-o24g-gaming/p/N82E16814126454', + itemNumber: '14-126-454', }, { brand: 'gigabyte', @@ -1191,6 +1397,7 @@ export const Newegg: Store = { model: 'aorus xtreme waterforce wb', series: '3090', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090aorusx-wb-24gd/p/N82E16814932386', + itemNumber: '14-932-386', }, { brand: 'gigabyte', @@ -1199,6 +1406,7 @@ export const Newegg: Store = { model: 'aorus xtreme', series: '3090', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090aorus-x-24gd/p/N82E16814932340', + itemNumber: '14-932-340', }, { brand: 'gigabyte', @@ -1207,6 +1415,7 @@ export const Newegg: Store = { model: 'vision oc', series: '3090', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090vision-oc-24gd/p/N82E16814932365', + itemNumber: '14-932-365', }, { brand: 'asus', @@ -1215,6 +1424,7 @@ export const Newegg: Store = { model: 'strix white', series: '3090', url: 'https://www.newegg.com/asus-geforce-rtx-3090-rog-strix-rtx3090-o24g-white/p/N82E16814126482', + itemNumber: '14-126-482', }, { brand: 'msi', @@ -1223,6 +1433,7 @@ export const Newegg: Store = { model: 'suprim x', series: '3090', url: 'https://www.newegg.com/msi-geforce-rtx-3090-rtx3090-suprim-x-24g/p/N82E16814137610', + itemNumber: '14-137-610', }, { brand: 'gigabyte', @@ -1231,6 +1442,7 @@ export const Newegg: Store = { model: 'eagle', series: '3090', url: 'https://www.newegg.com/gigabyte-geforce-rtx-3090-gv-n3090eagle-24gd/p/N82E16814932366', + itemNumber: '14-932-366', }, { brand: 'powercolor', @@ -1239,6 +1451,7 @@ export const Newegg: Store = { model: 'red devil', series: 'rx6800xt', url: 'https://www.newegg.com/powercolor-radeon-rx-6800-xt-axrx-6800xt-16gbd6-2dhce-oc/p/N82E16814131767', + itemNumber: '14-131-767', }, { brand: 'powercolor', @@ -1247,6 +1460,7 @@ export const Newegg: Store = { model: 'red devil', series: 'rx6800', url: 'https://www.newegg.com/powercolor-radeon-rx-6800-axrx-6800-16gbd6-2dhce-oc/p/N82E16814131770', + itemNumber: '14-131-770', }, { brand: 'powercolor', @@ -1255,6 +1469,7 @@ export const Newegg: Store = { model: 'red dragon', series: 'rx6800', url: 'https://www.newegg.com/powercolor-radeon-rx-6800-axrx-6800-16gbd6-3dhr-oc/p/N82E16814131773', + itemNumber: '14-131-773', }, { brand: 'asus', @@ -1263,9 +1478,668 @@ export const Newegg: Store = { model: 'crosshair viii', series: 'darkhero', url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16813119362', + itemNumber: '13-119-362', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=9SIA4RRJPT6655', + model: 'tuf oc', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/9SIA4RRJPT6655', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=9SIB6NDJBU7977', + model: 'suprim x', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/9SIB6NDJBU7977', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=9SIA4REJPN0959', + model: 'master', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/9SIA4REJPN0959', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=9SIA4REJPN0233', + model: 'ventus 3x', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/9SIA4REJPN0233', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=9SIA4REJPN0307', + model: 'aero oc', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/9SIA4REJPN0307', + }, + { + brand: 'ax', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=9SIA4REJPN0954', + model: 'x3w', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/9SIA4REJPN0954', + }, + { + brand: 'inno3d', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=9SIBDCAJBT4674', + model: 'ice dragon super', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/9SIBDCAJBT4674', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=9SIAXMKJPP1243', + model: 'tuf', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/9SIAXMKJPP1243', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932561', + model: 'gaming oc', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814932561', + itemNumber: '14-932-561', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932562', + model: 'eagle oc', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814932562', + itemNumber: '14-932-562', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137766', + model: 'gaming x trio', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814137766', + itemNumber: '14-137-766', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137765', + model: 'ventus 3x oc', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814137765', + itemNumber: '14-137-765', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126597', + model: 'strix oc', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814126597', + itemNumber: '14-126-597', + }, + { + brand: 'pny', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133843', + model: 'xlr8 verto', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814133843', + itemNumber: '14-133-843', + }, + { + brand: 'pny', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133844', + model: 'xlr8 verto oc', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814133844', + itemNumber: '14-133-844', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932559', + model: 'aorus', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814932559', + itemNumber: '14-932-559', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932560', + model: 'aero oc', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814932560', + itemNumber: '14-932-560', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500541', + model: 'amp extreme airo', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814500541', + itemNumber: '14-500-541', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932558', + model: 'aorus w', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814932558', + itemNumber: '14-932-558', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500542', + model: 'trinity', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814500542', + itemNumber: '14-500-542', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137768', + model: 'ventus 3x', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814137768', + itemNumber: '14-137-768', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137767', + model: 'suprim x', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814137767', + itemNumber: '14-137-767', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932557', + model: 'aorus x wb', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814932557', + itemNumber: '14-932-557', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500543', + model: 'trinity oc', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814500543', + itemNumber: '14-500-543', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126601', + model: 'strix', + series: '4080-16g', + url: 'https://www.newegg.com/asus-rog-crosshair-viii-dark-hero/p/N82E16814126601', + itemNumber: '14-126-601', + }, + { + brand: 'sparkle', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814993013', + model: 'b580', + series: 'arc', + url: 'https://www.newegg.com/sparkle-intel-arc-b580-titan-oc-12gb-gddr6/p/N82E16814993013', + itemNumber: '14-993-013', + }, + { + brand: 'lianli', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=2AM-000Z-000E0', + model: 'a3 matx wd', + series: 'a3-matx', + url: 'https://www.newegg.com/p/2AM-000Z-000E0', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137920', + model: 'ventus 3x oc', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814137920', + itemNumber: '14-137-920', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137916', + model: 'suprim liquid soc', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814137916', + itemNumber: '14-137-916', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137915', + model: 'suprim soc', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814137915', + itemNumber: '14-137-915', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137918', + model: 'vanguard soc', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814137918', + itemNumber: '14-137-918', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137919', + model: 'gaming trio oc', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814137919', + itemNumber: '14-137-919', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137917', + model: 'vanguard soc launch edition', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814137917', + itemNumber: '14-137-917', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500593', + model: 'amp extreme infinity', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814500593', + itemNumber: '14-500-593', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932756', + model: 'aero oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814932756', + itemNumber: '14-932-756', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932755', + model: 'aorus', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814932755', + itemNumber: '14-932-755', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137910', + model: 'gaming trio oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137910', + itemNumber: '14-137-910', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137913', + model: 'ventus 3x oc plus', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137913', + itemNumber: '14-137-913', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137909', + model: 'gaming trio oc white', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137909', + itemNumber: '14-137-909', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137908', + model: 'vanguard soc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137908', + itemNumber: '14-137-908', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137906', + model: 'suprim soc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137906', + itemNumber: '14-137-906', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137907', + model: 'vanguard soc launch edition', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137907', + itemNumber: '14-137-907', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137905', + model: 'suprim liquid soc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137905', + itemNumber: '14-137-905', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126752', + model: 'tuf', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814126752', + itemNumber: '14-126-752', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126753', + model: 'tuf oc', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814126753', + itemNumber: '14-126-753', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932754', + model: 'windforce oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814932754', + itemNumber: '14-932-754', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126751', + model: 'astral oc', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814126751', + itemNumber: '14-126-751', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932753', + model: 'gaming oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814932753', + itemNumber: '14-932-753', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126750', + model: 'astral', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814126750', + itemNumber: '14-126-750', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126743', + model: 'tuf oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814126743', + itemNumber: '14-126-743', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126744', + model: 'prime oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814126744', + itemNumber: '14-126-744', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126742', + model: 'astral oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814126742', + itemNumber: '14-126-742', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932765', + model: 'master ice', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814932765', + itemNumber: '14-932-765', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500597', + model: 'solid', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814500597', + itemNumber: '14-500-597', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932761', + model: 'gaming oc', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814932761', + itemNumber: '14-932-761', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932762', + model: 'windforce oc', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814932762', + itemNumber: '14-932-762', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932760', + model: 'master', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814932760', + itemNumber: '14-932-760', + }, + + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137946', + model: 'ventus 3x', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814137946', + itemNumber: '14-137-946', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932764', + model: 'aorus xtreme waterforce wb', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814932764', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932763', + model: 'aorus xtreme waterforce', + series: '5090', + url: 'https://www.newegg.com/p/N82E16814932763', + itemNumber: '14-932-763', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932757', + model: 'master ice', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814932757', + itemNumber: '14-932-757', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137930', + model: 'ventus 3x oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137930', + itemNumber: '14-137-930', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137911', + model: 'inspire 3x oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137911', + itemNumber: '14-137-911', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137912', + model: 'ventus 3x oc white', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137912', + itemNumber: '14-137-912', + }, + { + brand: 'pny', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133898', + model: 'epic x', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814133898', + itemNumber: '14-133-898', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500596', + model: 'solid', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814500596', + itemNumber: '14-500-596', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500594', + model: 'solid oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814500594', + itemNumber: '14-500-594', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932758', + model: 'aorus xtreme waterforce wb', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814932758', + itemNumber: '14-932-758', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137945', + model: 'ventus 3x', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137945', + itemNumber: '14-137-945', + }, + { + brand: 'gigabyte', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814932759', + model: 'aorus xtreme waterforce', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814932759', + itemNumber: '14-932-759', + }, + { + brand: 'pny', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814133899', + model: 'triple fan oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814133899', + itemNumber: '14-133-899', + }, + { + brand: 'zotac', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814500595', + model: 'amp extreme infinity', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814500595', + itemNumber: '14-500-595', + }, + { + brand: 'msi', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814137914', + model: 'shadow 3x oc', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814137914', + itemNumber: '14-137-914', + }, + { + brand: 'asus', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=N82E16814126776', + model: 'prime', + series: '5080', + url: 'https://www.newegg.com/p/N82E16814126776', + itemNumber: '14-126-776', }, ], name: 'newegg', + country: 'US', realTimeInventoryLookup: async (itemNumber: string) => { const request_url = 'https://www.newegg.com/product/api/ProductRealtime?ItemNumber=' + @@ -1278,3 +2152,20 @@ export const Newegg: Store = { ); }, }; + +/* Copy Paste Template + +Copy and paste the item number to the end of each link. +https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=itemNumber +https://www.newegg.com/p/itemNumber + +{ + brand: '', + cartUrl: + 'https://secure.newegg.com/Shopping/AddtoCart.aspx?Submit=ADD&ItemList=', + model: '', + series: '', + url: 'https://www.newegg.com/p/', + itemNumber: 'XX-XXX-XXX' +}, +*/ diff --git a/src/store/model/noelleeming.ts b/src/store/model/noelleeming.ts index 660714c758..5545236b9f 100644 --- a/src/store/model/noelleeming.ts +++ b/src/store/model/noelleeming.ts @@ -38,4 +38,5 @@ export const NoelLeeming: Store = { }, ], name: 'noelleeming', + country: 'NZ', }; diff --git a/src/store/model/notebooksbilliger.ts b/src/store/model/notebooksbilliger.ts index b9cd025939..778cb7f823 100644 --- a/src/store/model/notebooksbilliger.ts +++ b/src/store/model/notebooksbilliger.ts @@ -122,18 +122,6 @@ export const Notebooksbilliger: Store = { 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', @@ -212,18 +200,6 @@ export const Notebooksbilliger: Store = { 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', @@ -266,18 +242,6 @@ export const Notebooksbilliger: Store = { 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', @@ -316,4 +280,5 @@ export const Notebooksbilliger: Store = { }, ], name: 'notebooksbilliger', + country: 'DE', }; diff --git a/src/store/model/novatech.ts b/src/store/model/novatech.ts index 04efad8444..525e3bc980 100644 --- a/src/store/model/novatech.ts +++ b/src/store/model/novatech.ts @@ -85,5 +85,6 @@ export const Novatech: Store = { ], }, name: 'novatech', + country: 'UK', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/novoatalho.ts b/src/store/model/novoatalho.ts index db5e9ac93c..3837529787 100644 --- a/src/store/model/novoatalho.ts +++ b/src/store/model/novoatalho.ts @@ -184,5 +184,6 @@ export const NovoAtalho: Store = { }, ], name: 'novoatalho', + country: 'PT', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/nvidia-de.ts b/src/store/model/nvidia-de.ts index 0b2a38f02d..e8de308d1c 100644 --- a/src/store/model/nvidia-de.ts +++ b/src/store/model/nvidia-de.ts @@ -23,26 +23,39 @@ export const NvidiaDE: Store = { brand: 'nvidia', model: 'founders edition', series: '3060ti', - url: 'https://www.nvidia.com/de-de/shop/geforce/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/de-de/geforce/store/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3070', - url: 'https://www.nvidia.com/de-de/shop/geforce/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/de-de/geforce/store/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3070ti', + url: 'https://shop.nvidia.com/de-de/geforce/store/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203070%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3080', - url: 'https://www.nvidia.com/de-de/shop/geforce/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/de-de/geforce/store/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3080ti', + url: 'https://shop.nvidia.com/de-de/geforce/store/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203080%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3090', - url: 'https://www.nvidia.com/de-de/shop/geforce/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/de-de/geforce/store/gpu/?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA', }, ], name: 'nvidia-de', + country: 'DE', }; diff --git a/src/store/model/nvidia-es.ts b/src/store/model/nvidia-es.ts index 7e588d8b93..cc1125c4f4 100644 --- a/src/store/model/nvidia-es.ts +++ b/src/store/model/nvidia-es.ts @@ -23,38 +23,39 @@ export const NvidiaES: Store = { brand: 'nvidia', model: 'founders edition', series: '3060ti', - url: 'https://www.nvidia.com/es-es/shop/geforce/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/es-es/geforce/store/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3070', - url: 'https://www.nvidia.com/es-es/shop/geforce/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/es-es/geforce/store/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3070ti', - url: 'https://shop.nvidia.com/es-es/geforce/store/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203070%20Ti&manufacturer=NVIDIA&manufacturer_filter=NVIDIA~1,ACER~0,ASUS~0,EVGA~0,GAINWARD~0,GIGABYTE~1,HP~0,LENOVO~0,MSI~1,PALIT~1,PNY~2,ZOTAC~2', + url: 'https://shop.nvidia.com/es-es/geforce/store/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203070%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3080', - url: 'https://www.nvidia.com/es-es/shop/geforce/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/es-es/geforce/store/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3080ti', - url: 'https://shop.nvidia.com/es-es/geforce/store/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203080%20Ti&manufacturer=NVIDIA&gpu_filter=RTX%203090~1,RTX%203080%20Ti~1,RTX%203080~1,RTX%203070%20Ti~1,RTX%203070~1,RTX%203060%20Ti~1,RTX%203060~0,RTX%202080%20Ti~0,RTX%202080%20SUPER~0,RTX%202080~0,RTX%202070%20SUPER~0,RTX%202070~0,RTX%202060~0,GTX%201660%20Ti~0,GTX%201660%20SUPER~0,GTX%201660~0,GTX%201650%20Ti~0,GTX%201650%20SUPER~0,GTX%201650~0', + url: 'https://shop.nvidia.com/es-es/geforce/store/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203080%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3090', - url: 'https://www.nvidia.com/es-es/shop/geforce/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/es-es/geforce/store/gpu/?page=1&limit=9&locale=es-es&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA', }, ], name: 'nvidia-es', + country: 'ES', }; diff --git a/src/store/model/nvidia-fr.ts b/src/store/model/nvidia-fr.ts index fa1cb37d7f..b236c50446 100644 --- a/src/store/model/nvidia-fr.ts +++ b/src/store/model/nvidia-fr.ts @@ -23,26 +23,39 @@ export const NvidiaFR: Store = { brand: 'nvidia', model: 'founders edition', series: '3060ti', - url: 'https://www.nvidia.com/fr-fr/shop/geforce/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/fr-fr/geforce/store/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3070', - url: 'https://www.nvidia.com/fr-fr/shop/geforce/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/fr-fr/geforce/store/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3070ti', + url: 'https://shop.nvidia.com/fr-fr/geforce/store/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203070%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3080', - url: 'https://www.nvidia.com/fr-fr/shop/geforce/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/fr-fr/geforce/store/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3080ti', + url: 'https://shop.nvidia.com/fr-fr/geforce/store/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203080%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3090', - url: 'https://www.nvidia.com/fr-fr/shop/geforce/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/fr-fr/geforce/store/gpu/?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA', }, ], name: 'nvidia-fr', + country: 'FR', }; diff --git a/src/store/model/nvidia-gb.ts b/src/store/model/nvidia-gb.ts index 9980b26ecd..52a460939d 100644 --- a/src/store/model/nvidia-gb.ts +++ b/src/store/model/nvidia-gb.ts @@ -23,26 +23,39 @@ export const NvidiaGB: Store = { brand: 'nvidia', model: 'founders edition', series: '3060ti', - url: 'https://www.nvidia.com/en-gb/shop/geforce/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/en-gb/geforce/store/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203060%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3070', - url: 'https://www.nvidia.com/en-gb/shop/geforce/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/en-gb/geforce/store/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203070&manufacturer=NVIDIA', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3070ti', + url: 'https://shop.nvidia.com/en-gb/geforce/store/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203070%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3080', - url: 'https://www.nvidia.com/en-gb/shop/geforce/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/en-gb/geforce/store/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203080&manufacturer=NVIDIA', + }, + { + brand: 'nvidia', + model: 'founders edition', + series: '3080ti', + url: 'https://shop.nvidia.com/en-gb/geforce/store/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203080%20Ti&manufacturer=NVIDIA', }, { brand: 'nvidia', model: 'founders edition', series: '3090', - url: 'https://www.nvidia.com/en-gb/shop/geforce/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA', + url: 'https://shop.nvidia.com/en-gb/geforce/store/gpu/?page=1&limit=9&locale=en-gb&category=GPU&gpu=RTX%203090&manufacturer=NVIDIA', }, ], name: 'nvidia-gb', + country: 'UK', }; diff --git a/src/store/model/officedepot.ts b/src/store/model/officedepot.ts index efa80b7378..2cb4b7ff81 100644 --- a/src/store/model/officedepot.ts +++ b/src/store/model/officedepot.ts @@ -43,4 +43,5 @@ export const OfficeDepot: Store = { }, ], name: 'officedepot', + country: 'US', }; diff --git a/src/store/model/ollo.ts b/src/store/model/ollo.ts index 1db030b508..efe1286154 100644 --- a/src/store/model/ollo.ts +++ b/src/store/model/ollo.ts @@ -25,7 +25,7 @@ export const Ollo: Store = { brand: 'test:brand', model: 'test:model', series: 'test:series', - url: 'https://www.ollo.it/apple-airpods-2nd-generation-bluetooth-stereofonico-bianco/p_759688', + url: 'https://www.ollo.it/trevi-dr-437-sa-lettore-mp3-8-gb-grigio/p_811410', }, { brand: 'gainward', @@ -143,4 +143,5 @@ export const Ollo: Store = { }, ], name: 'ollo', + country: 'IT', }; diff --git a/src/store/model/opirata.ts b/src/store/model/opirata.ts index a4d4734963..64613d0b80 100644 --- a/src/store/model/opirata.ts +++ b/src/store/model/opirata.ts @@ -218,4 +218,5 @@ export const Opirata: Store = { }, ], name: 'opirata', + country: 'ES', }; diff --git a/src/store/model/otto.ts b/src/store/model/otto.ts index 05614122c6..a1f75347c9 100644 --- a/src/store/model/otto.ts +++ b/src/store/model/otto.ts @@ -93,4 +93,5 @@ export const Otto: Store = { }, ], name: 'otto', + country: 'DE', }; diff --git a/src/store/model/overclockers.ts b/src/store/model/overclockers.ts index 30eca26253..bce0cca246 100644 --- a/src/store/model/overclockers.ts +++ b/src/store/model/overclockers.ts @@ -96,5 +96,6 @@ export const Overclockers: Store = { ], }, name: 'overclockers', + country: 'UK', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/pbtech.ts b/src/store/model/pbtech.ts index abe9b0807b..d1ee2179fe 100644 --- a/src/store/model/pbtech.ts +++ b/src/store/model/pbtech.ts @@ -70,4 +70,5 @@ export const PBTech: Store = { }, ], name: 'pbtech', + country: 'AU', }; diff --git a/src/store/model/pcbyte.ts b/src/store/model/pcbyte.ts index 04a693a41f..818f9101ed 100644 --- a/src/store/model/pcbyte.ts +++ b/src/store/model/pcbyte.ts @@ -212,4 +212,5 @@ export const PCByte: Store = { }, ], name: 'pcbyte', + country: 'AU', }; diff --git a/src/store/model/pccg.ts b/src/store/model/pccg.ts index 8659255655..b383f904ab 100644 --- a/src/store/model/pccg.ts +++ b/src/store/model/pccg.ts @@ -124,4 +124,5 @@ export const Pccg: Store = { }, ], name: 'pccg', + country: 'AU', }; diff --git a/src/store/model/pccomponentes.ts b/src/store/model/pccomponentes.ts index d04a088ab9..d209f20367 100644 --- a/src/store/model/pccomponentes.ts +++ b/src/store/model/pccomponentes.ts @@ -526,4 +526,5 @@ export const PCComponentes: Store = { }, ], name: 'pccomponentes', + country: 'ES', }; diff --git a/src/store/model/pcdiga.ts b/src/store/model/pcdiga.ts index fa128ef9eb..d287afb954 100644 --- a/src/store/model/pcdiga.ts +++ b/src/store/model/pcdiga.ts @@ -487,5 +487,6 @@ export const PCDiga: Store = { }, ], name: 'pcdiga', + country: 'PT', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/pcking.ts b/src/store/model/pcking.ts index 9737ff23d8..213e5d6b16 100644 --- a/src/store/model/pcking.ts +++ b/src/store/model/pcking.ts @@ -163,6 +163,72 @@ export const PCKing: Store = { series: '3090', url: 'https://www.pcking.de/eshop.php?eslink=1&action=article_detail&s_supplier_id=14&s_supplier_aid=14753078', }, + { + brand: 'asus', + model: 'dual', + series: 'rx6700xt', + url: 'https://www.pcking.de/eshop.php?action=article_detail&s_supplier_aid=15952540', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6700xt', + url: 'https://www.pcking.de/eshop.php?action=article_detail&s_supplier_aid=15930630', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6700xt', + url: 'https://www.pcking.de/eshop.php?action=article_detail&s_supplier_aid=15930631', + }, + { + brand: 'gigabyte', + model: 'amd reference', + series: 'rx6700xt', + url: 'https://www.pcking.de/eshop.php?action=article_detail&s_supplier_aid=15673300', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: 'rx6700xt', + url: 'https://www.pcking.de/eshop.php?action=article_detail&s_supplier_aid=15673299', + }, + { + brand: 'msi', + model: 'mech 2x', + series: 'rx6700xt', + url: 'https://www.pcking.de/eshop.php?action=article_detail&s_supplier_aid=15971204', + }, + { + brand: 'msi', + model: 'mech 2x oc', + series: 'rx6700xt', + url: 'https://www.pcking.de/eshop.php?action=article_detail&s_supplier_aid=15947815', + }, + { + brand: 'msi', + model: 'gaming x', + series: 'rx6700xt', + url: 'https://www.pcking.de/eshop.php?action=article_detail&s_supplier_aid=15947814', + }, + { + brand: 'powercolor', + model: 'hellhound white', + series: 'rx6700xt', + url: 'https://www.pcking.de/eshop.php?action=article_detail&s_supplier_aid=16349358', + }, + { + brand: 'sapphire', + model: 'pulse', + series: 'rx6700xt', + url: 'https://www.pcking.de/eshop.php?action=article_detail&s_supplier_aid=15919795', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6700xt', + url: 'https://www.pcking.de/eshop.php?action=article_detail&s_supplier_aid=15938177', + }, { brand: 'amd', model: '5600x', @@ -183,4 +249,5 @@ export const PCKing: Store = { }, ], name: 'pcking', + country: 'DE', }; diff --git a/src/store/model/playstation.ts b/src/store/model/playstation.ts index fbf0ea6ccc..5086c2a8fc 100644 --- a/src/store/model/playstation.ts +++ b/src/store/model/playstation.ts @@ -43,6 +43,7 @@ export const PlayStation: Store = { }, ], name: 'playstation', + country: 'US', realTimeInventoryLookup: async (itemNumber: string) => { const request_url = 'https://api.direct.playstation.com/commercewebservices/ps-direct-us/products/productList?fields=BASIC&productCodes=' + diff --git a/src/store/model/pny.ts b/src/store/model/pny.ts index 94000e8b1a..68bf157e99 100644 --- a/src/store/model/pny.ts +++ b/src/store/model/pny.ts @@ -67,6 +67,136 @@ export const Pny: Store = { series: '3090', url: 'https://www.pny.com/geforce-rtx-3090-xlr8-gaming-epic-x-rgb-triple-fan-p', }, + { + brand: 'pny', + model: 'xlr8 verto epic x oc', + series: '4090', + url: 'https://www.pny.com/pny-geforce-rtx-4090-24gb-xlr8-rgb-triple-fan-oc', + }, + { + brand: 'pny', + model: 'xlr8 verto epic x', + series: '4090', + url: 'https://www.pny.com/pny-geforce-rtx-4090-24gb-xlr8-rgb-triple-fan', + }, + { + brand: 'pny', + model: 'xlr8 verto epic x', + series: '4080-16g', + url: 'https://www.pny.com/pny-geforce-rtx-4080-16gb-xlr8-gaming-verto-epic-x-rgb-triple-fan', + }, + { + brand: 'pny', + model: 'xlr8 verto epic x oc', + series: '4080-16g', + url: 'https://www.pny.com/pny-geforce-rtx-4080-16gb-epic-x-argb-triple-fan-oc', + }, + { + brand: 'pny', + model: 'triple fan', + series: '5070', + url: 'https://www.pny.com/geforce-rtx-5070-series?sku=VCG507012TFXPB1', + }, + { + brand: 'pny', + model: 'triple fan oc', + series: '5070', + url: 'https://www.pny.com/geforce-rtx-5070-series?sku=VCG507012TFXPB1-O', + }, + { + brand: 'pny', + model: 'epic x', + series: '5070', + url: 'https://www.pny.com/geforce-rtx-5070-series?sku=VCG507012TFXXPB1', + }, + { + brand: 'pny', + model: 'epic x oc', + series: '5070', + url: 'https://www.pny.com/geforce-rtx-5070-series?sku=VCG507012TFXXPB1-O', + }, + { + brand: 'pny', + model: 'triple fan', + series: '5070ti', + url: 'https://www.pny.com/geforce-rtx-5070-ti-series?sku=VCG5070T16TFXPB1', + }, + { + brand: 'pny', + model: 'triple fan oc', + series: '5070ti', + url: 'https://www.pny.com/geforce-rtx-5070-ti-series?sku=VCG5070T16TFXPB1-O', + }, + { + brand: 'pny', + model: 'epic x', + series: '5070ti', + url: 'https://www.pny.com/geforce-rtx-5070-ti-series?sku=VCG5070T16TFXXPB1', + }, + { + brand: 'pny', + model: 'epic x oc', + series: '5070ti', + url: 'https://www.pny.com/geforce-rtx-5070-ti-series?sku=VCG5070T16TFXXPB1-O', + }, + { + brand: 'pny', + model: 'triple fan', + series: '5080', + url: 'https://www.pny.com/geforce-rtx-5080-series?sku=VCG508016TFXPB1', + }, + { + brand: 'pny', + model: 'triple fan oc', + series: '5080', + url: 'https://www.pny.com/geforce-rtx-5080-series?sku=VCG508016TFXPB1-O', + }, + { + brand: 'pny', + model: 'epic x', + series: '5080', + url: 'https://www.pny.com/geforce-rtx-5080-series?sku=VCG508016TFXXPB1', + }, + { + brand: 'pny', + model: 'epic x oc', + series: '5080', + url: 'https://www.pny.com/geforce-rtx-5080-series?sku=VCG508016TFXXPB1-O', + }, + { + brand: 'pny', + model: 'triple fan', + series: '5090', + url: 'https://www.pny.com/geforce-rtx-5090-series?sku=VCG509032TFXPB1', + }, + { + brand: 'pny', + model: 'triple fan oc', + series: '5090', + url: 'https://www.pny.com/geforce-rtx-5090-series?sku=VCG509032TFXPB1-O', + }, + { + brand: 'pny', + model: 'epic x', + series: '5090', + url: 'https://www.pny.com/geforce-rtx-5090-series?sku=VCG509032TFXXPB1', + }, + { + brand: 'pny', + model: 'epic x oc', + series: '5090', + url: 'https://www.pny.com/geforce-rtx-5090-series?sku=VCG509032TFXXPB1-O', + }, ], name: 'pny', + country: 'US', }; + +/* Copy Paste Template +{ + brand: 'pny', + model: '', + series: '', + url: '', +}, +*/ diff --git a/src/store/model/power-no.ts b/src/store/model/power-no.ts index fbe4640bb4..c6409607c8 100644 --- a/src/store/model/power-no.ts +++ b/src/store/model/power-no.ts @@ -93,6 +93,331 @@ export const PowerNO: Store = { series: '3080', url: 'https://www.power.no/data-og-tilbehoer/p-1128968/', }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060ti', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-tuf-gaming-geforce-rtx-3060-ti-oc-edition-grafikkort/p-1132911/', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-rog-strix-geforce-rtx-3090-oc-edition-24-gb-grafikkort/p-1128962/', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3070', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-tuf-gaming-rtx-3070-oc-8gb/p-1135069/', + }, + { + brand: 'pny', + model: 'xlr8 uprising', + series: '3070', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/pny-geforce-rtx-3070-8-gb-uprising-dual-fan-edition-grafikkort/p-1128969/', + }, + { + brand: 'asus', + model: 'dual', + series: '3060', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-dual-geforce-rtx-3060-ti-grafikkort/p-1132914/', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3070', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/pny-geforce-rtx-3070-8-gb-xlr8-gaming-revel-epic-x-rgb-triple-fan-edition-grafikkort/p-1128970/', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3070', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-rog-strix-rtx-3070-oc-8gb/p-1135068/', + }, + { + brand: 'asus', + model: 'dual', + series: '3060', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-dual-rtx-3060-ti-mini-oc-8-gb-grafikkort/p-1141085/', + }, + { + brand: 'pny', + model: 'xlr8 uprising', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/pny-geforce-rtx-3080-10-gb-xlr8-gaming-uprising-epic-x-rgb-triple-fan-edition-grafikkort/p-1128968/', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/msi-geforce-rtx-3080-10-gb-ventus-3x-oc-grafikkort/p-1118420/', + }, + { + brand: 'msi', + model: 'strix', + series: '3060ti', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-rog-strix-geforce-rtx-3060-ti-grafikkort/p-1132910/', + }, + { + brand: 'asus', + model: 'dual', + series: '3070', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-dual-geforce-rtx-3070-8-gb-grafikkort/p-1117757/', + }, + { + brand: 'asus', + model: 'tuf', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-tuf-gaming-geforce-rtx-3080-10-gb-grafikkort/p-1115923/', + }, + { + brand: 'asus', + model: 'strix', + series: '3070', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-rog-strix-geforce-rtx-3070-8-gb-grafikkort/p-1117756/', + }, + { + brand: 'asus', + model: 'strix', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-rog-strix-geforce-rtx-3080-10-gb-grafikkort/p-1117755/', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/msi-geforce-rtx-3090-suprim-x-24g-grafikkort/p-1145754/', + }, + { + brand: 'asus', + model: 'dual', + series: '3060', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-dual-geforce-rtx-3060-12-gb-grafikkort/p-1167374/', + }, + { + brand: 'asus', + model: 'dual oc', + series: '3060', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-dual-geforce-rtx-3060-12-gb-oc-edition-grafikkort/p-1167373/', + }, + { + brand: 'asus', + model: 'tuf', + series: '3060', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-tuf-gaming-geforce-rtx-3060-12-gb-grafikkort/p-1167372/', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-tuf-gaming-geforce-rtx-3060-12-gb-oc-edition-grafikkort/p-1167371/', + }, + { + brand: 'asus', + model: 'strix', + series: '3060', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-rog-strix-geforce-rtx-3060-12-gb-grafikkort/p-1167370/', + }, + { + brand: 'asus', + model: 'strix oc', + series: '3060', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-rog-strix-geforce-rtx-3060-12-gb-oc-edition-grafikkort/p-1167369/', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/msi-geforce-rtx-3060-gaming-x-trio-12-gb-grafikkort/p-1163157/', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3060', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/msi-geforce-rtx-3060-gaming-x-12-gb-grafikkort/p-1163156/', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3070', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/msi-geforce-rtx-3070-8-gb-ventus-3x-oc-grafikkort/p-1147092/', + }, + { + brand: 'msi', + model: 'suprim x', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/msi-geforce-rtx-3080-suprim-x-10g-grafikkort/p-1145753/', + }, + { + brand: 'msi', + model: 'ventus 2x oc', + series: '3070', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/msi-geforce-rtx-3070-ventus-2x-oc-grafikkort/p-1145752/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-gf-rtx-3090-aorus-xtreme-24-gb-grafikkort/p-1141935/', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-gf-rtx-3090-aorus-master-24-gb-grafikkort/p-1141934/', + }, + { + brand: 'gigabyte', + model: 'turbo', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-geforce-rtx-3090-turbo-24-gb-grafikkort/p-1141933/', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-geforce-rtx-3090-vision-oc-24-gb-grafikkort/p-1141932/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-rtx-3090-aorus-xtreme-wf-24-gb-grafikkort/p-1141931/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme waterforce wb', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-aorus-geforce-rtx-3090-xtreme-waterforce-wb-24-gb-grafikkort/p-1141930/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-gf-rtx-3080-aorus-xtreme-10-gb-grafikkort/p-1141929/', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-geforce-rtx-3080-eagle-10-gb-grafikkort/p-1141928/', + }, + { + brand: 'asus', + model: 'dual', + series: '3060ti', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-dual-rtx-3060-ti-mini-8-gb-grafikkort/p-1141086/', + }, + { + brand: 'asus', + model: 'tuf', + series: '3060ti', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-tuf-gaming-geforce-rtx-3060-ti-grafikkort/p-1132912/', + }, + { + brand: 'asus', + model: 'tuf oc', + series: '3060ti', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-rog-strix-geforce-rtx-3060-ti-oc-edition-grafikkort/p-1132909/', + }, + { + brand: 'asus', + model: 'tuf', + series: '3070', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-tuf-gaming-geforce-rtx-3070-8-gb-grafikkort/p-1130029/', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/pny-geforce-rtx-3090-24-gb-xlr8-gaming-revel-epic-x-rgb-triple-fan-edition-grafikkort/p-1128967/', + }, + { + brand: 'pny', + model: 'xlr8 uprising', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/pny-geforce-rtx-3090-24-gb-xlr8-gaming-uprising-epic-x-rgb-triple-fan-edition-grafikkort/p-1128966/', + }, + { + brand: 'pny', + model: 'xlr8 revel', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/pny-geforce-rtx-3080-10-gb-xlr8-gaming-revel-epic-x-rgb-triple-fan-edition-grafikkort/p-1128965/', + }, + { + brand: 'gigabyte', + model: 'vision oc', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-geforce-rtx-3080-vision-oc-10-gb-grafikkort/p-1121308/', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-aorus-geforce-rtx-3080-master-10-gb-grafikkort/p-1121307/', + }, + { + brand: 'gigabyte', + model: 'aorus master', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-aorus-geforce-rtx-3090-master-24-gb-grafikkort/p-1121304/', + }, + { + brand: 'gigabyte', + model: 'aorus xtreme', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-aorus-geforce-rtx-3090-xtreme-24-gb-grafikkort/p-1121303/', + }, + { + brand: 'msi', + model: 'ventus 3x oc', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/msi-geforce-rtx-3090-24-gb-ventus-3x-oc-grafikkort/p-1118422/', + }, + { + brand: 'msi', + model: 'gaming x trio', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/msi-geforce-rtx-3090-24-gb-gaming-x-trio-grafikkort/p-1118421/', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-geforce-rtx-3090-24-gb-gaming-oc-grafikkort/p-1118418/', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-geforce-rtx-3090-24-gb-eagle-oc-grafikkort/p-1118417/', + }, + { + brand: 'gigabyte', + model: 'gaming oc', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-geforce-rtx-3080-10-gb-gaming-oc-grafikkort/p-1118416/', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: '3080', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/gigabyte-geforce-rtx-3080-10-gb-eagle-oc-grafikkort/p-1118415/', + }, + { + brand: 'asus', + model: 'strix', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-rog-strix-geforce-rtx-3090-24-gb-grafikkort/p-1117754/', + }, + { + brand: 'asus', + model: 'tuf', + series: '3090', + url: 'https://www.power.no/data-og-tilbehoer/datakomponenter/grafikkort/asus-tuf-gaming-geforce-rtx-3090-24-gb-grafikkort/p-1115922/', + }, ], name: 'power-no', + country: 'NO', }; diff --git a/src/store/model/proshop-de.ts b/src/store/model/proshop-de.ts index 61ee210ec6..c4c47fbe05 100644 --- a/src/store/model/proshop-de.ts +++ b/src/store/model/proshop-de.ts @@ -258,6 +258,132 @@ export const ProshopDE: Store = { series: '3090', url: 'https://www.proshop.de/2876881', }, + { + brand: 'asus', + model: 'amd reference', + series: 'rx6700xt', + url: 'https://www.proshop.de/2931749', + }, + { + brand: 'asus', + model: 'dual', + series: 'rx6700xt', + url: 'https://www.proshop.de/2931751', + }, + { + brand: 'asus', + model: 'tuf oc', + series: 'rx6700xt', + url: 'https://www.proshop.de/2928902', + }, + { + brand: 'asus', + model: 'strix oc', + series: 'rx6700xt', + url: 'https://www.proshop.de/2928906', + }, + { + brand: 'gigabyte', + model: 'amd reference', + series: 'rx6700xt', + url: 'https://www.proshop.de/2931754', + }, + { + brand: 'gigabyte', + model: 'eagle', + series: 'rx6700xt', + url: 'https://www.proshop.de/2929320', + }, + { + brand: 'gigabyte', + model: 'eagle oc', + series: 'rx6700xt', + url: 'https://www.proshop.de/2929323', + }, + { + brand: 'gigabyte', + model: 'aorus elite', + series: 'rx6700xt', + url: 'https://www.proshop.de/2929319', + }, + { + brand: 'msi', + model: 'mech 2x', + series: 'rx6700xt', + url: 'https://www.proshop.de/2929317', + }, + { + brand: 'msi', + model: 'mech 2x oc', + series: 'rx6700xt', + url: 'https://www.proshop.de/2929318', + }, + { + brand: 'msi', + model: 'gaming x', + series: 'rx6700xt', + url: 'https://www.proshop.de/2929316', + }, + { + brand: 'powercolor', + model: 'amd reference', + series: 'rx6700xt', + url: 'https://www.proshop.de/2931748', + }, + { + brand: 'powercolor', + model: 'fighter', + series: 'rx6700xt', + url: 'https://www.proshop.de/2930939', + }, + { + brand: 'powercolor', + model: 'hellhound', + series: 'rx6700xt', + url: 'https://www.proshop.de/2930940', + }, + { + brand: 'powercolor', + model: 'red devil', + series: 'rx6700xt', + url: 'https://www.proshop.de/2930941', + }, + { + brand: 'sapphire', + model: 'pulse', + series: 'rx6700xt', + url: 'https://www.proshop.de/2935127', + }, + { + brand: 'sapphire', + model: 'pulse', + series: 'rx6700xt', + url: 'https://www.proshop.de/2987327', + }, + { + brand: 'sapphire', + model: 'nitro+', + series: 'rx6700xt', + url: 'https://www.proshop.de/2935128', + }, + { + brand: 'xfx', + model: 'merc', + series: 'rx6700xt', + url: 'https://www.proshop.de/2934180', + }, + { + brand: 'xfx', + model: 'qick ultra', + series: 'rx6700xt', + url: 'https://www.proshop.de/2934182', + }, + { + brand: 'xfx', + model: 'qick', + series: 'rx6700xt', + url: 'https://www.proshop.de/2954595', + }, { brand: 'amd', model: '5600x', @@ -284,4 +410,5 @@ export const ProshopDE: Store = { }, ], name: 'proshop-de', + country: 'DE', }; diff --git a/src/store/model/proshop-dk.ts b/src/store/model/proshop-dk.ts index 204bec44d2..e95bf1f76d 100644 --- a/src/store/model/proshop-dk.ts +++ b/src/store/model/proshop-dk.ts @@ -626,4 +626,5 @@ export const ProshopDK: Store = { }, ], name: 'proshop-dk', + country: 'DK', }; diff --git a/src/store/model/proshop-no.ts b/src/store/model/proshop-no.ts index 124a4b8d89..ea66f95277 100644 --- a/src/store/model/proshop-no.ts +++ b/src/store/model/proshop-no.ts @@ -706,4 +706,5 @@ export const ProshopNO: Store = { }, ], name: 'proshop-no', + country: 'NO', }; diff --git a/src/store/model/rosman-melb.ts b/src/store/model/rosman-melb.ts index 47ff5c7827..0a38c173c5 100644 --- a/src/store/model/rosman-melb.ts +++ b/src/store/model/rosman-melb.ts @@ -112,4 +112,5 @@ export const RosmanMelb: Store = { }, ], name: 'rosman-melb', + country: 'AU', }; diff --git a/src/store/model/rosman.ts b/src/store/model/rosman.ts index 7e3b4410e2..d4763d8f21 100644 --- a/src/store/model/rosman.ts +++ b/src/store/model/rosman.ts @@ -112,4 +112,5 @@ export const Rosman: Store = { }, ], name: 'rosman', + country: 'AU', }; diff --git a/src/store/model/saturn.ts b/src/store/model/saturn.ts index 186d425ce4..a0f3bd3e7f 100644 --- a/src/store/model/saturn.ts +++ b/src/store/model/saturn.ts @@ -33,6 +33,10 @@ export const Saturn: Store = { container: '#root', text: ['Dieser Artikel ist bald wieder für Sie verfügbar'], }, + { + container: '#root', + text: ['Dieser Artikel ist bald wieder verfügbar'], + }, ], }, links: [ @@ -204,6 +208,36 @@ export const Saturn: Store = { series: '3090', url: 'https://www.saturn.de/de/product/-2683226.html', }, + { + brand: 'asrock', + model: 'phantom gaming oc', + series: 'rx6700xt', + url: 'https://www.saturn.de/de/product/-85340951.html', + }, + { + brand: 'gigabyte', + model: 'aorus elite', + series: 'rx6700xt', + url: 'https://www.saturn.de/de/product/-2728671.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/-2661938.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-playstation%C2%AE5-hd-kamera-2715822.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-ps5-assassins-creed-valhalla-2715828.html', + }, { brand: 'sony', model: 'ps5 console', @@ -220,13 +254,79 @@ export const Saturn: Store = { brand: 'sony', model: 'ps5 console', series: 'sonyps5c', - url: 'https://www.saturn.de/de/product/_sony-ps5-assassins-creed-valhalla-2715828.html', + url: 'https://www.saturn.de/de/product/_sony-ps5-ghost-of-tsushima-directors-cut-2757003.html', }, { brand: 'sony', model: 'ps5 console', series: 'sonyps5c', - url: 'https://www.saturn.de/de/product/-2661938.html', + url: 'https://www.saturn.de/de/product/_sony-ps5-ratchet-clank-rift-apart-2741441.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-playstationr5-deathloop-death-stranding-dc-nur-online-2768018.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-playstationr5-death-stranding-directors-cut-nur-online-2765122.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-playstationr5-ghost-of-tsushima-death-stranding-dc-nur-online-2768019.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-playstationr5-2762011.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-playstation%C2%AE5-2661938.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-playstation%C2%AE5-dualsense%E2%84%A2-2752998.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-ps5-ghost-of-tsushima-directors-cut-2757003.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-ps5-ratchet-clank-rift-apart-2741441.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-playstationr5-deathloop-death-stranding-dc-nur-online-2768018.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-playstationr5-death-stranding-directors-cut-nur-online-2765122.html', + }, + { + brand: 'sony', + model: 'ps5 console', + series: 'sonyps5c', + url: 'https://www.saturn.de/de/product/_sony-playstationr5-ghost-of-tsushima-death-stranding-dc-nur-online-2768019.html', }, { brand: 'sony', @@ -234,6 +334,18 @@ export const Saturn: Store = { series: 'sonyps5de', url: 'https://www.saturn.de/de/product/-2661939.html', }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.saturn.de/de/product/_sony-playstation%C2%AE5-digital-edition-2661939.html', + }, + { + brand: 'sony', + model: 'ps5 digital', + series: 'sonyps5de', + url: 'https://www.saturn.de/de/product/_sony-playstation%C2%AE5-digital-edition-medienfernbedienung-2722423.html', + }, { brand: 'microsoft', model: 'xbox series x', @@ -248,4 +360,5 @@ export const Saturn: Store = { }, ], name: 'saturn', + country: 'DE', }; diff --git a/src/store/model/saveonit.ts b/src/store/model/saveonit.ts index ee6bbcd2e7..50272f150b 100644 --- a/src/store/model/saveonit.ts +++ b/src/store/model/saveonit.ts @@ -164,4 +164,5 @@ export const SaveOnIt: Store = { }, ], name: 'saveonit', + country: 'AU', }; diff --git a/src/store/model/scan.ts b/src/store/model/scan.ts index 9d8e0f5ee4..008a656079 100644 --- a/src/store/model/scan.ts +++ b/src/store/model/scan.ts @@ -114,5 +114,6 @@ export const Scan: Store = { ], }, name: 'scan', + country: 'UK', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/scorptec.ts b/src/store/model/scorptec.ts index 7a4ab9964b..9fd630875b 100644 --- a/src/store/model/scorptec.ts +++ b/src/store/model/scorptec.ts @@ -172,4 +172,5 @@ export const Scorptec: Store = { }, ], name: 'scorptec', + country: 'AU', }; diff --git a/src/store/model/shopto.ts b/src/store/model/shopto.ts index a762bd335a..fce0349793 100644 --- a/src/store/model/shopto.ts +++ b/src/store/model/shopto.ts @@ -29,4 +29,5 @@ export const ShopTo: Store = { }, ], name: 'shopto', + country: 'UK', }; diff --git a/src/store/model/siabyte.ts b/src/store/model/siabyte.ts index f931f7e6e6..5fc3ad09e3 100644 --- a/src/store/model/siabyte.ts +++ b/src/store/model/siabyte.ts @@ -335,4 +335,5 @@ export const Siabyte: Store = { }, ], name: 'siabyte', + country: 'ES', }; diff --git a/src/store/model/smythstoys-ie.ts b/src/store/model/smythstoys-ie.ts index 8b938d2696..988b39aaf4 100644 --- a/src/store/model/smythstoys-ie.ts +++ b/src/store/model/smythstoys-ie.ts @@ -32,5 +32,6 @@ export const SmythsToysIE: Store = { }, ], name: 'smythstoys-ie', + country: 'IE', waitUntil: 'domcontentloaded', }; diff --git a/src/store/model/smythstoys.ts b/src/store/model/smythstoys.ts index fc033e238a..e0d46ecd56 100644 --- a/src/store/model/smythstoys.ts +++ b/src/store/model/smythstoys.ts @@ -37,4 +37,5 @@ export const SmythsToys: Store = { }, ], name: 'smythstoys', + country: 'UK', }; diff --git a/src/store/model/spielegrotte.ts b/src/store/model/spielegrotte.ts index 26f95cffcf..c4178223b2 100644 --- a/src/store/model/spielegrotte.ts +++ b/src/store/model/spielegrotte.ts @@ -42,4 +42,5 @@ export const Spielegrotte: Store = { }, ], name: 'spielegrotte', + country: 'DE', }; diff --git a/src/store/model/store.ts b/src/store/model/store.ts index b58efe656c..49dcaa60bc 100644 --- a/src/store/model/store.ts +++ b/src/store/model/store.ts @@ -16,6 +16,7 @@ export type Brand = | 'amd' | 'asrock' | 'asus' + | 'ax' | 'colorful' | 'corsair' | 'evga' @@ -23,22 +24,27 @@ export type Brand = | 'galax' | 'gigabyte' | 'inno3d' + | 'intel' | 'kfa2' | 'leadtek' + | 'lianli' | 'microsoft' | 'msi' | 'nvidia' | 'palit' | 'pny' + | 'powercolor' | 'sapphire' | 'sony' + | 'sparkle' + | 'ubiquiti' | 'xfx' - | 'powercolor' | 'zotac'; export type Series = | 'test:series' | 'captcha-deterrent' + | '3050' | '3060' | '3060ti' | '3070' @@ -46,20 +52,45 @@ export type Series = | '3080' | '3080ti' | '3090' + | '4060' + | '4070' + | '4070super' + | '4070ti' + | '4080-16g' + | '4090' + | '5070' + | '5070ti' + | '5080' + | '5090' + | 'a3-matx' + | 'arc' | 'darkhero' - | 'rx6800' + | 'g4-doorbell-pro' | 'rx6700xt' + | 'rx6800' | 'rx6800xt' | 'rx6900xt' | 'ryzen5600' | 'ryzen5800' | 'ryzen5900' | 'ryzen5950' + | 'ryzen7800x3d' + | 'ryzen7950x' + | 'ryzen9600x' + | 'ryzen9700x' + | 'ryzen9800x3d' + | 'ryzen9900x' + | 'ryzen9950x' + | 'sf' | 'sonyps5c' | 'sonyps5de' - | 'sf' - | 'xboxsx' - | 'xboxss'; + | 'udm-pro' + | 'udm-us' + | 'udr-us' + | 'unvr-pro' + | 'unvr' + | 'xboxss' + | 'xboxsx'; export type Model = | 'test:model' @@ -68,122 +99,185 @@ export type Model = | '5800x' | '5900x' | '5950x' - | '600 platinum' | '600 gold' + | '600 platinum' | '750 platinum' + | '7800x3d' + | '7950x' + | '9600x' + | '9700x' + | '9800x3d' + | '9900x' + | '9950x' + | 'a3 matx wd' + | 'aero oc' + | 'aero oc sff' | 'amd reference' + | 'amp airo' + | 'amp extreme airo' | 'amp extreme holo' + | 'amp extreme infinity' | 'amp holo' | 'amp white' + | 'aorus box' + | 'aorus x wb' | 'aorus elite' | 'aorus master' + | 'master ice' + | 'aorus master 24g' | 'aorus master type-c' - | 'aorus xtreme' - | 'aorus xtreme waterforce' + | 'aorus master' + | 'aorus w' + | 'aorus x wb' + | 'aorus xtreme waterforce 24g' | 'aorus xtreme waterforce wb' + | 'aorus xtreme waterforce' + | 'aorus xtreme' | 'aorus' - | 'aorus box' - | 'articstorm' + | 'astral oc' + | 'astral' + | 'b580' | 'battle-ax' - | 'challenger' + | 'challenger oc' + | 'challenger pro oc' | 'challenger pro' + | 'challenger' | 'crosshair viii' + | 'dream machine pro' + | 'dream machine' + | 'dream router' | 'dual fan' + | 'dual mini oc' + | 'dual mini' | 'dual oc' | 'dual' - | 'dual mini' - | 'dual mini oc' | 'eagle oc' | 'eagle' | 'ekwb' + | 'epic x oc' | 'epic x' - | 'ex' | 'ex gamer' | 'ex oc' + | 'ex' + | 'expert' + | 'fighter' | 'founders edition' - | 'ftw3' | 'ftw3 black' - | 'ftw3 ultra' | 'ftw3 ultra hybrid' | 'ftw3 ultra hydro copper' - | 'gamerock' + | 'ftw3 ultra' + | 'ftw3' + | 'g4 doorbell pro' | 'gamerock oc' - | 'gaming oc' - | 'gaming oc waterforce wb' + | 'gamerock' | 'gaming oc pro' + | 'gaming oc waterforce wb' + | 'gaming oc' | 'gaming pro oc' | 'gaming pro' + | 'gaming trio oc white' + | 'gaming trio oc' | 'gaming trio' - | 'gaming z trio' + | 'gaming verto epic-x' + | 'gaming x slim' | 'gaming x trio' | 'gaming x' | 'gaming x3' | 'gaming z trio' - | 'ghost' - | 'ghost oc' | 'gaming' - | 'hof' - | 'hof limited edition' - | 'hof premium' + | 'ghost oc' + | 'ghost' + | 'hellhound white' + | 'hellhound' | 'hurricane' + | 'ice dragon super' + | 'ichill frostbite' | 'ichill x2' - | 'ichill x3' | 'ichill x3 red' + | 'ichill x3' | 'ichill x4' - | 'ichill frostbite' - | 'igame advanced' | 'igame advanced oc' + | 'igame advanced' | 'igame ultra oc' | 'igame vulcan oc' + | 'inspire 3x' + | 'inspire 3x oc' | 'jetstream' | 'jetstream oc' + | 'jetstream' | 'kngpn hybrid' | 'ko oc' | 'ko' + | 'lp oc' | 'master' - | 'merc' + | 'mech 2x oc' + | 'mech 2x' | 'merc core' | 'merc ultra' - | 'nitro+' - | 'nitro+ se' - | 'nitro+ oc' - | 'nitro+ oc se' + | 'merc' + | 'network video recorder pro' + | 'network video recorder' | 'nitro oc se' | 'nitro oc' + | 'nitro+ oc se' + | 'nitro+ oc' + | 'nitro+ se' + | 'nitro+' | 'oc' - | 'pegasus' | 'pegasus oc' - | 'phantom' + | 'pegasus' + | 'phantom gaming oc' | 'phantom gaming' | 'phantom gs' + | 'phantom' + | 'phoenix 8G (LHR)' | 'phoenix gs oc' | 'phoenix gs' | 'phoenix' + | 'prime oc' + | 'prime' | 'ps5 console' | 'ps5 digital' - | 'pulse' | 'pulse oc' + | 'pulse' + | 'qick ultra' + | 'qick' | 'red devil' | 'red dragon' | 'sg oc' | 'sg' + | 'shadow 3x' + | 'shadow 3x oc' + | 'solid' + | 'solid oc' | 'single fan' + | 'solid oc' + | 'solid' | 'stormx oc' | 'strix lc' | 'strix oc lc' - | 'strix oc' - | 'strix' | 'strix oc white' + | 'strix oc' | 'strix white' - | 'suprim' + | 'strix' + | 'suprim liquid soc' + | 'suprim liquid x' + | 'suprim oc' + | 'suprim soc' | 'suprim x' - | 'taichi' + | 'suprim' + | 'swft' | 'taichi x oc' - | 'trinity oc' + | 'taichi' | 'trinity oc lhr' + | 'trinity oc' | 'trinity' + | 'triple fan oc' + | 'triple fan' | 'tuf oc' | 'tuf' + | 'tuf gaming' + | 'tuf gaming oc' | 'turbo' | 'twin edge oc white' | 'twin edge oc' @@ -191,32 +285,48 @@ export type Model = | 'twin x2 oc' | 'twin x2' | 'uprising' + | 'vanguard soc launch edition' + | 'vanguard soc' + | 'vanguard' + | 'ventus 2X (LHR)' | 'ventus 2x oc' + | 'ventus 2x white oc' | 'ventus 2x' + | 'ventus 3x e1 oc' + | 'ventus 3x oc plus' + | 'ventus 3x oc white' | 'ventus 3x oc' | 'ventus 3x' + | 'vetro' | 'vision oc' | 'vision' - | 'x3' - | 'x3 oc' + | 'windforce oc' + | 'windforce oc sff' + | 'windforce v2' + | 'windforce' | 'x trio' | 'x3 oc' + | 'x3w' | 'xbox series s' | 'xbox series x' | 'xc black' | 'xc gaming' | 'xc3 black' - | 'xc3 ultra' | 'xc3 ultra hybrid' + | 'xc3 ultra' | 'xc3' | 'xlr8 epic x' - | 'xlr8 gaming' | 'xlr8 gaming uprising epic x' - | 'xlr8 revel' + | 'xlr8 gaming' | 'xlr8 revel epic x' + | 'xlr8 revel' | 'xlr8 uprising' - | 'xtreme' - | 'qick'; + | 'xlr8 verto epic x oc' + | 'xlr8 verto epic x' + | 'xlr8 verto oc' + | 'xlr8 verto' + | 'xlr8' + | 'xtreme'; export type Link = { brand: Brand; @@ -277,6 +387,7 @@ export type Store = { }; labels: Labels; name: string; + country: string; currency: '£' | '$' | '€' | 'R$' | 'kr.' | ''; setupAction?: (browser: Browser) => void; /** diff --git a/src/store/model/storm.ts b/src/store/model/storm.ts index c70dc2e137..24ccf26a8e 100644 --- a/src/store/model/storm.ts +++ b/src/store/model/storm.ts @@ -74,4 +74,5 @@ export const StormComputers: Store = { }, ], name: 'storm-computer', + country: 'AU', }; diff --git a/src/store/model/target.ts b/src/store/model/target.ts index 8d636ea8b5..b5ce001627 100644 --- a/src/store/model/target.ts +++ b/src/store/model/target.ts @@ -22,7 +22,7 @@ export const Target: Store = { brand: 'sony', model: 'ps5 console', series: 'sonyps5c', - url: 'https://www.target.com/p/playstation-5-console/-/A-81114595', + url: 'https://www.target.com/p/playstation-5-console/-/A-87716467', }, { brand: 'sony', @@ -44,4 +44,5 @@ export const Target: Store = { }, ], name: 'target', + country: 'US', }; diff --git a/src/store/model/tesco-ie.ts b/src/store/model/tesco-ie.ts index 35ec9937e0..7d834a6729 100644 --- a/src/store/model/tesco-ie.ts +++ b/src/store/model/tesco-ie.ts @@ -30,4 +30,5 @@ export const TescoIE: Store = { }, ], name: 'tesco-ie', + country: 'IE', }; diff --git a/src/store/model/thewarehouse.ts b/src/store/model/thewarehouse.ts index ccad3eeaa6..7ea446cf0a 100644 --- a/src/store/model/thewarehouse.ts +++ b/src/store/model/thewarehouse.ts @@ -36,4 +36,5 @@ export const TheWarehouse: Store = { }, ], name: 'thewarehouse', + country: 'NZ', }; diff --git a/src/store/model/topachat.ts b/src/store/model/topachat.ts index 38556f920d..d82949e6cc 100644 --- a/src/store/model/topachat.ts +++ b/src/store/model/topachat.ts @@ -72,6 +72,12 @@ export const TopAchat: Store = { series: '3090', url: 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005199.html', }, + { + brand: 'asus', + model: 'phoenix 8G (LHR)', + series: '3050', + url: 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20012486.html', + }, { brand: 'gigabyte', model: 'gaming oc', @@ -216,6 +222,12 @@ export const TopAchat: Store = { series: '3090', url: 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20005229.html', }, + { + brand: 'msi', + model: 'ventus 2X (LHR)', + series: '3050', + url: 'https://www.topachat.com/pages/detail2_cat_est_micro_puis_rubrique_est_wgfx_pcie_puis_ref_est_in20012331.html', + }, { brand: 'palit', model: 'gaming pro', @@ -254,4 +266,5 @@ export const TopAchat: Store = { }, ], name: 'topachat', + country: 'GR', }; diff --git a/src/store/model/toysrus.ts b/src/store/model/toysrus.ts index 45a517207b..ad891953f8 100644 --- a/src/store/model/toysrus.ts +++ b/src/store/model/toysrus.ts @@ -44,4 +44,5 @@ export const ToysRUs: Store = { }, ], name: 'toysrus', + country: 'US', }; diff --git a/src/store/model/ubiquiti.ts b/src/store/model/ubiquiti.ts new file mode 100644 index 0000000000..b910145fc1 --- /dev/null +++ b/src/store/model/ubiquiti.ts @@ -0,0 +1,63 @@ +import {Store} from './store'; + +export const Ubiquiti: Store = { + currency: '$', + labels: { + inStock: [ + { + container: '#titleInStockBadge', + text: ['In Stock'], + }, + ], + outOfStock: [ + { + container: '.titleSoldOutBadge', + text: ['Sold Out'], + }, + { + container: '#titleSoldOutBadge', + text: ['Sold Out'], + }, + ], + }, + links: [ + { + brand: 'ubiquiti', + model: 'dream machine', + series: 'udm-us', + url: 'https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/udm-us', + }, + { + brand: 'ubiquiti', + model: 'dream machine pro', + series: 'udm-pro', + url: 'https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/udm-pro', + }, + { + brand: 'ubiquiti', + model: 'dream router', + series: 'udr-us', + url: 'https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/dream-router', + }, + { + brand: 'ubiquiti', + model: 'g4 doorbell pro', + series: 'g4-doorbell-pro', + url: 'https://store.ui.com/collections/unifi-protect/products/g4-doorbell-pro', + }, + { + brand: 'ubiquiti', + model: 'network video recorder', + series: 'unvr', + url: 'https://store.ui.com/collections/unifi-protect/products/unvr', + }, + { + brand: 'ubiquiti', + model: 'network video recorder pro', + series: 'unvr-pro', + url: 'https://store.ui.com/collections/unifi-protect/products/unvr-pro', + }, + ], + name: 'ubiquiti', + country: 'US', +}; diff --git a/src/store/model/umart.ts b/src/store/model/umart.ts index c01ad65fa9..3aab73678f 100644 --- a/src/store/model/umart.ts +++ b/src/store/model/umart.ts @@ -134,4 +134,5 @@ export const Umart: Store = { }, ], name: 'umart', + country: 'AU', }; diff --git a/src/store/model/unieuro.ts b/src/store/model/unieuro.ts index f6de044a70..07b7ab33b1 100644 --- a/src/store/model/unieuro.ts +++ b/src/store/model/unieuro.ts @@ -39,4 +39,5 @@ export const Unieuro: Store = { }, ], name: 'unieuro', + country: 'IT', }; diff --git a/src/store/model/utlimainformatica.ts b/src/store/model/utlimainformatica.ts index 9ba078a4a1..f6b0cd3b46 100644 --- a/src/store/model/utlimainformatica.ts +++ b/src/store/model/utlimainformatica.ts @@ -747,4 +747,5 @@ export const UltimaInformatica: Store = { }, ], name: 'ultimainformatica', + country: 'ES', }; diff --git a/src/store/model/very.ts b/src/store/model/very.ts index 1bfda1a463..907a2638e4 100644 --- a/src/store/model/very.ts +++ b/src/store/model/very.ts @@ -87,4 +87,5 @@ export const Very: Store = { ], }, name: 'very', + country: 'UK', }; diff --git a/src/store/model/vsgamers.ts b/src/store/model/vsgamers.ts index 03464c9b56..30f3da7fd9 100644 --- a/src/store/model/vsgamers.ts +++ b/src/store/model/vsgamers.ts @@ -345,4 +345,5 @@ export const VsGamers: Store = { }, ], name: 'vsgamers', + country: 'ES', }; diff --git a/src/store/model/vuugo.ts b/src/store/model/vuugo.ts index 483f9fe4ae..0b1b054172 100644 --- a/src/store/model/vuugo.ts +++ b/src/store/model/vuugo.ts @@ -624,4 +624,5 @@ export const Vuugo: Store = { }, ], name: 'vuugo', + country: 'CA', }; diff --git a/src/store/model/walmart-ca.ts b/src/store/model/walmart-ca.ts index f1e077e898..3d81777310 100644 --- a/src/store/model/walmart-ca.ts +++ b/src/store/model/walmart-ca.ts @@ -50,4 +50,5 @@ export const WalmartCa: Store = { }, ], name: 'walmart-ca', + country: 'CA', }; diff --git a/src/store/model/walmart.ts b/src/store/model/walmart.ts index aa37783551..baf986c82f 100644 --- a/src/store/model/walmart.ts +++ b/src/store/model/walmart.ts @@ -74,4 +74,5 @@ export const Walmart: Store = { }, ], name: 'walmart', + country: 'US', }; diff --git a/src/store/model/wellstechnology.ts b/src/store/model/wellstechnology.ts index de82ffa0a5..da0713116f 100644 --- a/src/store/model/wellstechnology.ts +++ b/src/store/model/wellstechnology.ts @@ -69,4 +69,5 @@ export const WellsTechnology: Store = { }, ], name: 'wellstechnology', + country: 'AU', }; diff --git a/src/store/model/wipoid.ts b/src/store/model/wipoid.ts index e6505fa081..076f07dd92 100644 --- a/src/store/model/wipoid.ts +++ b/src/store/model/wipoid.ts @@ -457,4 +457,5 @@ export const Wipoid: Store = { }, ], name: 'wipoid', + country: 'ES', }; diff --git a/src/store/model/xbox.ts b/src/store/model/xbox.ts index 770927a1a2..87558d1492 100644 --- a/src/store/model/xbox.ts +++ b/src/store/model/xbox.ts @@ -5,8 +5,8 @@ export const Xbox: Store = { labels: { outOfStock: { container: - '._-_-node_modules--xbox-web-partner-core-build-pages-BundleBuilder-Components-BundleBuilderHeader-__BundleBuilderHeader-module___checkoutButton', - text: ['out of stock'], + '[class="BundleBuilderHeader-module__checkoutButton___3UyEq w-100 bg-light-green btn btn-primary"]', + text: ['Out of stock'], }, }, links: [ @@ -18,4 +18,5 @@ export const Xbox: Store = { }, ], name: 'xbox', + country: 'US', }; diff --git a/src/store/model/xtremmedia.ts b/src/store/model/xtremmedia.ts index 91b23897f8..32190c502f 100644 --- a/src/store/model/xtremmedia.ts +++ b/src/store/model/xtremmedia.ts @@ -461,4 +461,5 @@ export const XtremMedia: Store = { }, ], name: 'xtremmedia', + country: 'ES', }; diff --git a/src/store/model/zotac.ts b/src/store/model/zotac.ts index 76e3c29d66..391056bc84 100644 --- a/src/store/model/zotac.ts +++ b/src/store/model/zotac.ts @@ -84,6 +84,82 @@ export const Zotac: Store = { series: '3090', url: 'https://store.zotac.com/zotac-gaming-geforce-rtx-3090-trinity-zt-a30900d-10p', }, + { + brand: 'zotac', + model: 'trinity', + series: '4090', + url: 'https://www.zotac.com/product/graphics_card/zotac-gaming-geforce-rtx-4090-trinity', + }, + { + brand: 'zotac', + model: 'amp extreme airo', + series: '4090', + url: 'https://www.zotac.com/product/graphics_card/zotac-gaming-geforce-rtx-4090-amp-extreme-airo', + }, + { + brand: 'zotac', + model: 'trinity oc', + series: '4090', + url: 'https://www.zotac.com/product/graphics_card/zotac-gaming-geforce-rtx-4090-trinity-oc', + }, + { + brand: 'zotac', + model: 'amp extreme airo', + series: '4080-16g', + url: 'https://www.zotacstore.com/us/zotac-gaming-geforce-rtx-4080-16gb-amp-extreme-airo', + }, + { + brand: 'zotac', + model: 'trinity', + series: '4080-16g', + url: 'https://www.zotacstore.com/us/zotac-gaming-geforce-rtx-4080-16gb-trinity', + }, + { + brand: 'zotac', + model: 'solid', + series: '5090', + url: 'https://www.zotac.com/us/product/graphics_card/zotac-gaming-geforce-rtx-5090-solid', + }, + { + brand: 'zotac', + model: 'solid oc', + series: '5090', + url: 'https://www.zotac.com/us/product/graphics_card/zotac-gaming-geforce-rtx-5090-solid-oc', + }, + { + brand: 'zotac', + model: 'amp extreme infinity', + series: '5090', + url: 'https://www.zotac.com/us/product/graphics_card/zotac-gaming-geforce-rtx-5090-amp-extreme-infinity', + }, + { + brand: 'zotac', + model: 'solid', + series: '5080', + url: 'https://www.zotac.com/us/product/graphics_card/zotac-gaming-geforce-rtx-5080-solid', + }, + { + brand: 'zotac', + model: 'solid oc', + series: '5080', + url: 'https://www.zotac.com/us/product/graphics_card/zotac-gaming-geforce-rtx-5080-solid-oc', + }, + { + brand: 'zotac', + model: 'amp extreme infinity', + series: '5080', + url: 'https://www.zotac.com/us/product/graphics_card/zotac-gaming-geforce-rtx-5080-amp-extreme-infinity', + }, ], name: 'zotac', + country: 'US', }; + +/* Copy Paste Template +{ + brand: 'zotac', + model: '', + series: '', + url: '', +}, +*/ diff --git a/src/web/index.ts b/src/web/index.ts index af07f91db1..beb1ef7246 100644 --- a/src/web/index.ts +++ b/src/web/index.ts @@ -1,18 +1,20 @@ +import {createReadStream, readdir} from 'fs'; import {IncomingMessage, Server, ServerResponse, createServer} from 'http'; +import {isAbsolute, join, normalize, relative} from 'path'; import {config, setConfig} from '../config'; -import {createReadStream, readdir} from 'fs'; +import {logger} from '../logger'; import { getAllBrands, + getAllCountries, getAllModels, getAllSeries, storeList, updateStores, } from '../store/model'; -import {isAbsolute, join, normalize, relative} from 'path'; -import {logger} from '../logger'; const approot = join(__dirname, '../../../'); const webroot = join(approot, './web'); +const screenshotDir = join(approot, config.page.screenshotDir); const contentTypeMap: Record = { css: 'text/css', @@ -124,6 +126,9 @@ function handleAPI( case 'stores': sendJSON(response, [...storeList.keys()]); return; + case 'countries': + sendJSON(response, getAllCountries()); + return; case 'brands': sendJSON(response, getAllBrands()); return; @@ -141,11 +146,11 @@ function handleAPI( return; } - sendFile(response, `../success-${timeStamp}.png`); + sendFile(response, `success-${timeStamp}.png`, screenshotDir); return; } - readdir(approot, (error, files) => { + readdir(screenshotDir, (error, files) => { if (error) { sendError(response, error.message); return; diff --git a/terraform/README.md b/terraform/README.md index 515a73deba..cb26a276f0 100644 --- a/terraform/README.md +++ b/terraform/README.md @@ -16,7 +16,7 @@ There's an example tfvars file to start you off; rename this with your own prefe Authenticate yourself with your own AWS account as with any aws commandline tool. -If you wish, add a specific section to your aws credentials file and set that profile name in `terraform.tfvars`. +If you wish, add a specific section to your aws credentials file and set that profile name in `terraform.tfvars`. More information on how to configure the AWS credentials file can be found in here. Then you can: diff --git a/terraform/resource-ecs.tf b/terraform/resource-ecs.tf index e484cfa9ba..739506e4f3 100644 --- a/terraform/resource-ecs.tf +++ b/terraform/resource-ecs.tf @@ -16,8 +16,28 @@ resource "aws_ecs_service" "main" { launch_type = "FARGATE" } -data "aws_iam_role" "ecs_task_execution_role" { - name = "ecsTaskExecutionRole" +data "aws_iam_policy_document" "ecs_task_execution_role" { + version = "2012-10-17" + statement { + sid = "" + effect = "Allow" + actions = ["sts:AssumeRole"] + + principals { + type = "Service" + identifiers = ["ecs-tasks.amazonaws.com"] + } + } +} + +resource "aws_iam_role" "ecs_task_execution_role" { + name = var.ecs_task_execution_role_name + assume_role_policy = data.aws_iam_policy_document.ecs_task_execution_role.json +} + +resource "aws_iam_role_policy_attachment" "ecs_task_execution_role" { + role = aws_iam_role.ecs_task_execution_role.name + policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy" } locals { @@ -38,5 +58,5 @@ resource "aws_ecs_task_definition" "main" { network_mode = "awsvpc" cpu = var.cpu memory = var.memory - execution_role_arn = data.aws_iam_role.ecs_task_execution_role.arn + execution_role_arn = aws_iam_role.ecs_task_execution_role.arn } diff --git a/terraform/variables.tf b/terraform/variables.tf index 0da31aa452..315e4a603d 100644 --- a/terraform/variables.tf +++ b/terraform/variables.tf @@ -38,3 +38,8 @@ variable "streetmerchant_env" { description = "name/value pairs for .env values" default = {} } + +variable "ecs_task_execution_role_name" { + description = "ECS task execution role name" + default = "myEcsTaskExecutionRole" +} diff --git a/test/util.ts b/test/util.ts index 5a02c074a3..44d16ac667 100644 --- a/test/util.ts +++ b/test/util.ts @@ -51,6 +51,7 @@ export function getTestStore(): Store { }, links: storeLinks, name: 'test:name', + country: 'TEST', }; return store; diff --git a/tsconfig.json b/tsconfig.json index ffa97c431c..f902cbc87c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,10 +6,8 @@ "resolveJsonModule": true, "rootDir": ".", // todo: remove - "skipLibCheck": true + "skipLibCheck": true, + "lib": ["DOM", "ES2021"] }, - "include": [ - "src/**/*.ts", - "test/**/*.ts" - ] + "include": ["src/**/*.ts", "test/**/*.ts"] } diff --git a/web/index.html b/web/index.html index c12896f960..6c7876f179 100644 --- a/web/index.html +++ b/web/index.html @@ -2,6 +2,21 @@ streetmerchant control + - - - - + + + +
StoresBrandsSeriesModelsStoresBrandsSeriesModels