@airframes/acars-decoder 1.4.7 → 1.6.0

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.
Files changed (131) hide show
  1. package/.github/FUNDING.yml +1 -1
  2. package/.github/workflows/yarn-test.yml +11 -4
  3. package/README.md +32 -0
  4. package/index.d.ts +17 -0
  5. package/index.ts +2 -0
  6. package/package.json +7 -15
  7. package/tsconfig.json +3 -3
  8. package/yarn-error.log +3354 -0
  9. package/coverage/clover.xml +0 -1799
  10. package/coverage/coverage-final.json +0 -24
  11. package/coverage/lcov-report/base.css +0 -224
  12. package/coverage/lcov-report/block-navigation.js +0 -87
  13. package/coverage/lcov-report/favicon.png +0 -0
  14. package/coverage/lcov-report/index.html +0 -131
  15. package/coverage/lcov-report/prettify.css +0 -1
  16. package/coverage/lcov-report/prettify.js +0 -2
  17. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  18. package/coverage/lcov-report/sorter.js +0 -196
  19. package/coverage/lcov.info +0 -2278
  20. package/dist/DateTimeUtils.d.ts +0 -8
  21. package/dist/DateTimeUtils.js +0 -27
  22. package/dist/DecoderPlugin.d.ts +0 -18
  23. package/dist/DecoderPlugin.js +0 -71
  24. package/dist/DecoderPluginInterface.d.ts +0 -7
  25. package/dist/DecoderPluginInterface.js +0 -3
  26. package/dist/IcaoDecoder.d.ts +0 -10
  27. package/dist/IcaoDecoder.js +0 -111
  28. package/dist/MessageDecoder.d.ts +0 -14
  29. package/dist/MessageDecoder.js +0 -129
  30. package/dist/bin/acars-decoder-test.d.ts +0 -2
  31. package/dist/bin/acars-decoder-test.js +0 -53
  32. package/dist/bin/acars-decoder.d.ts +0 -2
  33. package/dist/bin/acars-decoder.js +0 -20
  34. package/dist/index.d.ts +0 -4
  35. package/dist/index.js +0 -20
  36. package/dist/plugins/Label_15.d.ts +0 -11
  37. package/dist/plugins/Label_15.js +0 -40
  38. package/dist/plugins/Label_16_N_Space.d.ts +0 -11
  39. package/dist/plugins/Label_16_N_Space.js +0 -80
  40. package/dist/plugins/Label_16_N_Space.test.d.ts +0 -1
  41. package/dist/plugins/Label_16_N_Space.test.js +0 -84
  42. package/dist/plugins/Label_1M_Slash.d.ts +0 -11
  43. package/dist/plugins/Label_1M_Slash.js +0 -61
  44. package/dist/plugins/Label_1M_Slash.test.d.ts +0 -1
  45. package/dist/plugins/Label_1M_Slash.test.js +0 -43
  46. package/dist/plugins/Label_20_CFB.01.d.ts +0 -11
  47. package/dist/plugins/Label_20_CFB.01.js +0 -69
  48. package/dist/plugins/Label_20_POS.d.ts +0 -11
  49. package/dist/plugins/Label_20_POS.js +0 -62
  50. package/dist/plugins/Label_30_Slash_EA.d.ts +0 -11
  51. package/dist/plugins/Label_30_Slash_EA.js +0 -54
  52. package/dist/plugins/Label_30_Slash_EA.test.d.ts +0 -1
  53. package/dist/plugins/Label_30_Slash_EA.test.js +0 -35
  54. package/dist/plugins/Label_44_ETA.d.ts +0 -11
  55. package/dist/plugins/Label_44_ETA.js +0 -69
  56. package/dist/plugins/Label_44_IN.d.ts +0 -11
  57. package/dist/plugins/Label_44_IN.js +0 -69
  58. package/dist/plugins/Label_44_OFF.d.ts +0 -11
  59. package/dist/plugins/Label_44_OFF.js +0 -74
  60. package/dist/plugins/Label_44_ON.d.ts +0 -11
  61. package/dist/plugins/Label_44_ON.js +0 -69
  62. package/dist/plugins/Label_44_POS.d.ts +0 -11
  63. package/dist/plugins/Label_44_POS.js +0 -81
  64. package/dist/plugins/Label_5Z.d.ts +0 -11
  65. package/dist/plugins/Label_5Z.js +0 -120
  66. package/dist/plugins/Label_80.d.ts +0 -12
  67. package/dist/plugins/Label_80.js +0 -203
  68. package/dist/plugins/Label_8E.d.ts +0 -10
  69. package/dist/plugins/Label_8E.js +0 -48
  70. package/dist/plugins/Label_8E.test.d.ts +0 -1
  71. package/dist/plugins/Label_8E.test.js +0 -32
  72. package/dist/plugins/Label_B6.d.ts +0 -11
  73. package/dist/plugins/Label_B6.js +0 -26
  74. package/dist/plugins/Label_ColonComma.d.ts +0 -10
  75. package/dist/plugins/Label_ColonComma.js +0 -28
  76. package/dist/plugins/Label_H1.d.ts +0 -9
  77. package/dist/plugins/Label_H1.js +0 -18
  78. package/dist/plugins/Label_H1_M1BPOS.d.ts +0 -11
  79. package/dist/plugins/Label_H1_M1BPOS.js +0 -54
  80. package/dist/plugins/Label_H1_M1BPRG.d.ts +0 -11
  81. package/dist/plugins/Label_H1_M1BPRG.js +0 -36
  82. package/dist/plugins/Label_QP.d.ts +0 -10
  83. package/dist/plugins/Label_QP.js +0 -49
  84. package/dist/plugins/Label_QQ.d.ts +0 -10
  85. package/dist/plugins/Label_QQ.js +0 -49
  86. package/dist/plugins/Label_QR.d.ts +0 -10
  87. package/dist/plugins/Label_QR.js +0 -49
  88. package/dist/plugins/Label_QS.d.ts +0 -10
  89. package/dist/plugins/Label_QS.js +0 -49
  90. package/dist/plugins/Label_SQ.d.ts +0 -10
  91. package/dist/plugins/Label_SQ.js +0 -104
  92. package/dist/plugins/official.d.ts +0 -22
  93. package/dist/plugins/official.js +0 -38
  94. package/src/DateTimeUtils.ts +0 -26
  95. package/src/DecoderPlugin.ts +0 -83
  96. package/src/DecoderPluginInterface.ts +0 -9
  97. package/src/IcaoDecoder.ts +0 -137
  98. package/src/MessageDecoder.ts +0 -117
  99. package/src/bin/acars-decoder-test.ts +0 -67
  100. package/src/bin/acars-decoder.ts +0 -23
  101. package/src/index.d.ts +0 -15
  102. package/src/index.ts +0 -4
  103. package/src/plugins/Label_15.ts +0 -45
  104. package/src/plugins/Label_16_N_Space.test.ts +0 -94
  105. package/src/plugins/Label_16_N_Space.ts +0 -91
  106. package/src/plugins/Label_1M_Slash.test.ts +0 -45
  107. package/src/plugins/Label_1M_Slash.ts +0 -69
  108. package/src/plugins/Label_20_CFB.01.ts +0 -81
  109. package/src/plugins/Label_20_POS.ts +0 -68
  110. package/src/plugins/Label_30_Slash_EA.test.ts +0 -37
  111. package/src/plugins/Label_30_Slash_EA.ts +0 -60
  112. package/src/plugins/Label_44_ETA.ts +0 -81
  113. package/src/plugins/Label_44_IN.ts +0 -81
  114. package/src/plugins/Label_44_OFF.ts +0 -88
  115. package/src/plugins/Label_44_ON.ts +0 -81
  116. package/src/plugins/Label_44_POS.ts +0 -96
  117. package/src/plugins/Label_5Z.ts +0 -125
  118. package/src/plugins/Label_80.ts +0 -215
  119. package/src/plugins/Label_8E.test.ts +0 -34
  120. package/src/plugins/Label_8E.ts +0 -55
  121. package/src/plugins/Label_B6.ts +0 -28
  122. package/src/plugins/Label_ColonComma.ts +0 -32
  123. package/src/plugins/Label_H1.ts +0 -18
  124. package/src/plugins/Label_H1_M1BPOS.ts +0 -60
  125. package/src/plugins/Label_H1_M1BPRG.ts +0 -40
  126. package/src/plugins/Label_QP.ts +0 -54
  127. package/src/plugins/Label_QQ.ts +0 -54
  128. package/src/plugins/Label_QR.ts +0 -54
  129. package/src/plugins/Label_QS.ts +0 -54
  130. package/src/plugins/Label_SQ.ts +0 -111
  131. package/src/plugins/official.ts +0 -22
