refactor: easier comparables, fix audits (#614)

This commit is contained in:
Jef LeCompte
2020-10-29 16:27:09 -04:00
committed by GitHub
parent e5b0d7983b
commit 13edbf311e
9 changed files with 12636 additions and 4213 deletions
+2 -2
View File
@@ -7,7 +7,7 @@ import {usingResponse} from '../util';
function addNewLinks(store: Store, links: Link[], series: Series) {
if (links.length === 0) {
logger.warn(Print.message('NO STORE LINKS FOUND', series, store, true));
logger.debug(Print.message('NO STORE LINKS FOUND', series, store, true));
return;
}
@@ -19,7 +19,7 @@ function addNewLinks(store: Store, links: Link[], series: Series) {
return;
}
logger.info(Print.message(`FOUND ${newLinks.length} STORE LINKS`, series, store, true));
logger.debug(Print.message(`FOUND ${newLinks.length} STORE LINKS`, series, store, true));
logger.debug(JSON.stringify(newLinks, null, 2));
store.links = store.links.concat(newLinks);
+2 -2
View File
@@ -1,5 +1,5 @@
import {Browser, Page, Response} from 'puppeteer';
import {Link, Store} from './model';
import {Link, Store, getStores} from './model';
import {Print, logger} from '../logger';
import {Selector, cardPrice, pageIncludesLabels} from './includes-labels';
import {closePage, delay, getRandomUserAgent, getSleepTime, isStatusCodeInRange} from '../util';
@@ -24,7 +24,7 @@ const linkBuilderLastRunTimes: Record<string, number> = {};
* @param store Vendor of graphics cards.
*/
async function lookup(browser: Browser, store: Store) {
if (config.store.stores.length > 0 && !config.store.stores.find(foundStore => foundStore.name === store.name)) {
if (!getStores().has(store.name)) {
return;
}
+58 -33
View File
@@ -44,6 +44,7 @@ import {ProshopDE} from './proshop-de';
import {ProshopDK} from './proshop-dk';
import {Saturn} from './saturn';
import {Scan} from './scan';
import {Store} from './store';
import {Very} from './very';
import {Zotac} from './zotac';
import {logger} from '../../logger';
@@ -99,35 +100,73 @@ export const storeList = new Map([
]);
const brands = new Set();
const series = new Set();
const models = new Set();
const series = new Set();
const stores = new Map();
for (const storeData of config.store.stores) {
const store = storeList.get(storeData.name);
if (store) {
store.minPageSleep = storeData.minPageSleep;
store.maxPageSleep = storeData.maxPageSleep;
} else {
logger.warn(`No store named ${storeData.name}, skipping.`);
function filterBrandsSeriesModels(stores: Map<string, Store>) {
brands.clear();
series.clear();
models.clear();
for (const store of stores.values()) {
for (const link of store.links) {
brands.add(link.brand);
series.add(link.series);
models.add(link.model);
}
if (store.minPageSleep === undefined) {
store.minPageSleep = defaultStoreData.minPageSleep;
}
if (store.maxPageSleep === undefined) {
store.maxPageSleep = defaultStoreData.maxPageSleep;
}
}
}
for (const store of storeList.values()) {
for (const link of store.links) {
brands.add(link.brand);
series.add(link.series);
models.add(link.model);
function printConfig() {
if (config.store.stores.length > 0) {
logger.info(` selected stores: ${config.store.stores.map(store => store.name).join(', ')}`);
}
if (store.minPageSleep === undefined) {
store.minPageSleep = defaultStoreData.minPageSleep;
if (config.store.showOnlyBrands.length > 0) {
logger.info(` selected brands: ${config.store.showOnlyBrands.join(', ')}`);
}
if (store.maxPageSleep === undefined) {
store.maxPageSleep = defaultStoreData.maxPageSleep;
if (config.store.showOnlyModels.length > 0) {
logger.info(` selected models: ${config.store.showOnlyModels.map(entry => {
return entry.series ? entry.name + ' (' + entry.series + ')' : entry.name;
}).join(', ')}`);
}
if (config.store.showOnlySeries.length > 0) {
logger.info(` selected series: ${config.store.showOnlySeries.join(', ')}`);
}
}
export function updateStores() {
stores.clear();
for (const storeData of config.store.stores) {
const store = storeList.get(storeData.name);
if (store) {
stores.set(storeData.name, store);
store.minPageSleep = storeData.minPageSleep;
store.maxPageSleep = storeData.maxPageSleep;
} else {
logger.warn(`No store named ${storeData.name}, skipping.`);
}
}
filterBrandsSeriesModels(stores);
printConfig();
}
updateStores();
export function getAllBrands() {
return Array.from(brands);
}
@@ -140,22 +179,8 @@ export function getAllModels() {
return Array.from(models);
}
if (config.store.stores.length > 0) {
logger.info(` selected stores: ${config.store.stores.map(store => store.name).join(', ')}`);
}
if (config.store.showOnlyBrands.length > 0) {
logger.info(` selected brands: ${config.store.showOnlyBrands.join(', ')}`);
}
if (config.store.showOnlyModels.length > 0) {
logger.info(` selected models: ${config.store.showOnlyModels.map(entry => {
return entry.series ? entry.name + ' (' + entry.series + ')' : entry.name;
}).join(', ')}`);
}
if (config.store.showOnlySeries.length > 0) {
logger.info(` selected series: ${config.store.showOnlySeries.join(', ')}`);
export function getStores() {
return stores;
}
export * from './store';