| const NEXT_DATA_QUERY = 'script#__NEXT_DATA__' | |
| const PRIMER_DATA_QUERY = 'script#__PRIMER_DATA__' | |
| // Using any type for $ parameter as it represents a jQuery-like selector (cheerio) | |
| function getScriptData($: any, key: string): any { | |
| const data = $(key) | |
| if (data.length !== 1) { | |
| throw new Error(`Not exactly 1 element match for '${key}'. Found ${data.length}`) | |
| } | |
| return JSON.parse(data.get()[0].children[0].data) | |
| } | |
| // Using any types for cheerio/jQuery-like objects and parsed JSON data | |
| export const getNextData = ($: any): any => getScriptData($, NEXT_DATA_QUERY) | |
| export const getPrimerData = ($: any): any => getScriptData($, PRIMER_DATA_QUERY) | |