@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/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(Date.UTC(year, month, day, hours, minutes, seconds));
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 < 2678400) {
267
- return `YYYY-MM-${date.toISOString().slice(8, 19)}`;
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 = hashParts[0] === "- " || isNaN(parseInt(hashParts[1][1])) ? 3 : 4;
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
- if (decodeResult.remaining.text !== "---") {
6695
- ResultFormatter.groundspeed(
6696
- decodeResult,
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, message.text.substring(45, 48));
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,