forked from VATSIM-Radar/data
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvalidate-json.mjs
More file actions
28 lines (22 loc) · 952 Bytes
/
validate-json.mjs
File metadata and controls
28 lines (22 loc) · 952 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import {readFileSync} from "node:fs";
import {join} from "path";
const json = JSON.parse(readFileSync(join(import.meta.dirname, 'custom-data', 'airlines.json'), 'utf-8'));
const airlines = (await (await fetch(`https://gng.aero-nav.com/AERONAV/icao_fhairlines?action=get&oper=grid&_search=false&nd=${Date.now()}&rows=10000&page=1&sidx=icao&sord=asc`, {
responseType: 'json'
})).json()).rows
const allowed = [
'WTB',
'MXB',
'HXB',
'MBC',
'SKS',
'HEC'
]
for(let i = 0; i < json.length; i++){
const airline = json[i]
const duplicateAirline = airlines.find(x => x.icao === airline.icao);
if (duplicateAirline && (!('virtual' in duplicateAirline) || duplicateAirline.virtual === airline.virtual) && (!allowed.includes(airline.icao) || json.some((x, index) => x.icao === airline.icao && index !== i))) {
throw new Error(`${airline.icao} virtual airline already exists`)
}
airlines.push(airline)
}