@airframes/acars-decoder 1.9.1 → 1.9.3
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/dist/bin/acars-decoder-test.d.mts +1 -0
- package/dist/bin/acars-decoder-test.d.ts +1 -0
- package/dist/bin/acars-decoder-test.js +6969 -0
- package/dist/bin/acars-decoder-test.js.map +1 -0
- package/dist/bin/acars-decoder-test.mjs +6946 -0
- package/dist/bin/acars-decoder-test.mjs.map +1 -0
- package/dist/bin/acars-decoder.d.mts +1 -0
- package/dist/bin/acars-decoder.d.ts +1 -0
- package/dist/bin/acars-decoder.js +6905 -0
- package/dist/bin/acars-decoder.js.map +1 -0
- package/dist/bin/acars-decoder.mjs +6882 -0
- package/dist/bin/acars-decoder.mjs.map +1 -0
- package/dist/index.js +106 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +106 -11
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -172,7 +172,9 @@ var DateTimeUtils = class {
|
|
|
172
172
|
const hours = +timeString.substr(0, 2);
|
|
173
173
|
const minutes = +timeString.substr(2, 2);
|
|
174
174
|
const seconds = timeString.length === 6 ? +timeString.substr(4, 2) : 0;
|
|
175
|
-
const utcDate = new Date(
|
|
175
|
+
const utcDate = new Date(
|
|
176
|
+
Date.UTC(year, month, day, hours, minutes, seconds)
|
|
177
|
+
);
|
|
176
178
|
return utcDate.toUTCString();
|
|
177
179
|
}
|
|
178
180
|
/**
|
|
@@ -222,12 +224,16 @@ var DateTimeUtils = class {
|
|
|
222
224
|
* @returns
|
|
223
225
|
*/
|
|
224
226
|
static timestampToString(time) {
|
|
227
|
+
if (isNaN(time)) {
|
|
228
|
+
return "";
|
|
229
|
+
}
|
|
225
230
|
const date = new Date(time * 1e3);
|
|
226
231
|
if (time < 86400) {
|
|
227
232
|
return date.toISOString().slice(11, 19);
|
|
228
233
|
}
|
|
229
|
-
if (time <
|
|
230
|
-
|
|
234
|
+
if (time < 32 * 86400) {
|
|
235
|
+
const day = String(Math.floor(time / 86400)).padStart(2, "0");
|
|
236
|
+
return `YYYY-MM-${day}T${date.toISOString().slice(11, 19)}`;
|
|
231
237
|
}
|
|
232
238
|
return date.toISOString().slice(0, -5) + "Z";
|
|
233
239
|
}
|
|
@@ -469,6 +475,9 @@ var ResultFormatter = class {
|
|
|
469
475
|
});
|
|
470
476
|
}
|
|
471
477
|
static eta(decodeResult, time) {
|
|
478
|
+
if (isNaN(time)) {
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
472
481
|
decodeResult.raw.eta_time = time;
|
|
473
482
|
decodeResult.formatted.items.push({
|
|
474
483
|
type: "time",
|
|
@@ -580,6 +589,9 @@ var ResultFormatter = class {
|
|
|
580
589
|
});
|
|
581
590
|
}
|
|
582
591
|
static groundspeed(decodeResult, value) {
|
|
592
|
+
if (isNaN(value)) {
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
583
595
|
decodeResult.raw.groundspeed = value;
|
|
584
596
|
decodeResult.formatted.items.push({
|
|
585
597
|
type: "aircraft_groundspeed",
|
|
@@ -589,6 +601,9 @@ var ResultFormatter = class {
|
|
|
589
601
|
});
|
|
590
602
|
}
|
|
591
603
|
static airspeed(decodeResult, value) {
|
|
604
|
+
if (isNaN(value)) {
|
|
605
|
+
return;
|
|
606
|
+
}
|
|
592
607
|
decodeResult.raw.airspeed = value;
|
|
593
608
|
decodeResult.formatted.items.push({
|
|
594
609
|
type: "airspeed",
|
|
@@ -598,6 +613,9 @@ var ResultFormatter = class {
|
|
|
598
613
|
});
|
|
599
614
|
}
|
|
600
615
|
static mach(decodeResult, value) {
|
|
616
|
+
if (isNaN(value)) {
|
|
617
|
+
return;
|
|
618
|
+
}
|
|
601
619
|
decodeResult.raw.mach = value;
|
|
602
620
|
decodeResult.formatted.items.push({
|
|
603
621
|
type: "mach",
|
|
@@ -635,6 +653,9 @@ var ResultFormatter = class {
|
|
|
635
653
|
});
|
|
636
654
|
}
|
|
637
655
|
static heading(decodeResult, value) {
|
|
656
|
+
if (isNaN(value)) {
|
|
657
|
+
return;
|
|
658
|
+
}
|
|
638
659
|
decodeResult.raw.heading = value;
|
|
639
660
|
decodeResult.formatted.items.push({
|
|
640
661
|
type: "heading",
|
|
@@ -653,6 +674,9 @@ var ResultFormatter = class {
|
|
|
653
674
|
});
|
|
654
675
|
}
|
|
655
676
|
static out(decodeResult, time) {
|
|
677
|
+
if (isNaN(time)) {
|
|
678
|
+
return;
|
|
679
|
+
}
|
|
656
680
|
decodeResult.raw.out_time = time;
|
|
657
681
|
decodeResult.formatted.items.push({
|
|
658
682
|
type: "time",
|
|
@@ -662,6 +686,9 @@ var ResultFormatter = class {
|
|
|
662
686
|
});
|
|
663
687
|
}
|
|
664
688
|
static off(decodeResult, time) {
|
|
689
|
+
if (isNaN(time)) {
|
|
690
|
+
return;
|
|
691
|
+
}
|
|
665
692
|
decodeResult.raw.off_time = time;
|
|
666
693
|
decodeResult.formatted.items.push({
|
|
667
694
|
type: "time",
|
|
@@ -671,6 +698,9 @@ var ResultFormatter = class {
|
|
|
671
698
|
});
|
|
672
699
|
}
|
|
673
700
|
static on(decodeResult, time) {
|
|
701
|
+
if (isNaN(time)) {
|
|
702
|
+
return;
|
|
703
|
+
}
|
|
674
704
|
decodeResult.raw.on_time = time;
|
|
675
705
|
decodeResult.formatted.items.push({
|
|
676
706
|
type: "time",
|
|
@@ -680,6 +710,9 @@ var ResultFormatter = class {
|
|
|
680
710
|
});
|
|
681
711
|
}
|
|
682
712
|
static in(decodeResult, time) {
|
|
713
|
+
if (isNaN(time)) {
|
|
714
|
+
return;
|
|
715
|
+
}
|
|
683
716
|
decodeResult.raw.in_time = time;
|
|
684
717
|
decodeResult.formatted.items.push({
|
|
685
718
|
type: "time",
|
|
@@ -689,6 +722,9 @@ var ResultFormatter = class {
|
|
|
689
722
|
});
|
|
690
723
|
}
|
|
691
724
|
static engineStart(decodeResult, time) {
|
|
725
|
+
if (isNaN(time)) {
|
|
726
|
+
return;
|
|
727
|
+
}
|
|
692
728
|
decodeResult.raw.engine_start_time = time;
|
|
693
729
|
decodeResult.formatted.items.push({
|
|
694
730
|
type: "time",
|
|
@@ -698,6 +734,9 @@ var ResultFormatter = class {
|
|
|
698
734
|
});
|
|
699
735
|
}
|
|
700
736
|
static engineStop(decodeResult, time) {
|
|
737
|
+
if (isNaN(time)) {
|
|
738
|
+
return;
|
|
739
|
+
}
|
|
701
740
|
decodeResult.raw.engine_stop_time = time;
|
|
702
741
|
decodeResult.formatted.items.push({
|
|
703
742
|
type: "time",
|
|
@@ -707,6 +746,9 @@ var ResultFormatter = class {
|
|
|
707
746
|
});
|
|
708
747
|
}
|
|
709
748
|
static day(decodeResult, day) {
|
|
749
|
+
if (isNaN(day)) {
|
|
750
|
+
return;
|
|
751
|
+
}
|
|
710
752
|
decodeResult.raw.day = day;
|
|
711
753
|
decodeResult.formatted.items.push({
|
|
712
754
|
type: "day",
|
|
@@ -716,6 +758,9 @@ var ResultFormatter = class {
|
|
|
716
758
|
});
|
|
717
759
|
}
|
|
718
760
|
static month(decodeResult, month) {
|
|
761
|
+
if (isNaN(month)) {
|
|
762
|
+
return;
|
|
763
|
+
}
|
|
719
764
|
decodeResult.raw.month = month;
|
|
720
765
|
decodeResult.formatted.items.push({
|
|
721
766
|
type: "month",
|
|
@@ -725,6 +770,9 @@ var ResultFormatter = class {
|
|
|
725
770
|
});
|
|
726
771
|
}
|
|
727
772
|
static departureDay(decodeResult, day) {
|
|
773
|
+
if (isNaN(day)) {
|
|
774
|
+
return;
|
|
775
|
+
}
|
|
728
776
|
decodeResult.raw.departure_day = day;
|
|
729
777
|
decodeResult.formatted.items.push({
|
|
730
778
|
type: "day",
|
|
@@ -734,6 +782,9 @@ var ResultFormatter = class {
|
|
|
734
782
|
});
|
|
735
783
|
}
|
|
736
784
|
static arrivalDay(decodeResult, day) {
|
|
785
|
+
if (isNaN(day)) {
|
|
786
|
+
return;
|
|
787
|
+
}
|
|
737
788
|
decodeResult.raw.arrival_day = day;
|
|
738
789
|
decodeResult.formatted.items.push({
|
|
739
790
|
type: "day",
|
|
@@ -897,6 +948,9 @@ var ResultFormatter = class {
|
|
|
897
948
|
});
|
|
898
949
|
}
|
|
899
950
|
static timestamp(decodeResult, value) {
|
|
951
|
+
if (isNaN(value)) {
|
|
952
|
+
return;
|
|
953
|
+
}
|
|
900
954
|
decodeResult.raw.message_timestamp = value;
|
|
901
955
|
decodeResult.formatted.items.push({
|
|
902
956
|
type: "time",
|
|
@@ -1025,6 +1079,43 @@ var DecoderPlugin = class {
|
|
|
1025
1079
|
}
|
|
1026
1080
|
};
|
|
1027
1081
|
|
|
1082
|
+
// lib/plugins/Lib_ACARS.ts
|
|
1083
|
+
var LibAcars = class extends DecoderPlugin {
|
|
1084
|
+
name = "libacars";
|
|
1085
|
+
qualifiers() {
|
|
1086
|
+
return {
|
|
1087
|
+
labels: ["*"],
|
|
1088
|
+
preambles: ["- #"]
|
|
1089
|
+
};
|
|
1090
|
+
}
|
|
1091
|
+
decode(message, options = {}) {
|
|
1092
|
+
const text = message.text;
|
|
1093
|
+
const prefix = message.text.slice(0, 5);
|
|
1094
|
+
const decoded = this.decoder.decode(
|
|
1095
|
+
{
|
|
1096
|
+
label: message.label,
|
|
1097
|
+
sublabel: message.sublabel,
|
|
1098
|
+
text: text.replaceAll(prefix, "")
|
|
1099
|
+
// Remove the prefix before decoding
|
|
1100
|
+
},
|
|
1101
|
+
options
|
|
1102
|
+
);
|
|
1103
|
+
const decodeResult = this.defaultResult();
|
|
1104
|
+
decodeResult.decoder.name = this.name;
|
|
1105
|
+
decodeResult.message = message;
|
|
1106
|
+
if (decoded.decoded) {
|
|
1107
|
+
decodeResult.decoded = true;
|
|
1108
|
+
decodeResult.decoder.decodeLevel = decoded.decoder.decodeLevel;
|
|
1109
|
+
decodeResult.decoder.name = this.name + "-" + decoded.decoder.name;
|
|
1110
|
+
decodeResult.raw = { ...decodeResult.raw, ...decoded.raw };
|
|
1111
|
+
decodeResult.formatted.description = decoded.formatted.description;
|
|
1112
|
+
decodeResult.formatted.items.push(...decoded.formatted.items);
|
|
1113
|
+
decodeResult.remaining = decoded.remaining;
|
|
1114
|
+
}
|
|
1115
|
+
return decodeResult;
|
|
1116
|
+
}
|
|
1117
|
+
};
|
|
1118
|
+
|
|
1028
1119
|
// lib/plugins/CBand.ts
|
|
1029
1120
|
var CBAND_HEADER = /^(?<msgno>[A-Z]\d{2}[A-Z])(?<airline>[A-Z0-9]{2})(?<number>[0-9]{4})/;
|
|
1030
1121
|
var CBand = class extends DecoderPlugin {
|
|
@@ -1865,7 +1956,7 @@ var Arinc702 = class extends DecoderPlugin {
|
|
|
1865
1956
|
}
|
|
1866
1957
|
const hashParts = msg.split("#");
|
|
1867
1958
|
if (hashParts.length == 2) {
|
|
1868
|
-
const offset =
|
|
1959
|
+
const offset = isNaN(parseInt(hashParts[1][1])) ? 3 : 4;
|
|
1869
1960
|
decoded = Arinc702Helper.decodeH1Message(
|
|
1870
1961
|
decodeResult,
|
|
1871
1962
|
msg.slice(hashParts[0].length + offset)
|
|
@@ -4027,8 +4118,13 @@ var Label_4A_DIS = class extends DecoderPlugin {
|
|
|
4027
4118
|
}
|
|
4028
4119
|
decode(message, options = {}) {
|
|
4029
4120
|
const decodeResult = this.initResult(message, "Latest New Format");
|
|
4030
|
-
decodeResult.decoded = true;
|
|
4031
4121
|
const fields = message.text.split(",");
|
|
4122
|
+
if (fields.length < 3 || !fields[1] || fields[1].length < 3 || !fields[2]) {
|
|
4123
|
+
decodeResult.decoded = false;
|
|
4124
|
+
this.setDecodeLevel(decodeResult, decodeResult.decoded);
|
|
4125
|
+
return decodeResult;
|
|
4126
|
+
}
|
|
4127
|
+
decodeResult.decoded = true;
|
|
4032
4128
|
ResultFormatter.timestamp(
|
|
4033
4129
|
decodeResult,
|
|
4034
4130
|
DateTimeUtils.convertHHMMSSToTod(fields[1].substring(2) + "00")
|
|
@@ -6654,13 +6750,11 @@ var Label_QQ = class extends DecoderPlugin {
|
|
|
6654
6750
|
};
|
|
6655
6751
|
ResultFormatter.unknown(decodeResult, message.text.substring(42, 45));
|
|
6656
6752
|
ResultFormatter.position(decodeResult, pos);
|
|
6657
|
-
|
|
6658
|
-
|
|
6659
|
-
|
|
6660
|
-
Number(message.text.substring(45, 48))
|
|
6661
|
-
);
|
|
6753
|
+
const gsField = message.text.substring(45, 48);
|
|
6754
|
+
if (decodeResult.remaining.text !== "---" && gsField !== "---") {
|
|
6755
|
+
ResultFormatter.groundspeed(decodeResult, Number(gsField));
|
|
6662
6756
|
} else {
|
|
6663
|
-
ResultFormatter.unknown(decodeResult,
|
|
6757
|
+
ResultFormatter.unknown(decodeResult, gsField);
|
|
6664
6758
|
}
|
|
6665
6759
|
ResultFormatter.unknown(decodeResult, message.text.substring(48));
|
|
6666
6760
|
} else {
|
|
@@ -6680,6 +6774,7 @@ var Label_QQ = class extends DecoderPlugin {
|
|
|
6680
6774
|
// lib/MessageDecoder.ts
|
|
6681
6775
|
var pluginClasses = [
|
|
6682
6776
|
CBand,
|
|
6777
|
+
LibAcars,
|
|
6683
6778
|
Arinc702,
|
|
6684
6779
|
Label_ColonComma,
|
|
6685
6780
|
Label_5Z_Slash,
|