import { Effect } from 'effect' import type { Page } from 'puppeteer' import { CrawlerElementNotFoundError } from '../..' const STOCK_LEVEL_BADGE_SELECTOR = '.modellfilter_row > .modellfilter_head > .colored_label_wrapper' export const getStockLevel = (page: Page) => Effect.gen(function* () { return yield* Effect.tryPromise({ try: () => page.evaluate((STOCK_LEVEL_BADGE_SELECTOR) => { const stockLevelBadge: HTMLDivElement | null = document.querySelector( STOCK_LEVEL_BADGE_SELECTOR, ) if (!stockLevelBadge) { throw new Error('Could not find stock level') } return stockLevelBadge.innerText }, STOCK_LEVEL_BADGE_SELECTOR), catch: (cause) => new CrawlerElementNotFoundError({ message: `Could not parse stock level, ${cause}`, cause, }), }) })