@fboes/aerofly-data 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.5.1] - 2026-03-10
9
+
10
+ - Added ICAO code to liveries which belong to known airlines
11
+ - Improved `NodeNext` compatibility of JSON exports
12
+
8
13
  ## [1.5.0] - 2026-03-09
9
14
 
10
15
  - Changed testing to standard Node.js testing suite
package/README.md CHANGED
@@ -26,6 +26,13 @@ The `data` directory contains the following files:
26
26
 
27
27
  Also be aware that these files can be called as a very simple REST API using static hosting at https://fboes.github.io/aerofly-data/.
28
28
 
29
+ Also the JSON files can be loaded in Node.js / TypeScript:
30
+
31
+ ```typescript
32
+ import AeroflyAircraftLiveries from "@fboes/aerofly-data/data/aircraft-liveries.json" with { type: "json" };
33
+ import type { AeroflyAircraft, AeroflyAircraftLivery } from "@fboes/aerofly-data/data/aircraft-liveries.json";
34
+ ```
35
+
29
36
  ## Building
30
37
 
31
38
  To generate a new list of all airports available in Aerofly FS 4:
@@ -36,7 +36,8 @@
36
36
  {
37
37
  "aeroflyCode": "air_france",
38
38
  "name": "Air France",
39
- "requirements": ["wingtips", "engine_cfm"]
39
+ "requirements": ["wingtips", "engine_cfm"],
40
+ "icaoCode": "AFR"
40
41
  },
