fixing markers
This commit is contained in:
@@ -12,23 +12,16 @@ export async function getShapes() {
|
|||||||
return JSON.parse(await readFile(SHAPES_PATH, 'utf8'))
|
return JSON.parse(await readFile(SHAPES_PATH, 'utf8'))
|
||||||
}
|
}
|
||||||
|
|
||||||
const r = await fetch('https://raw.githubusercontent.com/wiedehopf/tar1090/refs/heads/master/html/markers.js')
|
const r = await fetch('https://raw.githubusercontent.com/wiedehopf/tar1090/refs/heads/master/html/markers.js', {
|
||||||
|
headers: { 'User-Agent': 'Mozilla/5.0' }
|
||||||
|
})
|
||||||
const text = await r.text()
|
const text = await r.text()
|
||||||
|
|
||||||
// Rip out just the `let shapes = { ... }` block by finding the matching closing brace
|
let shapes = {}
|
||||||
const start = text.indexOf('let shapes = {')
|
eval(text.replace('let shapes', 'shapes') + '; shapes = shapes;')
|
||||||
if (start === -1) throw new Error('Could not find shapes definition in markers.js')
|
|
||||||
|
|
||||||
let depth = 0, end = -1
|
const fn = new Function(`${text.replace('let shapes', 'var shapes')}; return shapes;`)
|
||||||
for (let i = start + 'let shapes = '.length; i < text.length; i++) {
|
shapes = fn()
|
||||||
if (text[i] === '{') depth++
|
|
||||||
else if (text[i] === '}') { depth--; if (depth === 0) { end = i + 1; break } }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (end === -1) throw new Error('Could not find end of shapes definition')
|
|
||||||
|
|
||||||
// Use Function to eval the JS object safely (avoids JSON.parse issues with unquoted keys, comments etc)
|
|
||||||
const shapes = new Function(`return ${text.slice(start + 'let shapes = '.length, end)}`)()
|
|
||||||
|
|
||||||
await writeFile(SHAPES_PATH, JSON.stringify(shapes))
|
await writeFile(SHAPES_PATH, JSON.stringify(shapes))
|
||||||
return shapes
|
return shapes
|
||||||
|
|||||||
Reference in New Issue
Block a user