├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE.md └── workflows │ └── ci.yml ├── .gitignore ├── .husky └── pre-commit ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── biome.json ├── debug.js ├── dist └── best_price │ └── best_price.user.js ├── docs └── static │ └── example.png ├── globals.d.ts ├── package.json ├── playwright.config.ts ├── src ├── best_price │ ├── best_price.user.ts │ ├── common │ │ ├── bestPriceReorder.ts │ │ ├── common_parser.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── parseTitle.ts │ │ ├── price_parse.ts │ │ ├── price_render.ts │ │ └── store.ts │ └── sites │ │ ├── auchan_ru.ts │ │ ├── example_com.ts │ │ ├── index.ts │ │ ├── lenta_com.ts │ │ ├── okeydostavka_ru.ts │ │ ├── ozon_ru.ts │ │ ├── perekrestok_ru.ts │ │ └── wildberries_ru.ts ├── custom.d.ts └── utils │ ├── GM.ts │ ├── dom.ts │ ├── events.ts │ ├── index.ts │ ├── location.test.ts │ ├── location.ts │ ├── sort.ts │ └── types.d.ts ├── tampermonkey-module.d.ts ├── tests ├── e2e │ ├── check_detection.test.ts │ ├── helpers.ts │ └── ozon_ru │ │ ├── catalog.test.ts │ │ └── product_page.test.ts ├── jsdom │ ├── example_com │ │ ├── catalog.test.ts │ │ └── page.test.ts │ ├── helpers.ts │ ├── jsdom_snapshot.ts │ ├── lenta_com │ │ ├── catalog.test.ts │ │ └── page.test.ts │ ├── ozon_ru │ │ ├── catalog.test.ts │ │ └── page.test.ts │ ├── perekrestok_ru │ │ ├── catalog.test.ts │ │ └── page.test.ts │ ├── snapshot_sync.ts │ ├── snapshots │ │ ├── debug │ │ │ ├── fingerprint.html │ │ │ └── sannysoft.html │ │ ├── lenta.com │ │ │ ├── catalog.html │ │ │ └── page.html │ │ ├── okeydostavka.ru │ │ │ ├── catalog.html │ │ │ └── page.html │ │ ├── ozon.ru │ │ │ ├── catalog.html │ │ │ └── page.html │ │ ├── perekrestok.ru │ │ │ ├── catalog.html │ │ │ └── page.html │ │ └── wildberries.ru │ │ │ ├── catalog.html │ │ │ ├── page.html │ │ │ └── popup.html │ └── wildberries_ru │ │ ├── catalog.test.ts │ │ ├── page.test.ts │ │ └── popup.test.ts ├── playwrightGlobalSetup.ts ├── test_utils │ ├── expect.ts │ ├── globalHooks.ts │ ├── index.ts │ ├── jsdom │ │ ├── globalHooks.ts │ │ ├── helpers.test.ts │ │ ├── helpers.ts │ │ ├── hooks.ts │ │ └── index.ts │ └── localStorage │ │ ├── globalHook.ts │ │ └── localStorage.ts └── unit │ └── common │ ├── parseTitle.test.ts │ └── store.test.ts ├── tsconfig-for-webpack-config.json ├── tsconfig.json └── webpack.config.ts /.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/.gitattributes -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: 2 | - https://pay.cloudtips.ru/p/31b263e0 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/.gitignore -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npm run pre-commit -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/README.md -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/biome.json -------------------------------------------------------------------------------- /debug.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/debug.js -------------------------------------------------------------------------------- /dist/best_price/best_price.user.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/dist/best_price/best_price.user.js -------------------------------------------------------------------------------- /docs/static/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/docs/static/example.png -------------------------------------------------------------------------------- /globals.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/globals.d.ts -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/package.json -------------------------------------------------------------------------------- /playwright.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/playwright.config.ts -------------------------------------------------------------------------------- /src/best_price/best_price.user.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/best_price.user.ts -------------------------------------------------------------------------------- /src/best_price/common/bestPriceReorder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/common/bestPriceReorder.ts -------------------------------------------------------------------------------- /src/best_price/common/common_parser.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/common/common_parser.ts -------------------------------------------------------------------------------- /src/best_price/common/constants.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/common/constants.ts -------------------------------------------------------------------------------- /src/best_price/common/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/best_price/common/parseTitle.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/common/parseTitle.ts -------------------------------------------------------------------------------- /src/best_price/common/price_parse.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/common/price_parse.ts -------------------------------------------------------------------------------- /src/best_price/common/price_render.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/common/price_render.ts -------------------------------------------------------------------------------- /src/best_price/common/store.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/common/store.ts -------------------------------------------------------------------------------- /src/best_price/sites/auchan_ru.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/sites/auchan_ru.ts -------------------------------------------------------------------------------- /src/best_price/sites/example_com.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/sites/example_com.ts -------------------------------------------------------------------------------- /src/best_price/sites/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/sites/index.ts -------------------------------------------------------------------------------- /src/best_price/sites/lenta_com.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/sites/lenta_com.ts -------------------------------------------------------------------------------- /src/best_price/sites/okeydostavka_ru.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/sites/okeydostavka_ru.ts -------------------------------------------------------------------------------- /src/best_price/sites/ozon_ru.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/sites/ozon_ru.ts -------------------------------------------------------------------------------- /src/best_price/sites/perekrestok_ru.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/sites/perekrestok_ru.ts -------------------------------------------------------------------------------- /src/best_price/sites/wildberries_ru.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/best_price/sites/wildberries_ru.ts -------------------------------------------------------------------------------- /src/custom.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/custom.d.ts -------------------------------------------------------------------------------- /src/utils/GM.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/utils/GM.ts -------------------------------------------------------------------------------- /src/utils/dom.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/utils/dom.ts -------------------------------------------------------------------------------- /src/utils/events.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/utils/events.ts -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/utils/index.ts -------------------------------------------------------------------------------- /src/utils/location.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/utils/location.test.ts -------------------------------------------------------------------------------- /src/utils/location.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/utils/location.ts -------------------------------------------------------------------------------- /src/utils/sort.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/src/utils/sort.ts -------------------------------------------------------------------------------- /src/utils/types.d.ts: -------------------------------------------------------------------------------- 1 | export type Optional = T | null | undefined; 2 | -------------------------------------------------------------------------------- /tampermonkey-module.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tampermonkey-module.d.ts -------------------------------------------------------------------------------- /tests/e2e/check_detection.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/e2e/check_detection.test.ts -------------------------------------------------------------------------------- /tests/e2e/helpers.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/e2e/helpers.ts -------------------------------------------------------------------------------- /tests/e2e/ozon_ru/catalog.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/e2e/ozon_ru/catalog.test.ts -------------------------------------------------------------------------------- /tests/e2e/ozon_ru/product_page.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/e2e/ozon_ru/product_page.test.ts -------------------------------------------------------------------------------- /tests/jsdom/example_com/catalog.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/example_com/catalog.test.ts -------------------------------------------------------------------------------- /tests/jsdom/example_com/page.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/example_com/page.test.ts -------------------------------------------------------------------------------- /tests/jsdom/helpers.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/helpers.ts -------------------------------------------------------------------------------- /tests/jsdom/jsdom_snapshot.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/jsdom_snapshot.ts -------------------------------------------------------------------------------- /tests/jsdom/lenta_com/catalog.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/lenta_com/catalog.test.ts -------------------------------------------------------------------------------- /tests/jsdom/lenta_com/page.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/lenta_com/page.test.ts -------------------------------------------------------------------------------- /tests/jsdom/ozon_ru/catalog.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/ozon_ru/catalog.test.ts -------------------------------------------------------------------------------- /tests/jsdom/ozon_ru/page.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/ozon_ru/page.test.ts -------------------------------------------------------------------------------- /tests/jsdom/perekrestok_ru/catalog.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/perekrestok_ru/catalog.test.ts -------------------------------------------------------------------------------- /tests/jsdom/perekrestok_ru/page.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/perekrestok_ru/page.test.ts -------------------------------------------------------------------------------- /tests/jsdom/snapshot_sync.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshot_sync.ts -------------------------------------------------------------------------------- /tests/jsdom/snapshots/debug/fingerprint.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/debug/fingerprint.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/debug/sannysoft.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/debug/sannysoft.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/lenta.com/catalog.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/lenta.com/catalog.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/lenta.com/page.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/lenta.com/page.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/okeydostavka.ru/catalog.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/okeydostavka.ru/catalog.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/okeydostavka.ru/page.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/okeydostavka.ru/page.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/ozon.ru/catalog.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/ozon.ru/catalog.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/ozon.ru/page.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/ozon.ru/page.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/perekrestok.ru/catalog.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/perekrestok.ru/catalog.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/perekrestok.ru/page.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/perekrestok.ru/page.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/wildberries.ru/catalog.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/wildberries.ru/catalog.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/wildberries.ru/page.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/wildberries.ru/page.html -------------------------------------------------------------------------------- /tests/jsdom/snapshots/wildberries.ru/popup.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/snapshots/wildberries.ru/popup.html -------------------------------------------------------------------------------- /tests/jsdom/wildberries_ru/catalog.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/wildberries_ru/catalog.test.ts -------------------------------------------------------------------------------- /tests/jsdom/wildberries_ru/page.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/wildberries_ru/page.test.ts -------------------------------------------------------------------------------- /tests/jsdom/wildberries_ru/popup.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/jsdom/wildberries_ru/popup.test.ts -------------------------------------------------------------------------------- /tests/playwrightGlobalSetup.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/playwrightGlobalSetup.ts -------------------------------------------------------------------------------- /tests/test_utils/expect.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/test_utils/expect.ts -------------------------------------------------------------------------------- /tests/test_utils/globalHooks.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/test_utils/globalHooks.ts -------------------------------------------------------------------------------- /tests/test_utils/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/test_utils/jsdom/globalHooks.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/test_utils/jsdom/globalHooks.ts -------------------------------------------------------------------------------- /tests/test_utils/jsdom/helpers.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/test_utils/jsdom/helpers.test.ts -------------------------------------------------------------------------------- /tests/test_utils/jsdom/helpers.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/test_utils/jsdom/helpers.ts -------------------------------------------------------------------------------- /tests/test_utils/jsdom/hooks.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/test_utils/jsdom/hooks.ts -------------------------------------------------------------------------------- /tests/test_utils/jsdom/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/test_utils/localStorage/globalHook.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/test_utils/localStorage/globalHook.ts -------------------------------------------------------------------------------- /tests/test_utils/localStorage/localStorage.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/test_utils/localStorage/localStorage.ts -------------------------------------------------------------------------------- /tests/unit/common/parseTitle.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/unit/common/parseTitle.test.ts -------------------------------------------------------------------------------- /tests/unit/common/store.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tests/unit/common/store.test.ts -------------------------------------------------------------------------------- /tsconfig-for-webpack-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tsconfig-for-webpack-config.json -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/tsconfig.json -------------------------------------------------------------------------------- /webpack.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apkawa/best_price_userscript/HEAD/webpack.config.ts --------------------------------------------------------------------------------