41
42
  {
42
43
  "aeroflyCode": "air_mauritius",
@@ -51,7 +52,8 @@
51
52
  {
52
53
  "aeroflyCode": "american",
53
54
  "name": "American",
54
- "requirements": ["wingtips", "engine_iae"]
55
+ "requirements": ["wingtips", "engine_iae"],
56
+ "icaoCode": "AAL"
55
57
  },
56
58
  {
57
59
  "aeroflyCode": "avianca",
@@ -86,7 +88,8 @@
86
88
  {
87
89
  "aeroflyCode": "british_airways",
88
90
  "name": "British Airways",
89
- "requirements": ["wingtips", "engine_iae"]
91
+ "requirements": ["wingtips", "engine_iae"],
92
+ "icaoCode": "BAW"
90
93
  },
91
94
  {
92
95
  "aeroflyCode": "brussels",
@@ -121,7 +124,8 @@
121
124
  {
122
125
  "aeroflyCode": "delta",
123
126
  "name": "Delta",
124
- "requirements": ["wingtips", "engine_cfm"]
127
+ "requirements": ["wingtips", "engine_cfm"],
128
+ "icaoCode": "DAL"
125
129
  },
126
130
  {
127
131
  "aeroflyCode": "drukair",
@@ -131,12 +135,14 @@
131
135
  {
132
136
  "aeroflyCode": "easyjet",
133
137
  "name": "easyJet",
134
- "requirements": ["wingtips", "engine_cfm"]
138
+ "requirements": ["wingtips", "engine_cfm"],
139
+ "icaoCode": "EZY"
135
140
  },
136
141
  {
137
142
  "aeroflyCode": "easyjet_com",
138
143
  "name": "easyJet",
139
- "requirements": ["wingtips", "engine_cfm"]
144
+ "requirements": ["wingtips", "engine_cfm"],
145
+ "icaoCode": "EZY"
140
146
  },
141
147
  {
142
148
  "aeroflyCode": "finnair",
@@ -156,7 +162,8 @@
156
162
  {
157
163
  "aeroflyCode": "iberia",
158
164
  "name": "Iberia",
159
- "requirements": ["wingtips", "engine_cfm"]
165
+ "requirements": ["wingtips", "engine_cfm"],
166
+ "icaoCode": "IBE"
160
167
  },
161
168
  {
162
169
  "aeroflyCode": "ita_airways",
@@ -166,12 +173,14 @@
166
173
  {
167
174
  "aeroflyCode": "latam",
168
175
  "name": "LATAM",
169
- "requirements": ["wingtips", "engine_iae"]
176
+ "requirements": ["wingtips", "engine_iae"],
177
+ "icaoCode": "LAN"
170
178
  },
171
179
  {
172
180
  "aeroflyCode": "lufthansa",
173
181
  "name": "Lufthansa",
174
- "requirements": ["wingtips", "engine_cfm"]
182
+ "requirements": ["wingtips", "engine_cfm"],
183
+ "icaoCode": "DLH"
175
184
  },
176
185
  {
177
186
  "aeroflyCode": "philippine",
@@ -191,7 +200,8 @@
191
200
  {
192
201
  "aeroflyCode": "sas",
193
202
  "name": "SAS",
194
- "requirements": ["wingtips", "engine_iae"]
203
+ "requirements": ["wingtips", "engine_iae"],
204
+ "icaoCode": "SAS"
195
205
  },
196
206
  {
197
207
  "aeroflyCode": "slovakia",
@@ -206,7 +216,8 @@
206
216
  {
207
217
  "aeroflyCode": "swiss",
208
218
  "name": "SWISS",
209
- "requirements": ["wingtips", "engine_cfm"]
219
+ "requirements": ["wingtips", "engine_cfm"],
220
+ "icaoCode": "SWR"
210
221
  },
211
222
  {
212
223
  "aeroflyCode": "tap",
@@ -226,7 +237,8 @@
226
237
  {
227
238
  "aeroflyCode": "united",
228
239
  "name": "United",
229
- "requirements": ["wingtips", "engine_iae"]
240
+ "requirements": ["wingtips", "engine_iae"],
241
+ "icaoCode": "UAL"
230
242
  },
231
243
  {
232
244
  "aeroflyCode": "volaris",
@@ -277,7 +289,8 @@
277
289
  {
278
290
  "aeroflyCode": "aeroflot",
279
291
  "name": "Aeroflot",
280
- "requirements": ["wingtips"]
292
+ "requirements": ["wingtips"],
293
+ "icaoCode": "AFL"
281
294
  },
282
295
  {
283
296
  "aeroflyCode": "aer_lingus",
@@ -297,12 +310,14 @@
297
310
  {
298
311
  "aeroflyCode": "air_china",
299
312
  "name": "Air China",
300
- "requirements": ["wingtips"]
313
+ "requirements": ["wingtips"],
314
+ "icaoCode": "CCA"
301
315
  },
302
316
  {
303
317
  "aeroflyCode": "air_france",
304
318
  "name": "Air France",
305
- "requirements": ["sharklets"]
319
+ "requirements": ["sharklets"],
320
+ "icaoCode": "AFR"
306
321
  },
307
322
  {
308
323
  "aeroflyCode": "air_jamaica",
@@ -322,12 +337,14 @@
322
337
  {
323
338
  "aeroflyCode": "alitalia",
324
339
  "name": "Alitalia",
325
- "requirements": ["wingtips"]
340
+ "requirements": ["wingtips"],
341
+ "icaoCode": "AZA"
326
342
  },
327
343
  {
328
344
  "aeroflyCode": "american",
329
345
  "name": "American Airlines",
330
- "requirements": ["sharklets"]
346
+ "requirements": ["sharklets"],
347
+ "icaoCode": "AAL"
331
348
  },
332
349
  {
333
350
  "aeroflyCode": "ana",
@@ -342,12 +359,14 @@
342
359
  {
343
360
  "aeroflyCode": "british_airways",
344
361
  "name": "British Airways",
345
- "requirements": ["sharklets"]
362
+ "requirements": ["sharklets"],
363
+ "icaoCode": "BAW"
346
364
  },
347
365
  {
348
366
  "aeroflyCode": "cathay_pacific",
349
367
  "name": "Cathay Pacific",
350
- "requirements": ["wingtips"]
368
+ "requirements": ["wingtips"],
369
+ "icaoCode": "CPA"
351
370
  },
352
371
  {
353
372
  "aeroflyCode": "china_eastern",
@@ -357,7 +376,8 @@
357
376
  {
358
377
  "aeroflyCode": "china_southern",
359
378
  "name": "China Southern",
360
- "requirements": ["wingtips"]
379
+ "requirements": ["wingtips"],
380
+ "icaoCode": "CSN"
361
381
  },
362
382
  {
363
383
  "aeroflyCode": "citilink",
@@ -367,12 +387,14 @@
367
387
  {
368
388
  "aeroflyCode": "delta",
369
389
  "name": "Delta",
370
- "requirements": ["wingtips"]
390
+ "requirements": ["wingtips"],
391
+ "icaoCode": "DAL"
371
392
  },
372
393
  {
373
394
  "aeroflyCode": "easyjet",
374
395
  "name": "easyJet",
375
- "requirements": ["sharklets"]
396
+ "requirements": ["sharklets"],
397
+ "icaoCode": "EZY"
376
398
  },
377
399
  {
378
400
  "aeroflyCode": "edelweiss",
@@ -432,12 +454,14 @@
432
454
  {
433
455
  "aeroflyCode": "swiss",
434
456
  "name": "Swiss",
435
- "requirements": ["sharklets"]
457
+ "requirements": ["sharklets"],
458
+ "icaoCode": "SWR"
436
459
  },
437
460
  {
438
461
  "aeroflyCode": "tam",
439
462
  "name": "TAM",
440
- "requirements": ["wingtips"]
463
+ "requirements": ["wingtips"],
464
+ "icaoCode": "TAM"
441
465
  },
442
466
  {
443
467
  "aeroflyCode": "tap",
@@ -578,7 +602,8 @@
578
602
  {
579
603
  "aeroflyCode": "british_airways",
580
604
  "name": "British Airways",
581
- "requirements": ["engine_cfm"]
605
+ "requirements": ["engine_cfm"],
606
+ "icaoCode": "BAW"
582
607
  },
583
608
  {
584
609
  "aeroflyCode": "brussels",
@@ -608,12 +633,14 @@
608
633
  {
609
634
  "aeroflyCode": "easyjet",
610
635
  "name": "EasyJet",
611
- "requirements": ["engine_cfm"]
636
+ "requirements": ["engine_cfm"],
637
+ "icaoCode": "EZY"
612
638
  },
613
639
  {
614
640
  "aeroflyCode": "eurowings",
615
641
  "name": "Eurowings",
616
- "requirements": ["engine_cfm"]
642
+ "requirements": ["engine_cfm"],
643
+ "icaoCode": "EWG"
617
644
  },
618
645
  {
619
646
  "aeroflyCode": "flynas",
@@ -643,7 +670,8 @@
643
670
  {
644
671
  "aeroflyCode": "iberia",
645
672
  "name": "Iberia",
646
- "requirements": ["engine_cfm"]
673
+ "requirements": ["engine_cfm"],
674
+ "icaoCode": "IBE"
647
675
  },
648
676
  {
649
677
  "aeroflyCode": "ita",
@@ -668,7 +696,8 @@
668
696
  {
669
697
  "aeroflyCode": "latam",
670
698
  "name": "LATAM",
671
- "requirements": ["engine_pw"]
699
+ "requirements": ["engine_pw"],
700
+ "icaoCode": "LAN"
672
701
  },
673
702
  {
674
703
  "aeroflyCode": "latam_green",
@@ -678,7 +707,8 @@
678
707
  {
679
708
  "aeroflyCode": "lufthansa",
680
709
  "name": "Lufthansa",
681
- "requirements": ["engine_pw"]
710
+ "requirements": ["engine_pw"],
711
+ "icaoCode": "DLH"
682
712
  },
683
713
  {
684
714
  "aeroflyCode": "malta",
@@ -703,7 +733,8 @@
703
733
  {
704
734
  "aeroflyCode": "sas",
705
735
  "name": "SAS",
706
- "requirements": ["engine_cfm", "option_satcom"]
736
+ "requirements": ["engine_cfm", "option_satcom"],
737
+ "icaoCode": "SAS"
707
738
  },
708
739
  {
709
740
  "aeroflyCode": "scoot",
@@ -728,7 +759,8 @@
728
759
  {
729
760
  "aeroflyCode": "swiss",
730
761
  "name": "Swiss",
731
- "requirements": ["engine_pw"]
762
+ "requirements": ["engine_pw"],
763
+ "icaoCode": "SWR"
732
764
  },
733
765
  {
734
766
  "aeroflyCode": "tap",
@@ -809,7 +841,8 @@
809
841
  {
810
842
  "aeroflyCode": "air_canada",
811
843
  "name": "Air Canada",
812
- "requirements": ["wingtips", "engine_cfm"]
844
+ "requirements": ["wingtips", "engine_cfm"],
845
+ "icaoCode": "ACA"
813
846
  },
814
847
  {
815
848
  "aeroflyCode": "air_canada_rouge",
@@ -819,7 +852,8 @@
819
852
  {
820
853
  "aeroflyCode": "air_france",
821
854
  "name": "Air France",
822
- "requirements": ["wingtips", "engine_cfm"]
855
+ "requirements": ["wingtips", "engine_cfm"],
856
+ "icaoCode": "AFR"
823
857
  },
824
858
  {
825
859
  "aeroflyCode": "air_transat",
@@ -829,7 +863,8 @@
829
863
  {
830
864
  "aeroflyCode": "american",
831
865
  "name": "American",
832
- "requirements": ["sharklets", "engine_iae"]
866
+ "requirements": ["sharklets", "engine_iae"],
867
+ "icaoCode": "AAL"
833
868
  },
834
869
  {
835
870
  "aeroflyCode": "american_aw",
@@ -869,7 +904,8 @@
869
904
  {
870
905
  "aeroflyCode": "british_airways",
871
906
  "name": "British Airways",
872
- "requirements": ["wingtips", "engine_iae"]
907
+ "requirements": ["wingtips", "engine_iae"],
908
+ "icaoCode": "BAW"
873
909
  },
874
910
  {
875
911
  "aeroflyCode": "cebu_pacific",
@@ -879,7 +915,8 @@
879
915
  {
880
916
  "aeroflyCode": "china_southern",
881
917
  "name": "China Southern",
882
- "requirements": ["wingtips", "engine_iae"]
918
+ "requirements": ["wingtips", "engine_iae"],
919
+ "icaoCode": "CSN"
883
920
  },
884
921
  {
885
922
  "aeroflyCode": "condor_island",
@@ -899,7 +936,8 @@
899
936
  {
900
937
  "aeroflyCode": "delta",
901
938
  "name": "Delta",
902
- "requirements": ["sharklets", "engine_cfm"]
939
+ "requirements": ["sharklets", "engine_cfm"],
940
+ "icaoCode": "DAL"
903
941
  },
904
942
  {
905
943
  "aeroflyCode": "egyptair",
@@ -909,7 +947,8 @@
909
947
  {
910
948
  "aeroflyCode": "eurowings",
911
949
  "name": "Eurowings",
912
- "requirements": ["wingtips", "engine_iae"]
950
+ "requirements": ["wingtips", "engine_iae"],
951
+ "icaoCode": "EWG"
913
952
  },
914
953
  {
915
954
  "aeroflyCode": "eva_air",
@@ -934,7 +973,8 @@
934
973
  {
935
974
  "aeroflyCode": "iberia",
936
975
  "name": "Iberia",
937
- "requirements": ["wingtips", "engine_cfm"]
976
+ "requirements": ["wingtips", "engine_cfm"],
977
+ "icaoCode": "IBE"
938
978
  },
939
979
  {
940
980
  "aeroflyCode": "jet2",
@@ -944,7 +984,8 @@
944
984
  {
945
985
  "aeroflyCode": "jetblue",
946
986
  "name": "jetBlue",
947
- "requirements": ["sharklets", "engine_iae"]
987
+ "requirements": ["sharklets", "engine_iae"],
988
+ "icaoCode": "JBU"
948
989
  },
949
990
  {
950
991
  "aeroflyCode": "jetstar",
@@ -959,12 +1000,14 @@
959
1000
  {
960
1001
  "aeroflyCode": "latam",
961
1002
  "name": "LATAM",
962
- "requirements": ["sharklets", "engine_iae"]
1003
+ "requirements": ["sharklets", "engine_iae"],
1004
+ "icaoCode": "LAN"
963
1005
  },
964
1006
  {
965
1007
  "aeroflyCode": "lufthansa",
966
1008
  "name": "Lufthansa",
967
- "requirements": ["wingtips", "engine_iae"]
1009
+ "requirements": ["wingtips", "engine_iae"],
1010
+ "icaoCode": "DLH"
968
1011
  },
969
1012
  {
970
1013
  "aeroflyCode": "luftwaffe",
@@ -984,7 +1027,8 @@
984
1027
  {
985
1028
  "aeroflyCode": "sas",
986
1029
  "name": "SAS",
987
- "requirements": ["wingtips", "engine_iae"]
1030
+ "requirements": ["wingtips", "engine_iae"],
1031
+ "icaoCode": "SAS"
988
1032
  },
989
1033
  {
990
1034
  "aeroflyCode": "small_planet",
@@ -1004,7 +1048,8 @@
1004
1048
  {
1005
1049
  "aeroflyCode": "swiss",
1006
1050
  "name": "SWISS",
1007
- "requirements": ["sharklets", "engine_cfm"]
1051
+ "requirements": ["sharklets", "engine_cfm"],
1052
+ "icaoCode": "SWR"
1008
1053
  },
1009
1054
  {
1010
1055
  "aeroflyCode": "transnusa",
@@ -1014,7 +1059,8 @@
1014
1059
  {
1015
1060
  "aeroflyCode": "turkish",
1016
1061
  "name": "Turkish Airlines",
1017
- "requirements": ["wingtips", "engine_iae"]
1062
+ "requirements": ["wingtips", "engine_iae"],
1063
+ "icaoCode": "THY"
1018
1064
  },
1019
1065
  {
1020
1066
  "aeroflyCode": "vietjet_air",
@@ -1086,12 +1132,14 @@
1086
1132
  {
1087
1133
  "aeroflyCode": "british_airways",
1088
1134
  "name": "British Airways",
1089
- "requirements": []
1135
+ "requirements": [],
1136
+ "icaoCode": "BAW"
1090
1137
  },
1091
1138
  {
1092
1139
  "aeroflyCode": "cathay_pacific",
1093
1140
  "name": "Cathay Pacific",
1094
- "requirements": []
1141
+ "requirements": [],
1142
+ "icaoCode": "CPA"
1095
1143
  },
1096
1144
  {
1097
1145
  "aeroflyCode": "ethiopian",
@@ -1162,7 +1210,8 @@
1162
1210
  {
1163
1211
  "aeroflyCode": "air_france",
1164
1212
  "name": "Air France",
1165
- "requirements": ["engine_ea"]
1213
+ "requirements": ["engine_ea"],
1214
+ "icaoCode": "AFR"
1166
1215
  },
1167
1216
  {
1168
1217
  "aeroflyCode": "ana_kai",
@@ -1187,7 +1236,8 @@
1187
1236
  {
1188
1237
  "aeroflyCode": "china_southern",
1189
1238
  "name": "China Southern",
1190
- "requirements": ["engine_rr"]
1239
+ "requirements": ["engine_rr"],
1240
+ "icaoCode": "CSN"
1191
1241
  },
1192
1242
  {
1193
1243
  "aeroflyCode": "emirates",
@@ -1207,17 +1257,20 @@
1207
1257
  {
1208
1258
  "aeroflyCode": "korean",
1209
1259
  "name": "Korean Air",
1210
- "requirements": ["engine_ea"]
1260
+ "requirements": ["engine_ea"],
1261
+ "icaoCode": "KAL"
1211
1262
  },
1212
1263
  {
1213
1264
  "aeroflyCode": "lufthansa",
1214
1265
  "name": "Lufthansa",
1215
- "requirements": ["engine_rr"]
1266
+ "requirements": ["engine_rr"],
1267
+ "icaoCode": "DLH"
1216
1268
  },
1217
1269
  {
1218
1270
  "aeroflyCode": "lufthansa_classic",
1219
1271
  "name": "Lufthansa",
1220
- "requirements": ["engine_rr"]
1272
+ "requirements": ["engine_rr"],
1273
+ "icaoCode": "DLH"
1221
1274
  },
1222
1275
  {
1223
1276
  "aeroflyCode": "malaysia",
@@ -1394,7 +1447,8 @@
1394
1447
  {
1395
1448
  "aeroflyCode": "air_france",
1396
1449
  "name": "Air France",
1397
- "requirements": []
1450
+ "requirements": [],
1451
+ "icaoCode": "AFR"
1398
1452
  },
1399
1453
  {
1400
1454
  "aeroflyCode": "america_west",
@@ -1404,12 +1458,14 @@
1404
1458
  {
1405
1459
  "aeroflyCode": "ana",
1406
1460
  "name": "All Nippon Airways",
1407
- "requirements": []
1461
+ "requirements": [],
1462
+ "icaoCode": "ANA"
1408
1463
  },
1409
1464
  {
1410
1465
  "aeroflyCode": "british_airways",
1411
1466
  "name": "British Airways",
1412
- "requirements": []
1467
+ "requirements": [],
1468
+ "icaoCode": "BAW"
1413
1469
  },
1414
1470
  {
1415
1471
  "aeroflyCode": "british_midland",
@@ -1424,7 +1480,8 @@
1424
1480
  {
1425
1481
  "aeroflyCode": "delta",
1426
1482
  "name": "Delta",
1427
- "requirements": []
1483
+ "requirements": [],
1484
+ "icaoCode": "DAL"
1428
1485
  },
1429
1486
  {
1430
1487
  "aeroflyCode": "egypt_air",
@@ -1444,7 +1501,8 @@
1444
1501
  {
1445
1502
  "aeroflyCode": "lufthansa",
1446
1503
  "name": "Lufthansa",
1447
- "requirements": []
1504
+ "requirements": [],
1505
+ "icaoCode": "DLH"
1448
1506
  },
1449
1507
  {
1450
1508
  "aeroflyCode": "southwest",
@@ -1459,7 +1517,8 @@
1459
1517
  {
1460
1518
  "aeroflyCode": "united",
1461
1519
  "name": "United Airlines",
1462
- "requirements": []
1520
+ "requirements": [],
1521
+ "icaoCode": "UAL"
1463
1522
  },
1464
1523
  {
1465
1524
  "aeroflyCode": "us_airways",
@@ -1519,7 +1578,8 @@
1519
1578
  {
1520
1579
  "aeroflyCode": "air_china",
1521
1580
  "name": "Air China",
1522
- "requirements": ["winglets_blended"]
1581
+ "requirements": ["winglets_blended"],
1582
+ "icaoCode": "CCA"
1523
1583
  },
1524
1584
  {
1525
1585
  "aeroflyCode": "air_europa",
@@ -1544,7 +1604,8 @@
1544
1604
  {
1545
1605
  "aeroflyCode": "american",
1546
1606
  "name": "American",
1547
- "requirements": ["winglets_blended"]
1607
+ "requirements": ["winglets_blended"],
1608
+ "icaoCode": "AAL"
1548
1609
  },
1549
1610
  {
1550
1611
  "aeroflyCode": "ana",
@@ -1574,7 +1635,8 @@
1574
1635
  {
1575
1636
  "aeroflyCode": "china_southern",
1576
1637
  "name": "China Southern",
1577
- "requirements": ["winglets_blended"]
1638
+ "requirements": ["winglets_blended"],
1639
+ "icaoCode": "CSN"
1578
1640
  },
1579
1641
  {
1580
1642
  "aeroflyCode": "copa",
@@ -1584,7 +1646,8 @@
1584
1646
  {
1585
1647
  "aeroflyCode": "delta",
1586
1648
  "name": "Delta",
1587
- "requirements": ["winglets_split"]
1649
+ "requirements": ["winglets_split"],
1650
+ "icaoCode": "DAL"
1588
1651
  },
1589
1652
  {
1590
1653
  "aeroflyCode": "elal",
@@ -1664,7 +1727,8 @@
1664
1727
  {
1665
1728
  "aeroflyCode": "klm",
1666
1729
  "name": "KLM",
1667
- "requirements": ["winglets_blended"]
1730
+ "requirements": ["winglets_blended"],
1731
+ "icaoCode": "KLM"
1668
1732
  },
1669
1733
  {
1670
1734
  "aeroflyCode": "kulula",
@@ -1814,12 +1878,14 @@
1814
1878
  {
1815
1879
  "aeroflyCode": "turkish",
1816
1880
  "name": "Turkish Airlines",
1817
- "requirements": ["winglets_blended"]
1881
+ "requirements": ["winglets_blended"],
1882
+ "icaoCode": "THY"
1818
1883
  },
1819
1884
  {
1820
1885
  "aeroflyCode": "united",
1821
1886
  "name": "United Airlines",
1822
- "requirements": ["winglets_split"]
1887
+ "requirements": ["winglets_split"],
1888
+ "icaoCode": "UAL"
1823
1889
  },
1824
1890
  {
1825
1891
  "aeroflyCode": "virgin_australia",
@@ -1874,7 +1940,8 @@
1874
1940
  {
1875
1941
  "aeroflyCode": "delta",
1876
1942
  "name": "Delta",
1877
- "requirements": ["extended_range", "winglets_blended"]
1943
+ "requirements": ["extended_range", "winglets_blended"],
1944
+ "icaoCode": "DAL"
1878
1945
  },
1879
1946
  {
1880
1947
  "aeroflyCode": "elal",
@@ -1884,7 +1951,8 @@
1884
1951
  {
1885
1952
  "aeroflyCode": "klm",
1886
1953
  "name": "KLM",
1887
- "requirements": ["extended_range", "winglets_blended"]
1954
+ "requirements": ["extended_range", "winglets_blended"],
1955
+ "icaoCode": "KLM"
1888
1956
  },
1889
1957
  {
1890
1958
  "aeroflyCode": "korean",
@@ -1914,12 +1982,14 @@
1914
1982
  {
1915
1983
  "aeroflyCode": "turkish",
1916
1984
  "name": "Turkish Airlines",
1917
- "requirements": ["extended_range", "winglets_blended"]
1985
+ "requirements": ["extended_range", "winglets_blended"],
1986
+ "icaoCode": "THY"
1918
1987
  },
1919
1988
  {
1920
1989
  "aeroflyCode": "united",
1921
1990
  "name": "United Airlines",
1922
- "requirements": ["extended_range", "winglets_blended"]
1991
+ "requirements": ["extended_range", "winglets_blended"],
1992
+ "icaoCode": "UAL"
1923
1993
  }
1924
1994
  ]
1925
1995
  },
@@ -1994,12 +2064,14 @@
1994
2064
  {
1995
2065
  "aeroflyCode": "turkish",
1996
2066
  "name": "Turkish Airlines",
1997
- "requirements": []
2067
+ "requirements": [],
2068
+ "icaoCode": "THY"
1998
2069
  },
1999
2070
  {
2000
2071
  "aeroflyCode": "united",
2001
2072
  "name": "United Airlines",
2002
- "requirements": []
2073
+ "requirements": [],
2074
+ "icaoCode": "UAL"
2003
2075
  }
2004
2076
  ]
2005
2077
  },
@@ -2036,17 +2108,20 @@
2036
2108
  {
2037
2109
  "aeroflyCode": "air_canada",
2038
2110
  "name": "Air Canada",
2039
- "requirements": []
2111
+ "requirements": [],
2112
+ "icaoCode": "ACA"
2040
2113
  },
2041
2114
  {
2042
2115
  "aeroflyCode": "air_china",
2043
2116
  "name": "Air China",
2044
- "requirements": []
2117
+ "requirements": [],
2118
+ "icaoCode": "CCA"
2045
2119
  },
2046
2120
  {
2047
2121
  "aeroflyCode": "air_france",
2048
2122
  "name": "Air France",
2049
- "requirements": []
2123
+ "requirements": [],
2124
+ "icaoCode": "AFR"
2050
2125
  },
2051
2126
  {
2052
2127
  "aeroflyCode": "air_india",
@@ -2056,12 +2131,14 @@
2056
2131
  {
2057
2132
  "aeroflyCode": "british_airways",
2058
2133
  "name": "British Airways",
2059
- "requirements": []
2134
+ "requirements": [],
2135
+ "icaoCode": "BAW"
2060
2136
  },
2061
2137
  {
2062
2138
  "aeroflyCode": "cathay_pacific",
2063
2139
  "name": "Cathay Pacific",
2064
- "requirements": []
2140
+ "requirements": [],
2141
+ "icaoCode": "CPA"
2065
2142
  },
2066
2143
  {
2067
2144
  "aeroflyCode": "corsair",
@@ -2071,7 +2148,8 @@
2071
2148
  {
2072
2149
  "aeroflyCode": "delta",
2073
2150
  "name": "Delta",
2074
- "requirements": []
2151
+ "requirements": [],
2152
+ "icaoCode": "DAL"
2075
2153
  },
2076
2154
  {
2077
2155
  "aeroflyCode": "eva",
@@ -2081,12 +2159,14 @@
2081
2159
  {
2082
2160
  "aeroflyCode": "korean",
2083
2161
  "name": "Korean Air",
2084
- "requirements": []
2162
+ "requirements": [],
2163
+ "icaoCode": "KAL"
2085
2164
  },
2086
2165
  {
2087
2166
  "aeroflyCode": "lufthansa",
2088
2167
  "name": "Lufthansa",
2089
- "requirements": []
2168
+ "requirements": [],
2169
+ "icaoCode": "DLH"
2090
2170
  },
2091
2171
  {
2092
2172
  "aeroflyCode": "saudi_arabian",
@@ -2096,7 +2176,8 @@
2096
2176
  {
2097
2177
  "aeroflyCode": "united",
2098
2178
  "name": "United",
2099
- "requirements": []
2179
+ "requirements": [],
2180
+ "icaoCode": "UAL"
2100
2181
  }
2101
2182
  ]
2102
2183
  },
@@ -2283,7 +2364,8 @@
2283
2364
  {
2284
2365
  "aeroflyCode": "aeroflot",
2285
2366
  "name": "Aeroflot",
2286
- "requirements": []
2367
+ "requirements": [],
2368
+ "icaoCode": "AFL"
2287
2369
  },
2288
2370
  {
2289
2371
  "aeroflyCode": "air_austral_green",
@@ -2298,17 +2380,20 @@
2298
2380
  {
2299
2381
  "aeroflyCode": "air_canada",
2300
2382
  "name": "Air Canada",
2301
- "requirements": []
2383
+ "requirements": [],
2384
+ "icaoCode": "ACA"
2302
2385
  },
2303
2386
  {
2304
2387
  "aeroflyCode": "air_china",
2305
2388
  "name": "Air China",
2306
- "requirements": []
2389
+ "requirements": [],
2390
+ "icaoCode": "CCA"
2307
2391
  },
2308
2392
  {
2309
2393
  "aeroflyCode": "air_france",
2310
2394
  "name": "Air France",
2311
- "requirements": []
2395
+ "requirements": [],
2396
+ "icaoCode": "AFR"
2312
2397
  },
2313
2398
  {
2314
2399
  "aeroflyCode": "air_new_zealand",
@@ -2323,17 +2408,20 @@
2323
2408
  {
2324
2409
  "aeroflyCode": "alitalia",
2325
2410
  "name": "Alitalia",
2326
- "requirements": []
2411
+ "requirements": [],
2412
+ "icaoCode": "AZA"
2327
2413
  },
2328
2414
  {
2329
2415
  "aeroflyCode": "american",
2330
2416
  "name": "American Airlines",
2331
- "requirements": []
2417
+ "requirements": [],
2418
+ "icaoCode": "AAL"
2332
2419
  },
2333
2420
  {
2334
2421
  "aeroflyCode": "ana",
2335
2422
  "name": "All Nippon Airways",
2336
- "requirements": []
2423
+ "requirements": [],
2424
+ "icaoCode": "ANA"
2337
2425
  },
2338
2426
  {
2339
2427
  "aeroflyCode": "bangladesh",
@@ -2343,7 +2431,8 @@
2343
2431
  {
2344
2432
  "aeroflyCode": "cathay",
2345
2433
  "name": "Cathay Pacific",
2346
- "requirements": []
2434
+ "requirements": [],
2435
+ "icaoCode": "CPA"
2347
2436
  },
2348
2437
  {
2349
2438
  "aeroflyCode": "china_airlines",
@@ -2358,7 +2447,8 @@
2358
2447
  {
2359
2448
  "aeroflyCode": "china_southern",
2360
2449
  "name": "China Southern",
2361
- "requirements": []
2450
+ "requirements": [],
2451
+ "icaoCode": "CSN"
2362
2452
  },
2363
2453
  {
2364
2454
  "aeroflyCode": "egyptair",
@@ -2428,7 +2518,8 @@
2428
2518
  {
2429
2519
  "aeroflyCode": "klm",
2430
2520
  "name": "KLM",
2431
- "requirements": []
2521
+ "requirements": [],
2522
+ "icaoCode": "KLM"
2432
2523
  },
2433
2524
  {
2434
2525
  "aeroflyCode": "klm_orange_pride",
@@ -2438,12 +2529,14 @@
2438
2529
  {
2439
2530
  "aeroflyCode": "korean",
2440
2531
  "name": "Korean Air",
2441
- "requirements": []
2532
+ "requirements": [],
2533
+ "icaoCode": "KAL"
2442
2534
  },
2443
2535
  {
2444
2536
  "aeroflyCode": "korean_new",
2445
2537
  "name": "Korean Air",
2446
- "requirements": []
2538
+ "requirements": [],
2539
+ "icaoCode": "KAL"
2447
2540
  },
2448
2541
  {
2449
2542
  "aeroflyCode": "kuwait",
@@ -2453,7 +2546,8 @@
2453
2546
  {
2454
2547
  "aeroflyCode": "latam",
2455
2548
  "name": "LATAM",
2456
- "requirements": []
2549
+ "requirements": [],
2550
+ "icaoCode": "LAN"
2457
2551
  },
2458
2552
  {
2459
2553
  "aeroflyCode": "pakistan",
@@ -2468,7 +2562,8 @@
2468
2562
  {
2469
2563
  "aeroflyCode": "qatar",
2470
2564
  "name": "Qatar Airways",
2471
- "requirements": []
2565
+ "requirements": [],
2566
+ "icaoCode": "QTR"
2472
2567
  },
2473
2568
  {
2474
2569
  "aeroflyCode": "saudia",
@@ -2488,12 +2583,14 @@
2488
2583
  {
2489
2584
  "aeroflyCode": "swiss",
2490
2585
  "name": "Swiss",
2491
- "requirements": []
2586
+ "requirements": [],
2587
+ "icaoCode": "SWR"
2492
2588
  },
2493
2589
  {
2494
2590
  "aeroflyCode": "tam",
2495
2591
  "name": "TAM",
2496
- "requirements": []
2592
+ "requirements": [],
2593
+ "icaoCode": "TAM"
2497
2594
  },
2498
2595
  {
2499
2596
  "aeroflyCode": "thai",
@@ -2503,12 +2600,14 @@
2503
2600
  {
2504
2601
  "aeroflyCode": "turkish",
2505
2602
  "name": "Turkish Airlines",
2506
- "requirements": []
2603
+ "requirements": [],
2604
+ "icaoCode": "THY"
2507
2605
  },
2508
2606
  {
2509
2607
  "aeroflyCode": "united",
2510
2608
  "name": "United",
2511
- "requirements": []
2609
+ "requirements": [],
2610
+ "icaoCode": "UAL"
2512
2611
  },
2513
2612
  {
2514
2613
  "aeroflyCode": "virgin",
@@ -2549,7 +2648,8 @@
2549
2648
  {
2550
2649
  "aeroflyCode": "ana",
2551
2650
  "name": "All Nippon Airways",
2552
- "requirements": ["engine_rr", "engine_rr_decals"]
2651
+ "requirements": ["engine_rr", "engine_rr_decals"],
2652
+ "icaoCode": "ANA"
2553
2653
  },
2554
2654
  {
2555
2655
  "aeroflyCode": "angola",
@@ -2559,7 +2659,8 @@
2559
2659
  {
2560
2660
  "aeroflyCode": "british_airways",
2561
2661
  "name": "British Airways",
2562
- "requirements": ["engine_rr", "engine_rr_decals"]
2662
+ "requirements": ["engine_rr", "engine_rr_decals"],
2663
+ "icaoCode": "BAW"
2563
2664
  },
2564
2665
  {
2565
2666
  "aeroflyCode": "etihad",
@@ -2574,7 +2675,8 @@
2574
2675
  {
2575
2676
  "aeroflyCode": "klm",
2576
2677
  "name": "KLM",
2577
- "requirements": ["engine_ge"]
2678
+ "requirements": ["engine_ge"],
2679
+ "icaoCode": "KLM"
2578
2680
  },
2579
2681
  {
2580
2682
  "aeroflyCode": "korean_new",
@@ -2599,7 +2701,8 @@
2599
2701
  {
2600
2702
  "aeroflyCode": "united",
2601
2703
  "name": "United Airlines",
2602
- "requirements": ["engine_ge"]
2704
+ "requirements": ["engine_ge"],
2705
+ "icaoCode": "UAL"
2603
2706
  },
2604
2707
  {
2605
2708
  "aeroflyCode": "vietnam",
@@ -2645,7 +2748,8 @@
2645
2748
  {
2646
2749
  "aeroflyCode": "air_canada",
2647
2750
  "name": "Air Canada",
2648
- "requirements": ["engine_ge"]
2751
+ "requirements": ["engine_ge"],
2752
+ "icaoCode": "ACA"
2649
2753
  },
2650
2754
  {
2651
2755
  "aeroflyCode": "air_europa",
@@ -2655,7 +2759,8 @@
2655
2759
  {
2656
2760
  "aeroflyCode": "air_france",
2657
2761
  "name": "Air France",
2658
- "requirements": ["engine_ge"]
2762
+ "requirements": ["engine_ge"],
2763
+ "icaoCode": "AFR"
2659
2764
  },
2660
2765
  {
2661
2766
  "aeroflyCode": "air_new_zealand",
@@ -2670,12 +2775,14 @@
2670
2775
  {
2671
2776
  "aeroflyCode": "american",
2672
2777
  "name": "American",
2673
- "requirements": ["engine_ge"]
2778
+ "requirements": ["engine_ge"],
2779
+ "icaoCode": "AAL"
2674
2780
  },
2675
2781
  {
2676
2782
  "aeroflyCode": "ana",
2677
2783
  "name": "All Nippon Airways",
2678
- "requirements": ["engine_ge", "engine_ge_decals"]
2784
+ "requirements": ["engine_ge", "engine_ge_decals"],
2785
+ "icaoCode": "ANA"
2679
2786
  },
2680
2787
  {
2681
2788
  "aeroflyCode": "bamboo",
@@ -2685,12 +2792,14 @@
2685
2792
  {
2686
2793
  "aeroflyCode": "british_airways",
2687
2794
  "name": "British Airways",
2688
- "requirements": ["engine_rr", "engine_rr_decals"]
2795
+ "requirements": ["engine_rr", "engine_rr_decals"],
2796
+ "icaoCode": "BAW"
2689
2797
  },
2690
2798
  {
2691
2799
  "aeroflyCode": "china_southern",
2692
2800
  "name": "China Southern",
2693
- "requirements": ["engine_ge", "engine_ge_decals"]
2801
+ "requirements": ["engine_ge", "engine_ge_decals"],
2802
+ "icaoCode": "CSN"
2694
2803
  },
2695
2804
  {
2696
2805
  "aeroflyCode": "elal",
@@ -2705,7 +2814,8 @@
2705
2814
  {
2706
2815
  "aeroflyCode": "etihad",
2707
2816
  "name": "Ethiad",
2708
- "requirements": ["engine_ge"]
2817
+ "requirements": ["engine_ge"],
2818
+ "icaoCode": "ETD"
2709
2819
  },
2710
2820
  {
2711
2821
  "aeroflyCode": "hainan",
@@ -2725,7 +2835,8 @@
2725
2835
  {
2726
2836
  "aeroflyCode": "klm",
2727
2837
  "name": "KLM",
2728
- "requirements": ["engine_ge"]
2838
+ "requirements": ["engine_ge"],
2839
+ "icaoCode": "KLM"
2729
2840
  },
2730
2841
  {
2731
2842
  "aeroflyCode": "korean_new",
@@ -2735,7 +2846,8 @@
2735
2846
  {
2736
2847
  "aeroflyCode": "latam",
2737
2848
  "name": "Latam",
2738
- "requirements": ["engine_rr", "engine_rr_decals"]
2849
+ "requirements": ["engine_rr", "engine_rr_decals"],
2850
+ "icaoCode": "LAN"
2739
2851
  },
2740
2852
  {
2741
2853
  "aeroflyCode": "lot",
@@ -2745,7 +2857,8 @@
2745
2857
  {
2746
2858
  "aeroflyCode": "lufthansa",
2747
2859
  "name": "Lufthansa",
2748
- "requirements": ["engine_ge"]
2860
+ "requirements": ["engine_ge"],
2861
+ "icaoCode": "DLH"
2749
2862
  },
2750
2863
  {
2751
2864
  "aeroflyCode": "lufthansa_100",
@@ -2805,12 +2918,14 @@
2805
2918
  {
2806
2919
  "aeroflyCode": "turkish",
2807
2920
  "name": "Turkish Airlines",
2808
- "requirements": ["engine_ge"]
2921
+ "requirements": ["engine_ge"],
2922
+ "icaoCode": "THY"
2809
2923
  },
2810
2924
  {
2811
2925
  "aeroflyCode": "united",
2812
2926
  "name": "United Airlines",
2813
- "requirements": ["engine_ge"]
2927
+ "requirements": ["engine_ge"],
2928
+ "icaoCode": "UAL"
2814
2929
  },
2815
2930
  {
2816
2931
  "aeroflyCode": "vietnam",
@@ -3032,12 +3147,14 @@
3032
3147
  {
3033
3148
  "aeroflyCode": "air_canada",
3034
3149
  "name": "Air Canada",
3035
- "requirements": []
3150
+ "requirements": [],
3151
+ "icaoCode": "ACA"
3036
3152
  },
3037
3153
  {
3038
3154
  "aeroflyCode": "american",
3039
3155
  "name": "American Airlines",
3040
- "requirements": []
3156
+ "requirements": [],
3157
+ "icaoCode": "AAL"
3041
3158
  },
3042
3159
  {
3043
3160
  "aeroflyCode": "delta",
@@ -3047,12 +3164,14 @@
3047
3164
  {
3048
3165
  "aeroflyCode": "iberia",
3049
3166
  "name": "Iberia",
3050
- "requirements": []
3167
+ "requirements": [],
3168
+ "icaoCode": "IBE"
3051
3169
  },
3052
3170
  {
3053
3171
  "aeroflyCode": "lufthansa",
3054
3172
  "name": "Lufthansa",
3055
- "requirements": []
3173
+ "requirements": [],
3174
+ "icaoCode": "DLH"
3056
3175
  },
3057
3176
  {
3058
3177
  "aeroflyCode": "nordica",
@@ -3186,7 +3305,7 @@
3186
3305
  },
3187
3306
  {
3188
3307
  "aeroflyCode": "red",
3189
- "name": " Red ",
3308
+ "name": "Red",
3190
3309
  "requirements": []
3191
3310
  }
3192
3311
  ]
@@ -3639,7 +3758,8 @@
3639
3758
  {
3640
3759
  "aeroflyCode": "air_canada",
3641
3760
  "name": "Air Canada",
3642
- "requirements": []
3761
+ "requirements": [],
3762
+ "icaoCode": "ACA"
3643
3763
  },
3644
3764
  {
3645
3765
  "aeroflyCode": "air_tanzania",
@@ -3,6 +3,7 @@ export type AeroflyAircraftLivery = {
3
3
  aeroflyCode: string;
4
4
  name: string;
5
5
  requirements: string[];
6
+ icaoCode?: string;
6
7
  };
7
8
 
8
9
  export type AeroflyAircraft = {
package/get-airports.js CHANGED
@@ -135,7 +135,7 @@ process.stdout.write(`GeoJSON data written to \x1b[92m${outputFilePath}\x1b[0m\n
135
135
 
136
136
  // Write the ICAO codes to airport-list.json
137
137
  const icaoListFilePath = path.join(outputDirectory, "airport-list.json");
138
- fs.writeFileSync(icaoListFilePath, JSON.stringify(icaoCodes.sort(), null, 2), "utf-8");
138
+ fs.writeFileSync(icaoListFilePath, JSON.stringify(icaoCodes.sort(), null, 2) + "\n", "utf-8");
139
139
  process.stdout.write(`ICAO code list written to \x1b[92m${icaoListFilePath}\x1b[0m\n`);
140
140
 
141
141
  // Write the ICAO codes with aiport names and geocoordinates to airport-coordinates.json
@@ -148,7 +148,7 @@ const icaoCoordinates = aeroflyGeoJson.features.map((feature) => {
148
148
  ];
149
149
  });
150
150
  const icaoCoordinatesFilePath = path.join(outputDirectory, "airport-coordinates.json");
151
- fs.writeFileSync(icaoCoordinatesFilePath, JSON.stringify(icaoCoordinates, null, 2), "utf-8");
151
+ fs.writeFileSync(icaoCoordinatesFilePath, JSON.stringify(icaoCoordinates, null, 2) + "\n", "utf-8");
152
152
  process.stdout.write(`ICAO coordinates list written to \x1b[92m${icaoCoordinatesFilePath}\x1b[0m\n`);
153
153
 
154
154
  // Write the missing codes to airports-unmatched.md
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fboes/aerofly-data",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "This project contains data sets for airports and aircraft present in Aerofly FS 4.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -13,6 +13,28 @@
13
13
  "type": "module",
14
14
  "author": "Frank Boës <info@3960.org> (https://3960.org/)",
15
15
  "license": "MIT",
16
+ "exports": {
17
+ "./data/aircraft-liveries.json": {
18
+ "default": "./data/aircraft-liveries.json",
19
+ "types": "./data/aircraft-liveries.json.d.ts"
20
+ },
21
+ "./data/aircraft.json": {
22
+ "default": "./data/aircraft.json",
23
+ "types": "./data/aircraft.json.d.ts"
24
+ },
25
+ "./data/airport-coordinates.json": {
26
+ "default": "./data/airport-coordinates.json",
27
+ "types": "./data/airport-coordinates.json.d.ts"
28
+ },
29
+ "./data/airport-list.json": {
30
+ "default": "./data/airport-list.json",
31
+ "types": "./data/airport-list.json.d.ts"
32
+ },
33
+ "./data/airports.json": {
34
+ "default": "./data/airports.json",
35
+ "types": "./data/airports.json.d.ts"
36
+ }
37
+ },
16
38
  "dependencies": {
17
39
  "@fboes/geojson": "^1.0.0",
18
40
  "csv-parse": "^5.5.3"
@@ -26,6 +26,7 @@ import * as path from "path";
26
26
  * aeroflyCode: string,
27
27
  * name: string,
28
28
  * requirements: string[],
29
+ * icaoCode?: string,
29
30
  * }[],
30
31
  * }}
31
32
  */
@@ -57,7 +58,7 @@ export const getAeroflyAircraft = (directory) => {
57
58
  const liveries = [
58
59
  {
59
60
  aeroflyCode: "default",
60
- name: parseTmdLine(tmdOptionFileContent, "Description"),
61
+ name: parseTmdLine(tmdOptionFileContent, "Description").trim(),
61
62
  requirements: parseRequirements(tmdOptionFileContent),
62
63
  },
63
64
  ...fs
@@ -70,11 +71,26 @@ export const getAeroflyAircraft = (directory) => {
70
71
  .map((dirent) => {
71
72
  const tmdFileContent = fs.readFileSync(path.join(dirent.parentPath, dirent.name, "option.tmc"), "utf8");
72
73
 
73
- return {
74
+ /**
75
+ * @type {{
76
+ * aeroflyCode: string,
77
+ * name: string,
78
+ * requirements: string[],
79
+ * icaoCode?: string,
80
+ * }}
81
+ */
82
+ const livery = {
74
83
  aeroflyCode: dirent.name,
75
- name: parseTmdLine(tmdFileContent, "Description"),
84
+ name: parseTmdLine(tmdFileContent, "Description").trim(),
76
85
  requirements: parseRequirements(tmdFileContent),
77
86
  };
87
+
88
+ const liveryIcaoCode = getLiveryIcaoCode(livery.name);
89
+ if (liveryIcaoCode !== "") {
90
+ livery.icaoCode = liveryIcaoCode;
91
+ }
92
+
93
+ return livery;
78
94
  }),
79
95
  ];
80
96
 
@@ -86,6 +102,95 @@ export const getAeroflyAircraft = (directory) => {
86
102
  });
87
103
  };
88
104
 
105
+ /**
106
+ * Convert airline name to airline ICA code
107
+ * @param {string} airlineName
108
+ * @returns {string} icaoCode of airline
109
+ */
110
+ const getLiveryIcaoCode = (airlineName) => {
111
+ const name = airlineName.toLowerCase();
112
+ switch (name) {
113
+ case "american airlines":
114
+ case "american":
115
+ return "AAL";
116
+ case "all nippon airways":
117
+ return "ANA";
118
+ case "american airlines":
119
+ return "AAL";
120
+ case "lufthansa":
121
+ return "DLH";
122
+ case "united airlines":
123
+ case "united":
124
+ return "UAL";
125
+ case "delta air lines":
126
+ case "delta":
127
+ return "DAL";
128
+ case "air france":
129
+ return "AFR";
130
+ case "british airways":
131
+ return "BAW";
132
+ case "china southern airlines":
133
+ return "CSN";
134
+ case "turkish airlines":
135
+ return "THY";
136
+ case "air canada":
137
+ return "ACA";
138
+ case "etihad airways":
139
+ case "ethiad":
140
+ return "ETD";
141
+ case "latam airlines":
142
+ case "latam":
143
+ return "LAN";
144
+ case "tam airlines":
145
+ case "tam":
146
+ return "TAM";
147
+ case "jetblue airways":
148
+ case "jetblue":
149
+ return "JBU";
150
+ case "azul brazilian airlines":
151
+ return "AZU";
152
+ case "china eastern airlines":
153
+ return "CES";
154
+ case "ethiopian airlines":
155
+ return "ETH";
156
+ case "klm royal dutch airlines":
157
+ case "klm":
158
+ return "KLM";
159
+ case "korean air":
160
+ case "korean air lines":
161
+ return "KAL";
162
+ case "qatar airways":
163
+ return "QTR";
164
+ case "swiss international air lines":
165
+ case "swiss":
166
+ return "SWR";
167
+ case "hawaiian airlines":
168
+ return "HVN";
169
+ case "eurowings":
170
+ return "EWG";
171
+ case "easyjet":
172
+ return "EZY";
173
+ case "iberia":
174
+ return "IBE";
175
+ case "sas":
176
+ return "SAS";
177
+ case "aeroflot":
178
+ return "AFL";
179
+ case "air china":
180
+ return "CCA";
181
+ case "alitalia":
182
+ return "AZA";
183
+ case "brussels airlines":
184
+ return "BEL";
185
+ case "cathay pacific":
186
+ return "CPA";
187
+ case "china southern":
188
+ return "CSN";
189
+ default:
190
+ return "";
191
+ }
192
+ };
193
+
89
194
  /**
90
195
  * @param {string} tmdFileContent
91
196
  * @returns {AeroflyAircraftParsed}