@@ -1,74 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Label_44_OFF = void 0;
4
- const DecoderPlugin_1 = require("../DecoderPlugin");
5
- // Off Runway Report
6
- class Label_44_OFF extends DecoderPlugin_1.DecoderPlugin {
7
- name = 'label-44-off';
8
- qualifiers() {
9
- return {
10
- labels: ['44'],
11
- preambles: ['00OFF01', '00OFF02', '00OFF03', 'OFF01', 'OFF02', 'OFF03'],
12
- };
13
- }
14
- decode(message, options = {}) {
15
- const decodeResult = this.defaultResult;
16
- decodeResult.decoder.name = this.name;
17
- decodeResult.formatted.description = 'Off Runway Report';
18
- decodeResult.message = message;
19
- // Style: OFF02,N38334W121176,KMHR,KPDX,0807,0014,0123,004.9
20
- // Match: OFF02,coords,departure_icao,arrival_icao,current_date,current_time,eta_time,fuel_in_tons
21
- const regex = /^ON02,(?<unsplit_coords>.*),(?<departure_icao>.*),(?<arrival_icao>.*),(?<current_date>.*),(?<current_time>.*),(?<eta_time>.*),(?<fuel_in_tons>.*)$/;
22
- const results = message.text.match(regex);
23
- if (results) {
24
- if (options.debug) {
25
- console.log(`Label 44 Off Runway Report: groups`);
26
- console.log(results.groups);
27
- }
28
- const coordsRegex = /(?<lac>[NS])(?<la>.+)\s*(?<lnc>[EW])(?<ln>.+)/;
29
- const coordsResults = results.groups.unsplit_coords.match(coordsRegex);
30
- decodeResult.raw.latitude_direction = coordsResults.groups.lac;
31
- decodeResult.raw.latitude = Number(coordsResults.groups.la) / 1000;
32
- decodeResult.raw.longitude_direction = coordsResults.groups.lnc;
33
- decodeResult.raw.longitude = Number(coordsResults.groups.ln) / 1000;
34
- decodeResult.raw.departure_icao = results.groups.departure_icao;
35
- decodeResult.raw.arrival_icao = results.groups.arrival_icao;
36
- decodeResult.raw.current_time = Date.parse(new Date().getFullYear() + "-" +
37
- results.groups.current_date.substr(0, 2) + "-" +
38
- results.groups.current_date.substr(2, 2) + "T" +
39
- results.groups.current_time.substr(0, 2) + ":" +
40
- results.groups.current_time.substr(2, 2) + ":00Z");
41
- decodeResult.raw.eta_time = Date.parse(new Date().getFullYear() + "-" +
42
- results.groups.current_date.substr(0, 2) + "-" +
43
- results.groups.current_date.substr(2, 2) + "T" +
44
- results.groups.eta_time.substr(0, 2) + ":" +
45
- results.groups.eta_time.substr(2, 2) + ":00Z");
46
- if (results.groups.fuel_in_tons != '***' && results.groups.fuel_in_tons != '****') {
47
- decodeResult.raw.fuel_in_tons = Number(results.groups.fuel_in_tons);
48
- }
49
- decodeResult.formatted.items.push({
50
- type: 'aircraft_position',
51
- code: 'POS',
52
- label: 'Aircraft Position',
53
- value: `${decodeResult.raw.latitude} ${decodeResult.raw.latitude_direction}, ${decodeResult.raw.longitude} ${decodeResult.raw.longitude_direction}`,
54
- });
55
- decodeResult.formatted.items.push({
56
- type: 'origin',
57
- code: 'ORG',
58
- label: 'Origin',
59
- value: decodeResult.raw.departure_icao,
60
- });
61
- decodeResult.formatted.items.push({
62
- type: 'destination',
63
- code: 'DST',
64
- label: 'Destination',
65
- value: decodeResult.raw.arrival_icao,
66
- });
67
- }
68
- decodeResult.decoded = true;
69
- decodeResult.decoder.decodeLevel = 'full';
70
- return decodeResult;
71
- }
72
- }
73
- exports.Label_44_OFF = Label_44_OFF;
74
- exports.default = {};
@@ -1,11 +0,0 @@
1
- import { DecoderPlugin } from '../DecoderPlugin';
2
- export declare class Label_44_ON extends DecoderPlugin {
3
- name: string;
4
- qualifiers(): {
5
- labels: string[];
6
- preambles: string[];
7
- };
8
- decode(message: any, options?: any): any;
9
- }
10
- declare const _default: {};
11
- export default _default;
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Label_44_ON = void 0;
4
- const DecoderPlugin_1 = require("../DecoderPlugin");
5
- // On Runway Report
6
- class Label_44_ON extends DecoderPlugin_1.DecoderPlugin {
7
- name = 'label-44-on';
8
- qualifiers() {
9
- return {
10
- labels: ['44'],
11
- preambles: ['00ON01', '00ON02', '00ON03', 'ON01', 'ON02', 'ON03'],
12
- };
13
- }
14
- decode(message, options = {}) {
15
- const decodeResult = this.defaultResult;
16
- decodeResult.decoder.name = this.name;
17
- decodeResult.formatted.description = 'On Runway Report';
18
- decodeResult.message = message;
19
- // Style: ON02,N38333W121178,KRNO,KMHR,0806,2350,005.2
20
- // Match: ON02,coords,departure_icao,arrival_icao,current_date,current_time,fuel_in_tons
21
- const regex = /^ON02,(?<unsplit_coords>.*),(?<departure_icao>.*),(?<arrival_icao>.*),(?<current_date>.*),(?<current_time>.*),(?<fuel_in_tons>.*)$/;
22
- const results = message.text.match(regex);
23
- if (results) {
24
- if (options.debug) {
25
- console.log(`Label 44 On Runway Report: groups`);
26
- console.log(results.groups);
27
- }
28
- const coordsRegex = /(?<lac>[NS])(?<la>.+)\s*(?<lnc>[EW])(?<ln>.+)/;
29
- const coordsResults = results.groups.unsplit_coords.match(coordsRegex);
30
- decodeResult.raw.latitude_direction = coordsResults.groups.lac;
31
- decodeResult.raw.latitude = Number(coordsResults.groups.la) / 1000;
32
- decodeResult.raw.longitude_direction = coordsResults.groups.lnc;
33
- decodeResult.raw.longitude = Number(coordsResults.groups.ln) / 1000;
34
- decodeResult.raw.departure_icao = results.groups.departure_icao;
35
- decodeResult.raw.arrival_icao = results.groups.arrival_icao;
36
- decodeResult.raw.current_time = Date.parse(new Date().getFullYear() + "-" +
37
- results.groups.current_date.substr(0, 2) + "-" +
38
- results.groups.current_date.substr(2, 2) + "T" +
39
- results.groups.current_time.substr(0, 2) + ":" +
40
- results.groups.current_time.substr(2, 2) + ":00Z");
41
- if (results.groups.fuel_in_tons != '***' && results.groups.fuel_in_tons != '****') {
42
- decodeResult.raw.fuel_in_tons = Number(results.groups.fuel_in_tons);
43
- }
44
- decodeResult.formatted.items.push({
45
- type: 'aircraft_position',
46
- code: 'POS',
47
- label: 'Aircraft Position',
48
- value: `${decodeResult.raw.latitude} ${decodeResult.raw.latitude_direction}, ${decodeResult.raw.longitude} ${decodeResult.raw.longitude_direction}`,
49
- });
50
- decodeResult.formatted.items.push({
51
- type: 'origin',
52
- code: 'ORG',
53
- label: 'Origin',
54
- value: decodeResult.raw.departure_icao,
55
- });
56
- decodeResult.formatted.items.push({
57
- type: 'destination',
58
- code: 'DST',
59
- label: 'Destination',
60
- value: decodeResult.raw.arrival_icao,
61
- });
62
- }
63
- decodeResult.decoded = true;
64
- decodeResult.decoder.decodeLevel = 'full';
65
- return decodeResult;
66
- }
67
- }
68
- exports.Label_44_ON = Label_44_ON;
69
- exports.default = {};
@@ -1,11 +0,0 @@
1
- import { DecoderPlugin } from '../DecoderPlugin';
2
- export declare class Label_44_POS extends DecoderPlugin {
3
- name: string;
4
- qualifiers(): {
5
- labels: string[];
6
- preambles: string[];
7
- };
8
- decode(message: any, options?: any): any;
9
- }
10
- declare const _default: {};
11
- export default _default;
@@ -1,81 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Label_44_POS = void 0;
4
- const DecoderPlugin_1 = require("../DecoderPlugin");
5
- // General Aviation Position Report
6
- class Label_44_POS extends DecoderPlugin_1.DecoderPlugin {
7
- name = 'label-44-pos';
8
- qualifiers() {
9
- return {
10
- labels: ['44'],
11
- preambles: ['00POS01', '00POS02', '00POS03', 'POS01', 'POS02', 'POS03'],
12
- };
13
- }
14
- decode(message, options = {}) {
15
- const decodeResult = this.defaultResult;
16
- decodeResult.decoder.name = this.name;
17
- decodeResult.formatted.description = 'Position Report';
18
- decodeResult.message = message;
19
- // Style: POS02,N38338W121179,GRD,KMHR,KPDX,0807,0003,0112,005.1
20
- // Match: POS02,coords,flight_level_or_ground,departure_icao,arrival_icao,current_date,current_time,eta_time,unknown
21
- const regex = /^POS02,(?<unsplit_coords>.*),(?<flight_level_or_ground>.*),(?<departure_icao>.*),(?<arrival_icao>.*),(?<current_date>.*),(?<current_time>.*),(?<eta_time>.*),(?<fuel_in_tons>.*)$/;
22
- const results = message.text.match(regex);
23
- if (results) {
24
- if (options.debug) {
25
- console.log(`Label 44 Position Report: groups`);
26
- console.log(results.groups);
27
- }
28
- const coordsRegex = /(?<lac>[NS])(?<la>.+)\s*(?<lnc>[EW])(?<ln>.+)/;
29
- const coordsResults = results.groups.unsplit_coords.match(coordsRegex);
30
- decodeResult.raw.latitude_direction = coordsResults.groups.lac;
31
- decodeResult.raw.latitude = Number(coordsResults.groups.la) / 1000;
32
- decodeResult.raw.longitude_direction = coordsResults.groups.lnc;
33
- decodeResult.raw.longitude = Number(coordsResults.groups.ln) / 1000;
34
- decodeResult.raw.flight_level = results.groups.flight_level_or_ground == 'GRD' || results.groups.flight_level_or_ground == '***' ? '0' : Number(results.groups.flight_level_or_ground);
35
- decodeResult.raw.departure_icao = results.groups.departure_icao;
36
- decodeResult.raw.arrival_icao = results.groups.arrival_icao;
37
- decodeResult.raw.current_time = Date.parse(new Date().getFullYear() + "-" +
38
- results.groups.current_date.substr(0, 2) + "-" +
39
- results.groups.current_date.substr(2, 2) + "T" +
40
- results.groups.current_time.substr(0, 2) + ":" +
41
- results.groups.current_time.substr(2, 2) + ":00Z");
42
- decodeResult.raw.eta_time = Date.parse(new Date().getFullYear() + "-" +
43
- results.groups.current_date.substr(0, 2) + "-" +
44
- results.groups.current_date.substr(2, 2) + "T" +
45
- results.groups.eta_time.substr(0, 2) + ":" +
46
- results.groups.eta_time.substr(2, 2) + ":00Z");
47
- if (results.groups.fuel_in_tons != '***' && results.groups.fuel_in_tons != '****') {
48
- decodeResult.raw.fuel_in_tons = Number(results.groups.fuel_in_tons);
49
- }
50
- decodeResult.formatted.items.push({
51
- type: 'aircraft_position',
52
- code: 'POS',
53
- label: 'Aircraft Position',
54
- value: `${decodeResult.raw.latitude} ${decodeResult.raw.latitude_direction}, ${decodeResult.raw.longitude} ${decodeResult.raw.longitude_direction}`,
55
- });
56
- decodeResult.formatted.items.push({
57
- type: 'origin',
58
- code: 'ORG',
59
- label: 'Origin',
60
- value: decodeResult.raw.departure_icao,
61
- });
62
- decodeResult.formatted.items.push({
63
- type: 'destination',
64
- code: 'DST',
65
- label: 'Destination',
66
- value: decodeResult.raw.arrival_icao,
67
- });
68
- decodeResult.formatted.items.push({
69
- type: 'flight_level',
70
- code: 'FL',
71
- label: 'Flight Level',
72
- value: decodeResult.raw.flight_level,
73
- });
74
- }
75
- decodeResult.decoded = true;
76
- decodeResult.decoder.decodeLevel = 'full';
77
- return decodeResult;
78
- }
79
- }
80
- exports.Label_44_POS = Label_44_POS;
81
- exports.default = {};
@@ -1,11 +0,0 @@
1
- import { DecoderPlugin } from '../DecoderPlugin';
2
- export declare class Label_5Z extends DecoderPlugin {
3
- name: string;
4
- descriptions: any;
5
- qualifiers(): {
6
- labels: string[];
7
- };
8
- decode(message: any, options?: any): any;
9
- }
10
- declare const _default: {};
11
- export default _default;
@@ -1,120 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Label_5Z = void 0;
4
- const DecoderPlugin_1 = require("../DecoderPlugin");
5
- class Label_5Z extends DecoderPlugin_1.DecoderPlugin {
6
- name = 'label-5z';
7
- descriptions = {
8
- B1: 'Request Weight and Balance',
9
- B3: 'Request Departure Clearance',
10
- CD: 'Weight and Balance',
11
- CG: 'Request Pre-departure clearance, PDC',
12
- CM: 'Crew Scheduling',
13
- C3: 'Off Message',
14
- C4: 'Flight Dispatch',
15
- C5: 'Maintenance Message',
16
- C6: 'Customer Service',
17
- 10: 'PIREP',
18
- C11: 'International PIREP',
19
- DS: 'Late Message',
20
- D3: 'Holding Pattern Message',
21
- D6: 'From-To + Date',
22
- D7: 'From-To + Alternate + Time',
23
- EO: 'In Range',
24
- PW: 'Position Weather',
25
- RL: 'Request Release',
26
- R3: 'Request HOWGOZIT Message',
27
- R4: 'Request the Latest POSBD',
28
- TC: 'From-To Fuel',
29
- WB: 'From-To',
30
- W1: 'Request Weather for City',
31
- };
32
- qualifiers() {
33
- return {
34
- labels: ['5Z'],
35
- };
36
- }
37
- decode(message, options = {}) {
38
- const decodeResult = this.defaultResult;
39
- decodeResult.decoder.name = this.name;
40
- decodeResult.formatted.description = 'Airline Designated Downlink';
41
- const uaRegex = /^\/(?<type>\w+) (?<remainder>.+)/;
42
- let results = message.text.match(uaRegex);
43
- if (results && results.length >= 2) {
44
- // Successful match: United Airlines 5Z message
45
- const type = results.groups.type.split('/')[0];
46
- const { remainder } = results.groups;
47
- // console.log(results);
48
- // console.log(`DECODER: Matched 'United Airlines 5Z': type = ${type}, remainder = ${remainder}`);
49
- const typeDescription = this.descriptions[type] ? this.descriptions[type] : 'Unknown';
50
- decodeResult.raw.airline = 'United Airlines';
51
- decodeResult.formatted.items.push({
52
- type: 'airline',
53
- label: 'Airline',
54
- value: 'United Airlines',
55
- });
56
- decodeResult.raw.message_type = type;
57
- decodeResult.formatted.items.push({
58
- type: 'message_type',
59
- label: 'Message Type',
60
- value: `${typeDescription} (${type})`,
61
- });
62
- if (type === 'B3') {
63
- const rdcRegex = /^(?<from>\w\w\w)(?<to>\w\w\w) (?<unknown1>\d\d) R(?<runway>.+) G(?<unknown2>.+)$/; // eslint-disable-line max-len
64
- results = remainder.match(rdcRegex);
65
- if (results) {
66
- decodeResult.raw.origin = results.groups.from;
67
- decodeResult.formatted.items.push({
68
- type: 'origin',
69
- label: 'Origin',
70
- value: `${results.groups.from}`,
71
- });
72
- decodeResult.raw.destination = results.groups.to;
73
- decodeResult.formatted.items.push({
74
- type: 'destination',
75
- label: 'Destination',
76
- value: `${results.groups.to}`,
77
- });
78
- decodeResult.formatted.items.push({
79
- type: 'unknown1',
80
- label: 'Unknown Field 1',
81
- value: `${results.groups.unknown1}`,
82
- });
83
- decodeResult.raw.runway = results.groups.runway;
84
- decodeResult.formatted.items.push({
85
- type: 'runway',
86
- label: 'Runway',
87
- value: `${results.groups.runway}`,
88
- });
89
- decodeResult.formatted.items.push({
90
- type: 'unknown2',
91
- label: 'Unknown Field 2',
92
- value: `${results.groups.unknown2}`,
93
- });
94
- }
95
- else {
96
- if (options.debug) {
97
- console.log(`Decoder: Unkown 5Z RDC format: ${remainder}`);
98
- }
99
- }
100
- }
101
- else {
102
- decodeResult.remaining.text = remainder;
103
- }
104
- decodeResult.decoded = true;
105
- decodeResult.decoder.decodeLevel = 'partial';
106
- }
107
- else {
108
- // Unknown
109
- if (options.debug) {
110
- console.log(`Decoder: Unknown 5Z message: ${message.text}`);
111
- }
112
- decodeResult.remaining.text = message.text;
113
- decodeResult.decoded = false;
114
- decodeResult.decoder.decodeLevel = 'none';
115
- }
116
- return decodeResult;
117
- }
118
- }
119
- exports.Label_5Z = Label_5Z;
120
- exports.default = {};
@@ -1,12 +0,0 @@
1
- import { DecoderPlugin } from '../DecoderPlugin';
2
- export declare class Label_80 extends DecoderPlugin {
3
- name: string;
4
- descriptions: any;
5
- qualifiers(): {
6
- labels: string[];
7
- preambles: string[];
8
- };
9
- decode(message: any, options?: any): any;
10
- }
11
- declare const _default: {};
12
- export default _default;
@@ -1,203 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Label_80 = void 0;
4
- const DecoderPlugin_1 = require("../DecoderPlugin");
5
- // Airline Defined
6
- // 3N01 POSRPT
7
- class Label_80 extends DecoderPlugin_1.DecoderPlugin {
8
- name = 'label-80';
9
- descriptions = {
10
- ALT: 'Altitude',
11
- DWND: 'Wind Direction',
12
- ETA: 'Estimated Time of Arrival',
13
- FOB: 'Fuel on Board',
14
- FL: 'Flight Level',
15
- HDG: 'Heading',
16
- MCH: 'Aircraft Speed',
17
- NWYP: 'Next Waypoint',
18
- POS: 'Aircraft Position',
19
- SAT: 'Static Air Temperature',
20
- SWND: 'Window Speed',
21
- TAS: 'True Airspeed',
22
- WYP: 'Waypoint',
23
- };
24
- qualifiers() {
25
- return {
26
- labels: ['80'],
27
- preambles: ['3N01 POSRPT'],
28
- };
29
- }
30
- decode(message, options = {}) {
31
- const decodeResult = this.defaultResult;
32
- decodeResult.decoder.name = this.name;
33
- decodeResult.formatted.description = 'Airline Defined Position Report';
34
- const parts = message.text.split('\n');
35
- let posRptRegex = /^3N01 POSRPT \d\d\d\d\/\d\d (?<orig>\w+)\/(?<dest>\w+) \.(?<tail>[\w-]+)(\/(?<agate>.+) (?<sta>\w+:\w+))*/; // eslint-disable-line max-len
36
- let results = parts[0].match(posRptRegex);
37
- if (results && results.length > 0) {
38
- decodeResult.raw.origin = results.groups.orig;
39
- decodeResult.formatted.items.push({
40
- type: 'origin',
41
- code: 'ORG',
42
- label: 'Origin',
43
- value: `${results.groups.orig}`,
44
- });
45
- decodeResult.raw.destination = results.groups.dest;
46
- decodeResult.formatted.items.push({
47
- type: 'destination',
48
- code: 'DST',
49
- label: 'Destination',
50
- value: `${results.groups.dest}`,
51
- });
52
- decodeResult.raw.tail = results.groups.tail;
53
- decodeResult.formatted.items.push({
54
- type: 'tail',
55
- label: 'Tail',
56
- value: `${results.groups.tail}`,
57
- });
58
- if (results.groups.agate) {
59
- decodeResult.raw.arrival_gate = results.groups.agate;
60
- decodeResult.formatted.items.push({
61
- type: 'arrival_gate',
62
- code: 'ARG',
63
- label: 'Arrival Gate',
64
- value: `${results.groups.agate}`,
65
- });
66
- decodeResult.raw.scheduled_time_of_arrival = results.groups.sta;
67
- decodeResult.formatted.items.push({
68
- type: 'scheduled_time_of_arrival',
69
- code: 'STA',
70
- label: 'Scheduled Time of Arrival',
71
- value: `${results.groups.sta}`,
72
- });
73
- }
74
- posRptRegex = /\/(?<field>\w+)\s(?<value>[\w\+\-:\.]+)\s*/gi; // eslint-disable-line no-useless-escape
75
- // console.log('Regex:', posRptRegex);
76
- const remainingParts = parts.slice(1);
77
- // console.log("Remaining Parts:", remainingParts);
78
- for (const part of remainingParts) { // eslint-disable-line no-restricted-syntax
79
- // console.log('Part:', part);
80
- const matches = part.matchAll(posRptRegex);
81
- // console.log('Matches:', matches);
82
- for (const match of matches) { // eslint-disable-line no-restricted-syntax
83
- // console.log('Match:', match);
84
- switch (match.groups.field) {
85
- case 'ALT': {
86
- decodeResult.raw.altitude = match.groups.value;
87
- decodeResult.formatted.items.push({
88
- type: 'altitude',
89
- code: 'ALT',
90
- label: this.descriptions[match.groups.field],
91
- value: `${decodeResult.raw.altitude} feet`,
92
- });
93
- break;
94
- }
95
- case 'DWND': {
96
- decodeResult.raw.wind_direction = Number(match.groups.value);
97
- decodeResult.formatted.items.push({
98
- type: 'wind_direction',
99
- code: 'DWND',
100
- label: this.descriptions[match.groups.field],
101
- value: decodeResult.raw.wind_direction,
102
- });
103
- break;
104
- }
105
- case 'FL': {
106
- decodeResult.raw.flight_level = match.groups.value;
107
- decodeResult.formatted.items.push({
108
- type: 'flight_level',
109
- code: 'FL',
110
- label: this.descriptions[match.groups.field],
111
- value: decodeResult.raw.flight_level,
112
- });
113
- break;
114
- }
115
- case 'FOB': {
116
- decodeResult.raw.fuel_on_board = match.groups.value;
117
- decodeResult.formatted.items.push({
118
- type: 'fuel_on_board',
119
- code: 'FOB',
120
- label: this.descriptions[match.groups.field],
121
- value: decodeResult.raw.fuel_on_board,
122
- });
123
- break;
124
- }
125
- case 'HDG': {
126
- decodeResult.raw.heading = Number(match.groups.value);
127
- decodeResult.formatted.items.push({
128
- type: 'heading',
129
- code: 'HDG',
130
- label: this.descriptions[match.groups.field],
131
- value: decodeResult.raw.heading,
132
- });
133
- break;
134
- }
135
- case 'MCH': {
136
- decodeResult.raw.mach = match.groups.value / 1000;
137
- decodeResult.formatted.items.push({
138
- type: 'mach',
139
- code: 'MCH',
140
- label: this.descriptions[match.groups.field],
141
- value: `${decodeResult.raw.mach} Mach`,
142
- });
143
- break;
144
- }
145
- case 'NWYP': {
146
- decodeResult.raw.next_waypoint = match.groups.value;
147
- decodeResult.formatted.items.push({
148
- type: 'next_waypoint',
149
- code: 'NWYP',
150
- label: this.descriptions[match.groups.field],
151
- value: decodeResult.raw.next_waypoint,
152
- });
153
- break;
154
- }
155
- case 'POS': {
156
- const posRegex = /^(?<latd>[NS])(?<lat>.+)(?<lngd>[EW])(?<lng>.+)/;
157
- const posResult = match.groups.value.match(posRegex);
158
- const latitude = (Number(posResult.groups.lat) / 100) * (posResult.groups.lngd === 'S' ? -1 : 1);
159
- const longitude = (Number(posResult.groups.lng) / 100) * (posResult.groups.lngd === 'W' ? -1 : 1);
160
- decodeResult.raw.aircraft_position = {
161
- latitude,
162
- longitude,
163
- };
164
- decodeResult.formatted.items.push({
165
- type: 'aircraft_position',
166
- code: 'POS',
167
- label: this.descriptions[match.groups.field],
168
- value: `${(Number(posResult.groups.lat) / 100).toPrecision(5)} ${posResult.groups.latd}, ${(Number(posResult.groups.lng) / 100).toPrecision(5)} ${posResult.groups.lngd}`,
169
- });
170
- break;
171
- }
172
- case 'SWND': {
173
- decodeResult.raw.wind_speed = Number(match.groups.value);
174
- decodeResult.formatted.items.push({
175
- type: 'wind_speed',
176
- code: 'SWND',
177
- label: this.descriptions[match.groups.field],
178
- value: decodeResult.raw.wind_speed,
179
- });
180
- break;
181
- }
182
- default: {
183
- if (match.groups.field != undefined) {
184
- const description = this.descriptions[match.groups.field] ? this.descriptions[match.groups.field] : 'Unknown';
185
- decodeResult.formatted.items.push({
186
- type: match.groups.field,
187
- code: match.groups.field,
188
- label: description || `Unknown (${match.groups.field})`,
189
- value: `${match.groups.value}`,
190
- });
191
- }
192
- }
193
- }
194
- }
195
- }
196
- decodeResult.decoded = true;
197
- decodeResult.decodeLevel = 'partial';
198
- }
199
- return decodeResult;
200
- }
201
- }
202
- exports.Label_80 = Label_80;
203
- exports.default = {};
@@ -1,10 +0,0 @@
1
- import { DecoderPlugin } from '../DecoderPlugin';
2
- export declare class Label_8E extends DecoderPlugin {
3
- name: string;
4
- qualifiers(): {
5
- labels: string[];
6
- };
7
- decode(message: any, options?: any): any;
8
- }
9
- declare const _default: {};
10
- export default _default;
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Label_8E = void 0;
4
- const DateTimeUtils_1 = require("../DateTimeUtils");
5
- const DecoderPlugin_1 = require("../DecoderPlugin");
6
- // ETA
7
- class Label_8E extends DecoderPlugin_1.DecoderPlugin {
8
- name = 'label-8e';
9
- qualifiers() {
10
- return {
11
- labels: ["8E"],
12
- };
13
- }
14
- decode(message, options = {}) {
15
- const decodeResult = this.defaultResult;
16
- decodeResult.decoder.name = this.name;
17
- decodeResult.formatted.description = 'ETA Report';
18
- decodeResult.message = message;
19
- // Style: EGSS,1618
20
- // Match: arrival_icao,arrival_eta
21
- const regex = /^(?<arrival_icao>\w{4}),(?<arrival_eta>\d{4})$/;
22
- const results = message.text.match(regex);
23
- if (results) {
24
- if (options.debug) {
25
- console.log(`Label 8E ETA: groups`);
26
- console.log(results.groups);
27
- }
28
- decodeResult.formatted.items.push({
29
- type: 'eta',
30
- code: 'ETA',
31
- label: 'Estimated Time of Arrival',
32
- value: DateTimeUtils_1.DateTimeUtils.UTCToString(results.groups.arrival_eta),
33
- });
34
- decodeResult.raw.arrival_icao = results.groups.arrival_icao;
35
- decodeResult.formatted.items.push({
36
- type: 'destination',
37
- code: 'DST',
38
- label: 'Destination',
39
- value: decodeResult.raw.arrival_icao,
40
- });
41
- }
42
- decodeResult.decoded = true;
43
- decodeResult.decoder.decodeLevel = 'full';
44
- return decodeResult;
45
- }
46
- }
47
- exports.Label_8E = Label_8E;
48
- exports.default = {};
@@ -1 +0,0 @@
1
- export {};