Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: parsing prices with thousands separator and European format #2153

Merged
merged 3 commits into from Mar 17, 2021

Conversation

Ynng
Copy link
Contributor

@Ynng Ynng commented Mar 16, 2021

Description

Fixed parsing prices with thousands separator and European.
The problem was introduced by #2131 and described here #2151
Example: Newegg Canada's price for RTX 3070 "1,600.00" was interpreted as 1.6

Testing

Tested manually and with a variety of stores around the world.

@Ynng Ynng requested a review from jef as a code owner March 16, 2021 03:44
@Ynng
Copy link
Contributor Author

Ynng commented Mar 16, 2021

The new pull request (vs the old #2152) introduced a price sanity check.

It's near impossible to determine if a price string is in europian format (", and . flipped") or otherwise with just the string itself.
For example, 1,600 could be 1600 or 1.6 in europian format.

Now, if the price is lower than a hardcoded sanity check of 50, "eurpian format" would toggle and the maximum price will be selected as the actual price.

In my testing, this seems to be working well.

@tarkah tarkah mentioned this pull request Mar 16, 2021
@BigShoots BigShoots mentioned this pull request Mar 16, 2021
@meyervp
Copy link
Contributor

meyervp commented Mar 16, 2021

my bad ! :/

another solution is use a recursive replace

jef
jef previously approved these changes Mar 16, 2021
Copy link
Owner

@jef jef left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome! Thanks for this work.

I think it might be best to keep in contained into one function to reduce the cognitive load.

src/store/includes-labels.ts Outdated Show resolved Hide resolved
src/store/includes-labels.ts Outdated Show resolved Hide resolved
@jef jef dismissed their stale review March 16, 2021 20:08

Meant to request for changes.

@Ynng
Copy link
Contributor Author

Ynng commented Mar 16, 2021

The "Sanity check" is now removed in fc3c32f and so the separate function is no longer needed.
The function now checks for the thousands separator with this regex from @fongoid, which they explained in more detail here:
const thousandsSeparator = priceString.search(/\d+\.\d{3}|\d+,\d{2}$/) > -1 ? /\./g : /,/g;

Copy link
Owner

@jef jef left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me!

Thank you.

@jef jef merged commit 61f8e3a into jef:main Mar 17, 2021
@jef jef mentioned this pull request Mar 17, 2021
jef added a commit that referenced this pull request Mar 17, 2021
erwinc1 pushed a commit to erwinc1/streetmerchant that referenced this pull request Mar 31, 2021
erwinc1 pushed a commit to erwinc1/streetmerchant that referenced this pull request Mar 31, 2021
@nixeens
Copy link

nixeens commented Apr 1, 2021

Is this going to work if i have one store where price is showed 1 299,00 € ?

jef pushed a commit that referenced this pull request Oct 21, 2022
🤖 I have created a release *beep* *boop*
---


##
[3.6.0](v3.5.0...v3.6.0)
(2022-10-21)


### Features

* add 3080ti
([#2598](#2598))
([4cfbd37](4cfbd37))
* add 3080ti
([#2600](#2600))
([51c9b3a](51c9b3a))
* add a few stores for spain
([#2646](#2646))
([0b060e8](0b060e8))
* add alternate-fr, 3070ti, change alternate to alternate.de
([#2653](#2653))
([8c7b8aa](8c7b8aa))
* add INCOGNITO to dotenv-example and volta support
([#2484](#2484))
([b579052](b579052))
* add interactive captcha handler with Slack and Discord
([#2385](#2385))
([409769e](409769e))
* add ldlc-italy and fixes ollo/hardware-planet
([#2903](#2903))
([d4f4076](d4f4076)),
closes [#2867](#2867)
* add SCREENSHOT_DIR config option
([#2801](#2801))
([fe99aa4](fe99aa4))
* add ubiquiti store and dream machine model.
([#3034](#3034))
([87301fe](87301fe))
* add waitUntil and waitForSelctor to linksBuilder
([#2437](#2437))
([cac7c20](cac7c20))
* **captcha:** add support for configurable capture type
([#2468](#2468))
([6e614a2](6e614a2))
* change max price behavior
([9b02c36](9b02c36))
* color empty stores
([#2312](#2312))
([bbfa808](bbfa808))
* **coolmod:** add linksBuilder and update selectors
([#2803](#2803))
([f297e1d](f297e1d))
* **equippr:** add links builder
([#2795](#2795))
([e631d80](e631d80))
* **gotify:** add priority option
([#2546](#2546))
([32fe440](32fe440))
* **notification:** add gotify
([8f2de5d](8f2de5d)),
closes [#2541](#2541)
[#2536](https://github.com/jef/streetmerchant/issues/2536)
* **notification:** add support for Free mobile
([#2285](#2285))
([6be2e0d](6be2e0d))
* **notifications:** add apple push notifications
([#2077](#2077))
([6b78b2e](6b78b2e))
* **pushover:** ability to specify device
([#2101](#2101))
([d03aea0](d03aea0))
* **pushover:** add support for sound
([#2203](#2203))
([83ce922](83ce922))
* **redis:** introduce pub/sub
([#2855](#2855))
([d6d8ef2](d6d8ef2))
* **series:** support for rx6700xt
([#2290](#2290))
([113c9ce](113c9ce))
* **store:** add 3050 in topachat and materiel
([#2945](#2945))
([fc0c3da](fc0c3da))
* **store:** add amd-at
([#2462](#2462))
([441617f](441617f))
* **store:** add amd-be store
([#2338](#2338))
([6e9b1a9](6e9b1a9))
* **store:** add amd-nl store
([#2072](#2072))
([49c9e8c](49c9e8c))
* **store:** Add AO and BT (UK)
([#2089](#2089))
([1714e89](1714e89))
* **store:** add cyberport-at
([#2463](#2463))
([5a744b1](5a744b1))
* **store:** add materiel.net (french), 35 3060ti references
([#2287](#2287))
([0ebe745](0ebe745))
* **store:** add mediamarkt austria
([#1836](#1836))
([ae8e72a](ae8e72a))
* **store:** add Microsoft (CA) for Xbox X/S
([#2764](#2764))
([ca784c8](ca784c8))
* **store:** add Microsoft for Xbox S/X
([#2738](#2738))
([d06d050](d06d050))
* **store:** add MightyApe, NoelLeeming and TheWarehouse (NZ)
([#2133](#2133))
([e2d8040](e2d8040))
* **store:** add multicom.no and more products to NO stores
([#2483](#2483))
([41305f1](41305f1))
* **stores-nz:** update labels
([#2486](#2486))
([c0f46d7](c0f46d7))
* use new nightly release build
([51118ba](51118ba))
* **web:** add select all/none for columns & black theme
([#2878](#2878))
([2ff7f58](2ff7f58))


### Bug Fixes

* add missing tests in Dockerfile
([#2323](#2323))
([cd6e1f6](cd6e1f6))
* **alternate:** use button selector instead of text
([#2419](#2419))
([35f9eb4](35f9eb4))
* amazon prices
([#2914](#2914))
([f7236b3](f7236b3)),
closes [#2926](#2926)
* **amazon-es:** use euroFormat
([#2371](#2371))
([4eb702b](4eb702b))
* **amazon-eu:** checking price selector
([#2856](#2856))
([19afe41](19afe41))
* **amazon:** false positives for xbox
([#2497](#2497))
([790fe9b](790fe9b))
* **apns:** use when specified
([99a274d](99a274d))
* **bestbuy-ca:** avoid false positive
([#2694](#2694))
([0c589a7](0c589a7))
* **captcha:** use Slack captcha handler token when provided
([#2460](#2460))
([164902a](164902a)),
closes [#2428](#2428)
* clear cookies when rotating proxies
([#2575](#2575))
([8854ce9](8854ce9))
* **discord:** add Discord.ClientOptions
([#2714](#2714))
([3787c54](3787c54))
* **discord:** properly wait for webhooks
([#2352](#2352))
([bc59da1](bc59da1))
* **docker:** disable opening browser
([d13f7f1](d13f7f1))
* **lookup:** prevent terminal from being hidden
([#2461](#2461))
([39fac90](39fac90))
* **microcenter:** add outOfStock label
([#2432](#2432))
([092919a](092919a)),
closes [#2407](#2407)
* **nodemon:** use npx with ts-node
([#2423](#2423))
([b6ac6c5](b6ac6c5))
* parsing prices with thousands separator and European format
([#2153](#2153))
([61f8e3a](61f8e3a))
* partial url regexp
([#2382](#2382))
([61af2a4](61af2a4))
* **playstation:** fix inStock selector
([#2187](#2187))
([b0efc83](b0efc83))
* **puppeteer:** cannot read property
([#2987](#2987))
([04fbdc1](04fbdc1))
* remove spaces from price
([#2482](#2482))
([eb76f0d](eb76f0d))
* **terraform:** update IAM configuration for ECS deployment
([#2675](#2675))
([9c346e7](9c346e7))
* **web:** add favicon to prevent missing icon console error
([#2375](#2375))
([2be33ac](2be33ac))
* **xbox:** false positive
([#2726](#2726))
([e5e8481](e5e8481))


### Refactoring

* **captcha:** use seconds instead of ms
([#2424](#2424))
([d652b49](d652b49))
* **freemobile:** remove local throw
([bf8f242](bf8f242))
* **materiel:** update docs, change name
([7ec8a16](7ec8a16))
* simplify maxPrice logic
([a25b7f1](a25b7f1))
* **store:** replace euroFormat with regex
([#2131](#2131))
([795c723](795c723))


### Documentation

* add better heroku documentation
([#2942](#2942))
([f344615](f344615))
* fix sort-able tables
([08789a7](08789a7))
* make templates required
([00b468a](00b468a))
* remove twitter
([d19d05c](d19d05c))
* remove twitter
([1aa0224](1aa0224))
* toggle light/dark mode
([1e76d5a](1e76d5a))
* update badges
([c2c8531](c2c8531))
* update edit_uri location
([af603c2](af603c2))
* update incorrect store description for alternate-de
([#2765](#2765))
([28ce7e9](28ce7e9))
* update issue templates
([74d71e4](74d71e4))
* update issue templates
([9aa3f16](9aa3f16))
* update issue templates
([7171113](7171113))
* update node references
([f65aab8](f65aab8))
* update Xbox Series S and X price limit desc
([#2098](#2098))
([ba35706](ba35706))
* use node lts
([2a482e3](2a482e3)),
closes [#2776](#2776)


### Miscellaneous

* add APNS to dotenv-example
([#2174](#2174))
([4bd048f](4bd048f))
* add links to RX 6700 XT in German stores
([#2736](#2736))
([430ec73](430ec73))
* **alternate-de:** add gpus
([#2797](#2797))
([a6d7447](a6d7447))
* **alternate:** add new oos label
([#2409](#2409))
([5937d01](5937d01))
* **alternate:** add PS5 bundle
([#2562](#2562))
([1122075](1122075))
* **alternate:** update links and selectors
([#2282](#2282))
([ea095a3](ea095a3))
* **amazon-fr:** update evga 3080 ftw3 link
([#2286](#2286))
([5b2fe88](5b2fe88))
* **amazon-uk:** add 3060 cards
([#2229](#2229))
([983cc52](983cc52))
* **amd:** add rx6800xt midnight black
([#2321](#2321))
([c7e24e7](c7e24e7))
* **amd:** update rx6900xt urls
([#2094](#2094))
([7fcce58](7fcce58))
* **amd:** update rx6900xt urls
([#2876](#2876))
([88ec46e](88ec46e))
* **asus:** update urls
([#2155](#2155))
([245d110](245d110))
* **bestbuy:** add 3080ti models
([#2670](#2670))
([cc0aaec](cc0aaec))
* bump dependencies
([10f7e0c](10f7e0c))
* bump dependencies
([#2413](#2413))
([3c00eca](3c00eca))
* bump node 16.5.0
([4e3eade](4e3eade))
* bump node version
([9ba964a](9ba964a))
* bump node, implement proper ci cache
([9b0b4d1](9b0b4d1))
* bump stale workflow to 60 days
([3c1419f](3c1419f))
* change url
([2af1531](2af1531))
* change verbiage to be more generic
([e006c48](e006c48))
* **computeruniverse:** add backoff code
([#2542](#2542))
([42a24a6](42a24a6))
* **coolblue:** add ps5 consoles
([#2597](#2597))
([4bb58ac](4bb58ac))
* **currys:** add rx6800, rx6800xt and rx6900xt
([#2236](#2236))
([211e3e2](211e3e2))
* **deps-dev:** bump @types/cheerio from 0.22.28 to 0.22.29
([#2580](#2580))
([e4ebdc4](e4ebdc4))
* **deps-dev:** bump @types/node from 14.14.35 to 14.14.36
([#2233](#2233))
([a7a5e69](a7a5e69))
* **deps-dev:** bump @types/node from 15.3.0 to 15.6.1
([#2571](#2571))
([3e74a4c](3e74a4c))
* **deps-dev:** bump @types/nodemailer from 6.4.1 to 6.4.2
([#2582](#2582))
([1cb1787](1cb1787))
* **deps-dev:** bump @types/sinon from 9.0.10 to 9.0.11
([#2166](#2166))
([4cdda98](4cdda98))
* **deps-dev:** bump mocha from 8.3.0 to 8.3.2
([#2167](#2167))
([a575143](a575143))
* **deps-dev:** bump typescript from 4.2.2 to 4.2.3
([#2092](#2092))
([b516e26](b516e26))
* **deps-dev:** bump webpack from 5.24.2 to 5.26.3
([#2164](#2164))
([2775124](2775124))
* **deps-dev:** bump webpack from 5.35.0 to 5.36.2
([#2480](#2480))
([e397306](e397306))
* **deps-dev:** bump webpack from 5.37.0 to 5.37.1
([#2558](#2558))
([9e13cd7](9e13cd7))
* **deps-dev:** bump webpack from 5.37.0 to 5.38.0
([#2579](#2579))
([9fc5ec0](9fc5ec0))
* **deps:** bump actions/checkout from 2 to 3
([#2967](#2967))
([92a3c94](92a3c94))
* **deps:** bump actions/setup-node from 2 to 3
([#2963](#2963))
([31c2887](31c2887))
* **deps:** bump actions/setup-python from 2 to 3
([#2965](#2965))
([fe53ba3](fe53ba3))
* **deps:** bump actions/stale from 3 to 4
([#2671](#2671))
([e030310](e030310))
* **deps:** bump dependencies
([1ab0af2](1ab0af2))
* **deps:** bump dependencies
([aed9cfe](aed9cfe))
* **deps:** bump dependencies
([2a1734a](2a1734a))
* **deps:** bump dependencies, node 15.14.0
([91a0ff5](91a0ff5))
* **deps:** bump google-github-actions/release-please-action from 2 to
3.1.3 ([#2968](#2968))
([0906f64](0906f64))
* **deps:** bump node 16.1.0
([1e62878](1e62878))
* **deps:** bump node from 15.11.0-alpine3.13 to 15.12.0-alpine3.13
([#2185](#2185))
([2ebbf55](2ebbf55))
* **deps:** bump node-notifier from 9.0.1 to 10.0.0
([#2583](#2583))
([a751cb1](a751cb1))
* **deps:** bump nodemailer from 6.6.0 to 6.6.1
([#2568](#2568))
([2e5b07c](2e5b07c))
* **deps:** bump open from 7.4.2 to 8.0.2
([#2078](#2078))
([00e4ddc](00e4ddc))
* **deps:** bump open from 8.0.2 to 8.0.3
([#2186](#2186))
([54883f0](54883f0))
* **deps:** bump open from 8.0.2 to 8.2.0
([#2572](#2572))
([36e188f](36e188f))
* **deps:** bump top-user-agents from 1.0.25 to 1.0.26
([#2556](#2556))
([729afd0](729afd0))
* **deps:** bump twilio from 3.62.0 to 3.63.0
([#2561](#2561))
([7d35c2b](7d35c2b))
* **deps:** bump twilio from 3.66.1 to 3.71.1
([#2837](#2837))
([72140be](72140be))
* **deps:** bump twitch-chat-client from 4.4.13 to 4.5.1
([#2127](#2127))
([eeab4b1](eeab4b1))
* **deps:** bump url-parse from 1.5.3 to 1.5.10
([#2964](#2964))
([6f57777](6f57777))
* **elkjop:** update selectors
([#2505](#2505))
([c9049a3](c9049a3))
* **gamestop:** update inventory
([#2239](#2239))
([c1c92bd](c1c92bd))
* improve linksBuilder logging
([#2785](#2785))
([73eaa88](73eaa88))
* **ldlc:** add 3050
([#2948](#2948))
([a146ea3](a146ea3))
* **materiel:** add 3070 and 3080 cards
([#2393](#2393))
([8c39d0d](8c39d0d))
* **mediamarkt, saturn:** add new outOfStock message
([#2850](#2850))
([5d4f4c5](5d4f4c5))
* **mediamarkt:** update captcha selector
([#2496](#2496))
([64120e7](64120e7))
* **microcenter:** add 3090 cards
([d46c636](d46c636))
* move lookup loop logging to lower level
([#2784](#2784))
([a20faaa](a20faaa))
* **multicom:** update selectors
([#2499](#2499))
([7c4c6ed](7c4c6ed))
* **netonnet-no:** update selectors
([#2547](#2547))
([0378a7c](0378a7c))
* **nodejs:** bump version
([#2088](#2088))
([afe7a70](afe7a70))
* **notification:** add better logging, remove debug
([d12639e](d12639e))
* **nvidia:** add 3070ti & 3080ti
([#2798](#2798))
([ada90bf](ada90bf))
* **otto:** add labels for xbox series x & s
([#2515](#2515))
([d0a6c7e](d0a6c7e))
* prune invalid links
([#2592](#2592))
([b33f678](b33f678))
* remove hooks
([b6af582](b6af582))
* remove unused dependencies
([53e7a8d](53e7a8d))
* revert puppeteer, run linter
([5e9b3db](5e9b3db))
* **store:** add additional PS5 bundles and alternative links for
MediaMarkt (DE) & Saturn (DE)
([#2820](#2820))
([668ed54](668ed54))
* **store:** add additional PS5 bundles to MediaMarkt (DE) & Saturn (DE)
([#2787](#2787))
([0d936a9](0d936a9))
* **store:** add more links to norwegian stores
([#2485](#2485))
([a286b73](a286b73))
* **store:** add Nvidia RTX Cards
([#2204](#2204))
([0a9ce0d](0a9ce0d))
* **store:** add some PS5 bundles
([#2021](#2021))
([d4dc397](d4dc397))
* **store:** EBGames renamed to Gamestop (in Canada)
([#2734](#2734))
([4e77c67](4e77c67))
* **store:** updated and added Nvidia links
([#2806](#2806))
([c31a861](c31a861))
* update dependencies
([f14a1ca](f14a1ca))
* update dependencies
([1d08d4c](1d08d4c))
* update dependencies and nightly workflow
([3b43732](3b43732))
* update package-lock, remove ci perms
([#3059](#3059))
([9b8b8ff](9b8b8ff))
* update pr template
([f0e5c5d](f0e5c5d))
* update stale workflow
([e4a267f](e4a267f))
* **walmart:** update 5900x url
([#2184](#2184))
([b2ce715](b2ce715))
* **xbox:** update oos selector
([4d89306](4d89306)),
closes [#2118](#2118)
[#2479](#2479)
[#2475](https://github.com/jef/streetmerchant/issues/2475)
[#2200](#2200)

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This was referenced Oct 21, 2022
jef pushed a commit that referenced this pull request Oct 21, 2022
🤖 I have created a release *beep* *boop*
---


##
[3.6.0](v3.5.0...v3.6.0)
(2022-10-21)


### Features

* add 3080ti
([#2598](#2598))
([4cfbd37](4cfbd37))
* add 3080ti
([#2600](#2600))
([51c9b3a](51c9b3a))
* add a few stores for spain
([#2646](#2646))
([0b060e8](0b060e8))
* add alternate-fr, 3070ti, change alternate to alternate.de
([#2653](#2653))
([8c7b8aa](8c7b8aa))
* add INCOGNITO to dotenv-example and volta support
([#2484](#2484))
([b579052](b579052))
* add interactive captcha handler with Slack and Discord
([#2385](#2385))
([409769e](409769e))
* add ldlc-italy and fixes ollo/hardware-planet
([#2903](#2903))
([d4f4076](d4f4076)),
closes [#2867](#2867)
* add SCREENSHOT_DIR config option
([#2801](#2801))
([fe99aa4](fe99aa4))
* add ubiquiti store and dream machine model.
([#3034](#3034))
([87301fe](87301fe))
* add waitUntil and waitForSelctor to linksBuilder
([#2437](#2437))
([cac7c20](cac7c20))
* **captcha:** add support for configurable capture type
([#2468](#2468))
([6e614a2](6e614a2))
* change max price behavior
([9b02c36](9b02c36))
* color empty stores
([#2312](#2312))
([bbfa808](bbfa808))
* **coolmod:** add linksBuilder and update selectors
([#2803](#2803))
([f297e1d](f297e1d))
* **equippr:** add links builder
([#2795](#2795))
([e631d80](e631d80))
* **gotify:** add priority option
([#2546](#2546))
([32fe440](32fe440))
* **notification:** add gotify
([8f2de5d](8f2de5d)),
closes [#2541](#2541)
[#2536](https://github.com/jef/streetmerchant/issues/2536)
* **notification:** add support for Free mobile
([#2285](#2285))
([6be2e0d](6be2e0d))
* **notifications:** add apple push notifications
([#2077](#2077))
([6b78b2e](6b78b2e))
* **pushover:** ability to specify device
([#2101](#2101))
([d03aea0](d03aea0))
* **pushover:** add support for sound
([#2203](#2203))
([83ce922](83ce922))
* **redis:** introduce pub/sub
([#2855](#2855))
([d6d8ef2](d6d8ef2))
* **series:** support for rx6700xt
([#2290](#2290))
([113c9ce](113c9ce))
* **store:** add 3050 in topachat and materiel
([#2945](#2945))
([fc0c3da](fc0c3da))
* **store:** add amd-at
([#2462](#2462))
([441617f](441617f))
* **store:** add amd-be store
([#2338](#2338))
([6e9b1a9](6e9b1a9))
* **store:** add amd-nl store
([#2072](#2072))
([49c9e8c](49c9e8c))
* **store:** Add AO and BT (UK)
([#2089](#2089))
([1714e89](1714e89))
* **store:** add cyberport-at
([#2463](#2463))
([5a744b1](5a744b1))
* **store:** add materiel.net (french), 35 3060ti references
([#2287](#2287))
([0ebe745](0ebe745))
* **store:** add mediamarkt austria
([#1836](#1836))
([ae8e72a](ae8e72a))
* **store:** add Microsoft (CA) for Xbox X/S
([#2764](#2764))
([ca784c8](ca784c8))
* **store:** add Microsoft for Xbox S/X
([#2738](#2738))
([d06d050](d06d050))
* **store:** add MightyApe, NoelLeeming and TheWarehouse (NZ)
([#2133](#2133))
([e2d8040](e2d8040))
* **store:** add multicom.no and more products to NO stores
([#2483](#2483))
([41305f1](41305f1))
* **stores-nz:** update labels
([#2486](#2486))
([c0f46d7](c0f46d7))
* use new nightly release build
([51118ba](51118ba))
* **web:** add select all/none for columns & black theme
([#2878](#2878))
([2ff7f58](2ff7f58))


### Bug Fixes

* add missing tests in Dockerfile
([#2323](#2323))
([cd6e1f6](cd6e1f6))
* **alternate:** use button selector instead of text
([#2419](#2419))
([35f9eb4](35f9eb4))
* amazon prices
([#2914](#2914))
([f7236b3](f7236b3)),
closes [#2926](#2926)
* **amazon-es:** use euroFormat
([#2371](#2371))
([4eb702b](4eb702b))
* **amazon-eu:** checking price selector
([#2856](#2856))
([19afe41](19afe41))
* **amazon:** false positives for xbox
([#2497](#2497))
([790fe9b](790fe9b))
* **apns:** use when specified
([99a274d](99a274d))
* **bestbuy-ca:** avoid false positive
([#2694](#2694))
([0c589a7](0c589a7))
* **captcha:** use Slack captcha handler token when provided
([#2460](#2460))
([164902a](164902a)),
closes [#2428](#2428)
* clear cookies when rotating proxies
([#2575](#2575))
([8854ce9](8854ce9))
* **discord:** add Discord.ClientOptions
([#2714](#2714))
([3787c54](3787c54))
* **discord:** properly wait for webhooks
([#2352](#2352))
([bc59da1](bc59da1))
* **docker:** disable opening browser
([d13f7f1](d13f7f1))
* **lookup:** prevent terminal from being hidden
([#2461](#2461))
([39fac90](39fac90))
* **microcenter:** add outOfStock label
([#2432](#2432))
([092919a](092919a)),
closes [#2407](#2407)
* **nodemon:** use npx with ts-node
([#2423](#2423))
([b6ac6c5](b6ac6c5))
* parsing prices with thousands separator and European format
([#2153](#2153))
([61f8e3a](61f8e3a))
* partial url regexp
([#2382](#2382))
([61af2a4](61af2a4))
* **playstation:** fix inStock selector
([#2187](#2187))
([b0efc83](b0efc83))
* **puppeteer:** cannot read property
([#2987](#2987))
([04fbdc1](04fbdc1))
* remove spaces from price
([#2482](#2482))
([eb76f0d](eb76f0d))
* **terraform:** update IAM configuration for ECS deployment
([#2675](#2675))
([9c346e7](9c346e7))
* **web:** add favicon to prevent missing icon console error
([#2375](#2375))
([2be33ac](2be33ac))
* **xbox:** false positive
([#2726](#2726))
([e5e8481](e5e8481))


### Refactoring

* **captcha:** use seconds instead of ms
([#2424](#2424))
([d652b49](d652b49))
* **freemobile:** remove local throw
([bf8f242](bf8f242))
* **materiel:** update docs, change name
([7ec8a16](7ec8a16))
* simplify maxPrice logic
([a25b7f1](a25b7f1))
* **store:** replace euroFormat with regex
([#2131](#2131))
([795c723](795c723))


### Documentation

* add better heroku documentation
([#2942](#2942))
([f344615](f344615))
* fix sort-able tables
([08789a7](08789a7))
* make templates required
([00b468a](00b468a))
* remove twitter
([d19d05c](d19d05c))
* remove twitter
([1aa0224](1aa0224))
* toggle light/dark mode
([1e76d5a](1e76d5a))
* update badges
([c2c8531](c2c8531))
* update edit_uri location
([af603c2](af603c2))
* update incorrect store description for alternate-de
([#2765](#2765))
([28ce7e9](28ce7e9))
* update issue templates
([74d71e4](74d71e4))
* update issue templates
([9aa3f16](9aa3f16))
* update issue templates
([7171113](7171113))
* update node references
([f65aab8](f65aab8))
* update Xbox Series S and X price limit desc
([#2098](#2098))
([ba35706](ba35706))
* use node lts
([2a482e3](2a482e3)),
closes [#2776](#2776)


### Miscellaneous

* add APNS to dotenv-example
([#2174](#2174))
([4bd048f](4bd048f))
* add links to RX 6700 XT in German stores
([#2736](#2736))
([430ec73](430ec73))
* **alternate-de:** add gpus
([#2797](#2797))
([a6d7447](a6d7447))
* **alternate:** add new oos label
([#2409](#2409))
([5937d01](5937d01))
* **alternate:** add PS5 bundle
([#2562](#2562))
([1122075](1122075))
* **alternate:** update links and selectors
([#2282](#2282))
([ea095a3](ea095a3))
* **amazon-fr:** update evga 3080 ftw3 link
([#2286](#2286))
([5b2fe88](5b2fe88))
* **amazon-uk:** add 3060 cards
([#2229](#2229))
([983cc52](983cc52))
* **amd:** add rx6800xt midnight black
([#2321](#2321))
([c7e24e7](c7e24e7))
* **amd:** update rx6900xt urls
([#2094](#2094))
([7fcce58](7fcce58))
* **amd:** update rx6900xt urls
([#2876](#2876))
([88ec46e](88ec46e))
* **asus:** update urls
([#2155](#2155))
([245d110](245d110))
* **bestbuy:** add 3080ti models
([#2670](#2670))
([cc0aaec](cc0aaec))
* bump dependencies
([10f7e0c](10f7e0c))
* bump dependencies
([#2413](#2413))
([3c00eca](3c00eca))
* bump node 16.5.0
([4e3eade](4e3eade))
* bump node version
([9ba964a](9ba964a))
* bump node, implement proper ci cache
([9b0b4d1](9b0b4d1))
* bump stale workflow to 60 days
([3c1419f](3c1419f))
* change url
([2af1531](2af1531))
* change verbiage to be more generic
([e006c48](e006c48))
* **computeruniverse:** add backoff code
([#2542](#2542))
([42a24a6](42a24a6))
* **coolblue:** add ps5 consoles
([#2597](#2597))
([4bb58ac](4bb58ac))
* **currys:** add rx6800, rx6800xt and rx6900xt
([#2236](#2236))
([211e3e2](211e3e2))
* **deps-dev:** bump @types/cheerio from 0.22.28 to 0.22.29
([#2580](#2580))
([e4ebdc4](e4ebdc4))
* **deps-dev:** bump @types/node from 14.14.35 to 14.14.36
([#2233](#2233))
([a7a5e69](a7a5e69))
* **deps-dev:** bump @types/node from 15.3.0 to 15.6.1
([#2571](#2571))
([3e74a4c](3e74a4c))
* **deps-dev:** bump @types/nodemailer from 6.4.1 to 6.4.2
([#2582](#2582))
([1cb1787](1cb1787))
* **deps-dev:** bump @types/sinon from 9.0.10 to 9.0.11
([#2166](#2166))
([4cdda98](4cdda98))
* **deps-dev:** bump mocha from 8.3.0 to 8.3.2
([#2167](#2167))
([a575143](a575143))
* **deps-dev:** bump typescript from 4.2.2 to 4.2.3
([#2092](#2092))
([b516e26](b516e26))
* **deps-dev:** bump webpack from 5.24.2 to 5.26.3
([#2164](#2164))
([2775124](2775124))
* **deps-dev:** bump webpack from 5.35.0 to 5.36.2
([#2480](#2480))
([e397306](e397306))
* **deps-dev:** bump webpack from 5.37.0 to 5.37.1
([#2558](#2558))
([9e13cd7](9e13cd7))
* **deps-dev:** bump webpack from 5.37.0 to 5.38.0
([#2579](#2579))
([9fc5ec0](9fc5ec0))
* **deps:** bump actions/checkout from 2 to 3
([#2967](#2967))
([92a3c94](92a3c94))
* **deps:** bump actions/setup-node from 2 to 3
([#2963](#2963))
([31c2887](31c2887))
* **deps:** bump actions/setup-python from 2 to 3
([#2965](#2965))
([fe53ba3](fe53ba3))
* **deps:** bump actions/stale from 3 to 4
([#2671](#2671))
([e030310](e030310))
* **deps:** bump dependencies
([1ab0af2](1ab0af2))
* **deps:** bump dependencies
([aed9cfe](aed9cfe))
* **deps:** bump dependencies
([2a1734a](2a1734a))
* **deps:** bump dependencies, node 15.14.0
([91a0ff5](91a0ff5))
* **deps:** bump google-github-actions/release-please-action from 2 to
3.1.3 ([#2968](#2968))
([0906f64](0906f64))
* **deps:** bump node 16.1.0
([1e62878](1e62878))
* **deps:** bump node from 15.11.0-alpine3.13 to 15.12.0-alpine3.13
([#2185](#2185))
([2ebbf55](2ebbf55))
* **deps:** bump node-notifier from 9.0.1 to 10.0.0
([#2583](#2583))
([a751cb1](a751cb1))
* **deps:** bump nodemailer from 6.6.0 to 6.6.1
([#2568](#2568))
([2e5b07c](2e5b07c))
* **deps:** bump open from 7.4.2 to 8.0.2
([#2078](#2078))
([00e4ddc](00e4ddc))
* **deps:** bump open from 8.0.2 to 8.0.3
([#2186](#2186))
([54883f0](54883f0))
* **deps:** bump open from 8.0.2 to 8.2.0
([#2572](#2572))
([36e188f](36e188f))
* **deps:** bump top-user-agents from 1.0.25 to 1.0.26
([#2556](#2556))
([729afd0](729afd0))
* **deps:** bump twilio from 3.62.0 to 3.63.0
([#2561](#2561))
([7d35c2b](7d35c2b))
* **deps:** bump twilio from 3.66.1 to 3.71.1
([#2837](#2837))
([72140be](72140be))
* **deps:** bump twitch-chat-client from 4.4.13 to 4.5.1
([#2127](#2127))
([eeab4b1](eeab4b1))
* **deps:** bump url-parse from 1.5.3 to 1.5.10
([#2964](#2964))
([6f57777](6f57777))
* **elkjop:** update selectors
([#2505](#2505))
([c9049a3](c9049a3))
* **gamestop:** update inventory
([#2239](#2239))
([c1c92bd](c1c92bd))
* improve linksBuilder logging
([#2785](#2785))
([73eaa88](73eaa88))
* **ldlc:** add 3050
([#2948](#2948))
([a146ea3](a146ea3))
* **materiel:** add 3070 and 3080 cards
([#2393](#2393))
([8c39d0d](8c39d0d))
* **mediamarkt, saturn:** add new outOfStock message
([#2850](#2850))
([5d4f4c5](5d4f4c5))
* **mediamarkt:** update captcha selector
([#2496](#2496))
([64120e7](64120e7))
* **microcenter:** add 3090 cards
([d46c636](d46c636))
* move lookup loop logging to lower level
([#2784](#2784))
([a20faaa](a20faaa))
* **multicom:** update selectors
([#2499](#2499))
([7c4c6ed](7c4c6ed))
* **netonnet-no:** update selectors
([#2547](#2547))
([0378a7c](0378a7c))
* **nodejs:** bump version
([#2088](#2088))
([afe7a70](afe7a70))
* **notification:** add better logging, remove debug
([d12639e](d12639e))
* **nvidia:** add 3070ti & 3080ti
([#2798](#2798))
([ada90bf](ada90bf))
* **otto:** add labels for xbox series x & s
([#2515](#2515))
([d0a6c7e](d0a6c7e))
* prune invalid links
([#2592](#2592))
([b33f678](b33f678))
* remove hooks
([b6af582](b6af582))
* remove unused dependencies
([53e7a8d](53e7a8d))
* revert puppeteer, run linter
([5e9b3db](5e9b3db))
* **store:** add additional PS5 bundles and alternative links for
MediaMarkt (DE) & Saturn (DE)
([#2820](#2820))
([668ed54](668ed54))
* **store:** add additional PS5 bundles to MediaMarkt (DE) & Saturn (DE)
([#2787](#2787))
([0d936a9](0d936a9))
* **store:** add more links to norwegian stores
([#2485](#2485))
([a286b73](a286b73))
* **store:** add Nvidia RTX Cards
([#2204](#2204))
([0a9ce0d](0a9ce0d))
* **store:** add some PS5 bundles
([#2021](#2021))
([d4dc397](d4dc397))
* **store:** EBGames renamed to Gamestop (in Canada)
([#2734](#2734))
([4e77c67](4e77c67))
* **store:** updated and added Nvidia links
([#2806](#2806))
([c31a861](c31a861))
* update dependencies
([f14a1ca](f14a1ca))
* update dependencies
([1d08d4c](1d08d4c))
* update dependencies and nightly workflow
([3b43732](3b43732))
* update package-lock, remove ci perms
([#3059](#3059))
([ba98f26](ba98f26))
* update pr template
([f0e5c5d](f0e5c5d))
* update stale workflow
([e4a267f](e4a267f))
* **walmart:** update 5900x url
([#2184](#2184))
([b2ce715](b2ce715))
* **xbox:** update oos selector
([4d89306](4d89306)),
closes [#2118](#2118)
[#2479](#2479)
[#2475](https://github.com/jef/streetmerchant/issues/2475)
[#2200](#2200)

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants