@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.js
CHANGED
|
@@ -209,7 +209,9 @@ var DateTimeUtils = class {
|
|
|
209
209
|
const hours = +timeString.substr(0, 2);
|
|
210
210
|
const minutes = +timeString.substr(2, 2);
|
|
211
211
|
const seconds = timeString.length === 6 ? +timeString.substr(4, 2) : 0;
|
|
212
|
-
const utcDate = new Date(
|
|
212
|
+
const utcDate = new Date(
|
|
213
|
+
Date.UTC(year, month, day, hours, minutes, seconds)
|
|
214
|
+
);
|
|
213
215
|
return utcDate.toUTCString();
|
|
214
216
|
}
|
|
215
217
|
/**
|
|
@@ -259,12 +261,16 @@ var DateTimeUtils = class {
|
|
|
259
261
|
* @returns
|
|
260
262
|
*/
|
|
261
263
|
static timestampToString(time) {
|
|
264
|
+
if (isNaN(time)) {
|
|
265
|
+
return "";
|
|
266
|
+
}
|
|
262
267
|
const date = new Date(time * 1e3);
|
|
263
268
|
if (time < 86400) {
|
|
264
269
|
return date.toISOString().slice(11, 19);
|
|
265
270
|
}
|
|
266
|
-
if (time <
|
|
267
|
-
|
|
271
|
+
if (time < 32 * 86400) {
|
|
272
|
+
const day = String(Math.floor(time / 86400)).padStart(2, "0");
|
|
273
|
+
return `YYYY-MM-${day}T${date.toISOString().slice(11, 19)}`;
|
|
268
274
|
}
|
|
269
275
|
return date.toISOString().slice(0, -5) + "Z";
|
|
270
276
|
}
|
|
@@ -506,6 +512,9 @@ var ResultFormatter = class {
|
|
|
506
512
|
});
|
|
507
513
|
}
|
|
508
514
|
static eta(decodeResult, time) {
|
|
515
|
+
if (isNaN(time)) {
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
509
518
|
decodeResult.raw.eta_time = time;
|
|
510
519
|
decodeResult.formatted.items.push({
|
|
511
520
|
type: "time",
|
|
@@ -617,6 +626,9 @@ var ResultFormatter = class {
|
|
|
617
626
|
});
|
|
618
627
|
}
|
|
619
628
|
static groundspeed(decodeResult, value) {
|
|
629
|
+
if (isNaN(value)) {
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
620
632
|
decodeResult.raw.groundspeed = value;
|
|
621
633
|
decodeResult.formatted.items.push({
|
|
622
634
|
type: "aircraft_groundspeed",
|
|
@@ -626,6 +638,9 @@ var ResultFormatter = class {
|
|
|
626
638
|
});
|
|
627
639
|
}
|
|
628
640
|
static airspeed(decodeResult, value) {
|
|
641
|
+
if (isNaN(value)) {
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
629
644
|
decodeResult.raw.airspeed = value;
|
|
630
645
|
decodeResult.formatted.items.push({
|
|
631
646
|
type: "airspeed",
|
|
@@ -635,6 +650,9 @@ var ResultFormatter = class {
|
|
|
635
650
|
});
|
|
636
651
|
}
|
|
637
652
|
static mach(decodeResult, value) {
|
|
653
|
+
if (isNaN(value)) {
|
|
654
|
+
return;
|
|
655
|
+
}
|
|
638
656
|
decodeResult.raw.mach = value;
|
|
639
657
|
decodeResult.formatted.items.push({
|
|
640
658
|
type: "mach",
|
|
@@ -672,6 +690,9 @@ var ResultFormatter = class {
|
|
|
672
690
|
});
|
|
673
691
|
}
|
|
674
692
|
static heading(decodeResult, value) {
|
|
693
|
+
if (isNaN(value)) {
|
|
694
|
+
return;
|
|
695
|
+
}
|
|
675
696
|
decodeResult.raw.heading = value;
|
|
676
697
|
decodeResult.formatted.items.push({
|
|
677
698
|
type: "heading",
|
|
@@ -690,6 +711,9 @@ var ResultFormatter = class {
|
|
|
690
711
|
});
|
|
691
712
|
}
|
|
692
713
|
static out(decodeResult, time) {
|
|
714
|
+
if (isNaN(time)) {
|
|
715
|
+
return;
|
|
716
|
+
}
|
|
693
717
|
decodeResult.raw.out_time = time;
|
|
694
718
|
decodeResult.formatted.items.push({
|
|
695
719
|
type: "time",
|
|
@@ -699,6 +723,9 @@ var ResultFormatter = class {
|
|
|
699
723
|
});
|
|
700
724
|
}
|
|
701
725
|
static off(decodeResult, time) {
|
|
726
|
+
if (isNaN(time)) {
|
|
727
|
+
return;
|
|
728
|
+
}
|
|
702
729
|
decodeResult.raw.off_time = time;
|
|
703
730
|
decodeResult.formatted.items.push({
|
|
704
731
|
type: "time",
|
|
@@ -708,6 +735,9 @@ var ResultFormatter = class {
|
|
|
708
735
|
});
|
|
709
736
|
}
|
|
710
737
|
static on(decodeResult, time) {
|
|
738
|
+
if (isNaN(time)) {
|
|
739
|
+
return;
|
|
740
|
+
}
|
|
711
741
|
decodeResult.raw.on_time = time;
|
|
712
742
|
decodeResult.formatted.items.push({
|
|
713
743
|
type: "time",
|
|
@@ -717,6 +747,9 @@ var ResultFormatter = class {
|
|
|
717
747
|
});
|
|
718
748
|
}
|
|
719
749
|
static in(decodeResult, time) {
|
|
750
|
+
if (isNaN(time)) {
|
|
751
|
+
return;
|
|
752
|
+
}
|
|
720
753
|
decodeResult.raw.in_time = time;
|
|
721
754
|
decodeResult.formatted.items.push({
|
|
722
755
|
type: "time",
|
|
@@ -726,6 +759,9 @@ var ResultFormatter = class {
|
|
|
726
759
|
});
|
|
727
760
|
}
|
|
728
761
|
static engineStart(decodeResult, time) {
|
|
762
|
+
if (isNaN(time)) {
|
|
763
|
+
return;
|
|
764
|
+
}
|
|
729
765
|
decodeResult.raw.engine_start_time = time;
|
|
730
766
|
decodeResult.formatted.items.push({
|
|
731
767
|
type: "time",
|
|
@@ -735,6 +771,9 @@ var ResultFormatter = class {
|
|
|
735
771
|
});
|
|
736
772
|
}
|
|
737
773
|
static engineStop(decodeResult, time) {
|
|
774
|
+
if (isNaN(time)) {
|
|
775
|
+
return;
|
|
776
|
+
}
|
|
738
777
|
decodeResult.raw.engine_stop_time = time;
|
|
739
778
|
decodeResult.formatted.items.push({
|
|
740
779
|
type: "time",
|
|
@@ -744,6 +783,9 @@ var ResultFormatter = class {
|
|
|
744
783
|
});
|
|
745
784
|
}
|
|
746
785
|
static day(decodeResult, day) {
|
|
786
|
+
if (isNaN(day)) {
|
|
787
|
+
return;
|
|
788
|
+
}
|
|
747
789
|
decodeResult.raw.day = day;
|
|
748
790
|
decodeResult.formatted.items.push({
|
|
749
791
|
type: "day",
|
|
@@ -753,6 +795,9 @@ var ResultFormatter = class {
|
|
|
753
795
|
});
|
|
754
796
|
}
|
|
755
797
|
static month(decodeResult, month) {
|
|
798
|
+
if (isNaN(month)) {
|
|
799
|
+
return;
|
|
800
|
+
}
|
|
756
801
|
decodeResult.raw.month = month;
|
|
757
802
|
decodeResult.formatted.items.push({
|
|
758
803
|
type: "month",
|
|
@@ -762,6 +807,9 @@ var ResultFormatter = class {
|
|
|
762
807
|
});
|
|
763
808
|
}
|
|
764
809
|
static departureDay(decodeResult, day) {
|
|
810
|
+
if (isNaN(day)) {
|
|
811
|
+
return;
|
|
812
|
+
}
|
|
765
813
|
decodeResult.raw.departure_day = day;
|
|
766
814
|
decodeResult.formatted.items.push({
|
|
767
815
|
type: "day",
|
|
@@ -771,6 +819,9 @@ var ResultFormatter = class {
|
|
|
771
819
|
});
|
|
772
820
|
}
|
|
773
821
|
static arrivalDay(decodeResult, day) {
|
|
822
|
+
if (isNaN(day)) {
|
|
823
|
+
return;
|
|
824
|
+
}
|
|
774
825
|
decodeResult.raw.arrival_day = day;
|
|
775
826
|
decodeResult.formatted.items.push({
|
|
776
827
|
type: "day",
|
|
@@ -934,6 +985,9 @@ var ResultFormatter = class {
|
|
|
934
985
|
});
|
|
935
986
|
}
|
|
936
987
|
static timestamp(decodeResult, value) {
|
|
988
|
+
if (isNaN(value)) {
|
|
989
|
+
return;
|
|
990
|
+
}
|
|
937
991
|
decodeResult.raw.message_timestamp = value;
|
|
938
992
|
decodeResult.formatted.items.push({
|
|
939
993
|
type: "time",
|
|
@@ -1062,6 +1116,43 @@ var DecoderPlugin = class {
|
|
|
1062
1116
|
}
|
|
1063
1117
|
};
|
|
1064
1118
|
|
|
1119
|
+
// lib/plugins/Lib_ACARS.ts
|
|
1120
|
+
var LibAcars = class extends DecoderPlugin {
|
|
1121
|
+
name = "libacars";
|
|
1122
|
+
qualifiers() {
|
|
1123
|
+
return {
|
|
1124
|
+
labels: ["*"],
|
|
1125
|
+
preambles: ["- #"]
|
|
1126
|
+
};
|
|
1127
|
+
}
|
|
1128
|
+
decode(message, options = {}) {
|
|
1129
|
+
const text = message.text;
|
|
1130
|
+
const prefix = message.text.slice(0, 5);
|
|
1131
|
+
const decoded = this.decoder.decode(
|
|
1132
|
+
{
|
|
1133
|
+
label: message.label,
|
|
1134
|
+
sublabel: message.sublabel,
|
|
1135
|
+
text: text.replaceAll(prefix, "")
|
|
1136
|
+
// Remove the prefix before decoding
|
|
1137
|
+
},
|
|
1138
|
+
options
|
|
1139
|
+
);
|
|
1140
|
+
const decodeResult = this.defaultResult();
|
|
1141
|
+
decodeResult.decoder.name = this.name;
|
|
1142
|
+
decodeResult.message = message;
|
|
1143
|
+
if (decoded.decoded) {
|
|
1144
|
+
decodeResult.decoded = true;
|
|
1145
|
+
decodeResult.decoder.decodeLevel = decoded.decoder.decodeLevel;
|
|
1146
|
+
decodeResult.decoder.name = this.name + "-" + decoded.decoder.name;
|
|
1147
|
+
decodeResult.raw = { ...decodeResult.raw, ...decoded.raw };
|
|
1148
|
+
decodeResult.formatted.description = decoded.formatted.description;
|
|
1149
|
+
decodeResult.formatted.items.push(...decoded.formatted.items);
|
|
1150
|
+
decodeResult.remaining = decoded.remaining;
|
|
1151
|
+
}
|
|
1152
|
+
return decodeResult;
|
|
1153
|
+
}
|
|
1154
|
+
};
|
|
1155
|
+
|
|
1065
1156
|
// lib/plugins/CBand.ts
|
|
1066
1157
|
var CBAND_HEADER = /^(?<msgno>[A-Z]\d{2}[A-Z])(?<airline>[A-Z0-9]{2})(?<number>[0-9]{4})/;
|
|
1067
1158
|
var CBand = class extends DecoderPlugin {
|
|
@@ -1902,7 +1993,7 @@ var Arinc702 = class extends DecoderPlugin {
|
|
|
1902
1993
|
}
|
|
1903
1994
|
const hashParts = msg.split("#");
|
|
1904
1995
|
if (hashParts.length == 2) {
|
|
1905
|
-
const offset =
|
|
1996
|
+
const offset = isNaN(parseInt(hashParts[1][1])) ? 3 : 4;
|
|
1906
1997
|
decoded = Arinc702Helper.decodeH1Message(
|
|
1907
1998
|
decodeResult,
|
|
1908
1999
|
msg.slice(hashParts[0].length + offset)
|
|
@@ -4064,8 +4155,13 @@ var Label_4A_DIS = class extends DecoderPlugin {
|
|
|
4064
4155
|
}
|
|
4065
4156
|
decode(message, options = {}) {
|
|
4066
4157
|
const decodeResult = this.initResult(message, "Latest New Format");
|
|
4067
|
-
decodeResult.decoded = true;
|
|
4068
4158
|
const fields = message.text.split(",");
|
|
4159
|
+
if (fields.length < 3 || !fields[1] || fields[1].length < 3 || !fields[2]) {
|
|
4160
|
+
decodeResult.decoded = false;
|
|
4161
|
+
this.setDecodeLevel(decodeResult, decodeResult.decoded);
|
|
4162
|
+
return decodeResult;
|
|
4163
|
+
}
|
|
4164
|
+
decodeResult.decoded = true;
|
|
4069
4165
|
ResultFormatter.timestamp(
|
|
4070
4166
|
decodeResult,
|
|
4071
4167
|
DateTimeUtils.convertHHMMSSToTod(fields[1].substring(2) + "00")
|
|
@@ -6691,13 +6787,11 @@ var Label_QQ = class extends DecoderPlugin {
|
|
|
6691
6787
|
};
|
|
6692
6788
|
ResultFormatter.unknown(decodeResult, message.text.substring(42, 45));
|
|
6693
6789
|
ResultFormatter.position(decodeResult, pos);
|
|
6694
|
-
|
|
6695
|
-
|
|
6696
|
-
|
|
6697
|
-
Number(message.text.substring(45, 48))
|
|
6698
|
-
);
|
|
6790
|
+
const gsField = message.text.substring(45, 48);
|
|
6791
|
+
if (decodeResult.remaining.text !== "---" && gsField !== "---") {
|
|
6792
|
+
ResultFormatter.groundspeed(decodeResult, Number(gsField));
|
|
6699
6793
|
} else {
|
|
6700
|
-
ResultFormatter.unknown(decodeResult,
|
|
6794
|
+
ResultFormatter.unknown(decodeResult, gsField);
|
|
6701
6795
|
}
|
|
6702
6796
|
ResultFormatter.unknown(decodeResult, message.text.substring(48));
|
|
6703
6797
|
} else {
|
|
@@ -6717,6 +6811,7 @@ var Label_QQ = class extends DecoderPlugin {
|
|
|
6717
6811
|
// lib/MessageDecoder.ts
|
|
6718
6812
|
var pluginClasses = [
|
|
6719
6813
|
CBand,
|
|
6814
|
+
LibAcars,
|
|
6720
6815
|
Arinc702,
|
|
6721
6816
|
Label_ColonComma,
|
|
6722
6817
|
Label_5Z_Slash,
|