@tak-ps/node-cot 12.37.0 → 13.1.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 (41) hide show
  1. package/.github/workflows/doc.yml +1 -1
  2. package/.github/workflows/release.yml +3 -3
  3. package/.github/workflows/test.yml +4 -1
  4. package/CHANGELOG.md +9 -0
  5. package/dist/index.js +5 -3
  6. package/dist/index.js.map +1 -1
  7. package/dist/lib/{chat.js → builders/chat.js} +2 -2
  8. package/dist/lib/builders/chat.js.map +1 -0
  9. package/dist/lib/{fileshare.js → builders/fileshare.js} +2 -2
  10. package/dist/lib/builders/fileshare.js.map +1 -0
  11. package/dist/lib/{force-delete.js → builders/force-delete.js} +2 -2
  12. package/dist/lib/builders/force-delete.js.map +1 -0
  13. package/dist/lib/builders/route.js +23 -0
  14. package/dist/lib/builders/route.js.map +1 -0
  15. package/dist/lib/cot.js +7 -723
  16. package/dist/lib/cot.js.map +1 -1
  17. package/dist/lib/data-package.js +3 -2
  18. package/dist/lib/data-package.js.map +1 -1
  19. package/dist/lib/parser.js +769 -0
  20. package/dist/lib/parser.js.map +1 -0
  21. package/dist/lib/types/types.js +58 -17
  22. package/dist/lib/types/types.js.map +1 -1
  23. package/dist/lib/utils/util.js +5 -5
  24. package/dist/lib/utils/util.js.map +1 -1
  25. package/dist/package.json +4 -5
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/index.ts +6 -3
  28. package/lib/{chat.ts → builders/chat.ts} +3 -3
  29. package/lib/{fileshare.ts → builders/fileshare.ts} +4 -4
  30. package/lib/{force-delete.ts → builders/force-delete.ts} +3 -3
  31. package/lib/builders/route.ts +27 -0
  32. package/lib/cot.ts +17 -858
  33. package/lib/data-package.ts +3 -2
  34. package/lib/parser.ts +935 -0
  35. package/lib/types/types.ts +66 -17
  36. package/lib/utils/util.ts +5 -5
  37. package/package.json +4 -5
  38. package/tsconfig.json +0 -3
  39. package/dist/lib/chat.js.map +0 -1
  40. package/dist/lib/fileshare.js.map +0 -1
  41. package/dist/lib/force-delete.js.map +0 -1
@@ -46,6 +46,9 @@ export const LinkAttributes = Type.Object({
46
46
  // Polygon/LineString
47
47
  point: Type.Optional(Type.String()),
48
48
 
49
+ // Used in Routes
50
+ callsign: Type.Optional(Type.String()),
51
+
49
52
  // URL Style Links
50
53
  url: Type.Optional(Type.String()),
51
54
  mime: Type.Optional(Type.String()),
@@ -56,6 +59,28 @@ export const LinkAttributes = Type.Object({
56
59
  parent_callsign: Type.Optional(Type.String())
57
60
  })
58
61
 
62
+ export const RouteInfoNavCueTrigger = Type.Object({
63
+ _attributes: Type.Object({
64
+ mode: Type.String(),
65
+ value: Type.String()
66
+ }),
67
+ });
68
+
69
+ export const RouteInfoNavCue = Type.Object({
70
+ _attributes: Type.Object({
71
+ id: Type.String(),
72
+ voice: Type.String(),
73
+ text: Type.String(),
74
+ }),
75
+ trigger: RouteInfoNavCueTrigger
76
+ })
77
+
78
+ export const RouteInfo = Type.Object({
79
+ __navcues: Type.Object({
80
+ __navcue: Type.Union([Type.Array(RouteInfoNavCue), RouteInfoNavCue])
81
+ })
82
+ })
83
+
59
84
  export const Link = Type.Object({
60
85
  _attributes: LinkAttributes
61
86
  })
@@ -89,6 +114,7 @@ export const LinkAttrAttributes = Type.Object({
89
114
  color: Type.Optional(Type.Integer()),
90
115
  method: LinkAttrRouteMethod,
91
116
  prefix: Type.String(),
117
+ style: Type.Optional(Type.String()),
92
118
  stroke: Type.Optional(Type.String()),
93
119
  type: Type.Optional(Type.String()),
94
120
  routetype: LinkAttrRouteType,
@@ -114,16 +140,37 @@ export const ServerVersionAttributes = Type.Object({
114
140
 
115
141
  export const ColorAttributes = Type.Object({
116
142
  _attributes: Type.Optional(Type.Object({
117
- argb: Type.Optional(Type.String())
143
+ argb: Type.Optional(Type.Integer()),
144
+
145
+ // Have seen this used in range and bearing
146
+ value: Type.Optional(Type.Integer())
118
147
  }))
119
148
  })
120
149
 
121
- export const GenericAttributes = Type.Object({
150
+ export const GenericStringAttributes = Type.Object({
122
151
  _attributes: Type.Optional(Type.Object({
123
152
  value: Type.Optional(Type.String())
124
153
  }))
125
154
  })
126
155
 
156
+ export const GenericBooleanAttributes = Type.Object({
157
+ _attributes: Type.Optional(Type.Object({
158
+ value: Type.Optional(Type.Boolean())
159
+ }))
160
+ })
161
+
162
+ export const GenericIntegerAttributes = Type.Object({
163
+ _attributes: Type.Optional(Type.Object({
164
+ value: Type.Optional(Type.Integer())
165
+ }))
166
+ })
167
+
168
+ export const GenericNumberAttributes = Type.Object({
169
+ _attributes: Type.Optional(Type.Object({
170
+ value: Type.Optional(Type.Number())
171
+ }))
172
+ })
173
+
127
174
  export const GenericOptionalText = Type.Object({
128
175
  _text: Type.Optional(Type.String())
129
176
  })
@@ -457,7 +504,7 @@ export const Range = Type.Object({
457
504
  });
458
505
 
459
506
  export const RangeUnitsAttributes = Type.Object({
460
- value: Type.String()
507
+ value: Type.Integer()
461
508
  });
462
509
 
463
510
  export const RangeUnits = Type.Object({
@@ -473,7 +520,7 @@ export const Bearing = Type.Object({
473
520
  });
474
521
 
475
522
  export const BearingUnitsAttributes = Type.Object({
476
- value: Type.String()
523
+ value: Type.Integer()
477
524
  });
478
525
 
479
526
  export const BearingUnits = Type.Object({
@@ -481,7 +528,7 @@ export const BearingUnits = Type.Object({
481
528
  });
482
529
 
483
530
  export const InclinationAttributes = Type.Object({
484
- value: Type.String()
531
+ value: Type.Number()
485
532
  });
486
533
 
487
534
  export const Inclination = Type.Object({
@@ -489,7 +536,7 @@ export const Inclination = Type.Object({
489
536
  });
490
537
 
491
538
  export const NorthRefAttributes = Type.Object({
492
- value: Type.String()
539
+ value: Type.Number()
493
540
  });
494
541
 
495
542
  export const NorthRef = Type.Object({
@@ -530,6 +577,7 @@ export const Detail = Type.Object({
530
577
  '__video': Type.Optional(Video),
531
578
  '__geofence': Type.Optional(Geofence),
532
579
  '__milsym': Type.Optional(Milsym),
580
+ '__routeinfo': Type.Optional(RouteInfo),
533
581
  '__forcedelete': Type.Optional(ForceDelete),
534
582
  '_flow-tags_': Type.Optional(FlowTags),
535
583
  uid: Type.Optional(Uid),
@@ -540,12 +588,12 @@ export const Detail = Type.Object({
540
588
  remarks: Type.Optional(Remarks),
541
589
  precisionlocation: Type.Optional(PrecisionLocation),
542
590
  color: Type.Optional(ColorAttributes),
543
- strokeColor: Type.Optional(GenericAttributes),
544
- archive: Type.Optional(Type.Union([GenericAttributes, Type.Array(GenericAttributes)])),
545
- strokeWeight: Type.Optional(GenericAttributes),
546
- strokeStyle: Type.Optional(GenericAttributes),
547
- labels_on: Type.Optional(GenericAttributes),
548
- fillColor: Type.Optional(GenericAttributes),
591
+ strokeColor: Type.Optional(GenericIntegerAttributes),
592
+ archive: Type.Optional(Type.Union([GenericStringAttributes, Type.Array(GenericStringAttributes)])),
593
+ strokeWeight: Type.Optional(GenericNumberAttributes),
594
+ strokeStyle: Type.Optional(GenericStringAttributes),
595
+ labels_on: Type.Optional(GenericBooleanAttributes),
596
+ fillColor: Type.Optional(GenericIntegerAttributes),
549
597
  mission: Type.Optional(Mission),
550
598
  shape: Type.Optional(Shape),
551
599
 
@@ -575,11 +623,12 @@ export const Detail = Type.Object({
575
623
 
576
624
  export const Point = Type.Object({
577
625
  _attributes: Type.Object({
578
- lat: Type.Union([Type.String(), Type.Number()]),
579
- lon: Type.Union([Type.String(), Type.Number()]),
580
- hae: Type.Union([Type.String(), Type.Number()]),
581
- ce: Type.Union([Type.String(), Type.Number()]),
582
- le: Type.Union([Type.String(), Type.Number()]),
626
+ lat: Type.Number(),
627
+ lon: Type.Number(),
628
+ hae: Type.Number(),
629
+ // Are Occasionally seen as "NaN"
630
+ ce: Type.Union([Type.Number(), Type.String()]),
631
+ le: Type.Union([Type.Number(), Type.String()])
583
632
  })
584
633
  })
585
634
 
package/lib/utils/util.ts CHANGED
@@ -89,11 +89,11 @@ export default class Util {
89
89
  static cot_point(): Static<typeof Point> {
90
90
  return {
91
91
  '_attributes': {
92
- 'lat': '0.000000',
93
- 'lon': '0.000000',
94
- 'hae': '0.0',
95
- 'ce': '9999999.0',
96
- 'le': '9999999.0'
92
+ 'lat': 0.000000,
93
+ 'lon': 0.000000,
94
+ 'hae': 0.0,
95
+ 'ce': 9999999.0,
96
+ 'le': 9999999.0
97
97
  }
98
98
  };
99
99
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tak-ps/node-cot",
3
3
  "type": "module",
4
- "version": "12.37.0",
4
+ "version": "13.1.0",
5
5
  "description": "Lightweight JavaScript library for parsing and manipulating TAK messages",
6
6
  "author": "Nick Ingalls <nick@ingalls.ca>",
7
7
  "types": "index.ts",
@@ -10,7 +10,7 @@
10
10
  "./2525": "./dist/lib/utils/2525.js"
11
11
  },
12
12
  "scripts": {
13
- "test": "c8 --reporter=lcov ts-node-test test/",
13
+ "test": "c8 --reporter=lcov --reporter html tsx --test test/*.ts",
14
14
  "lint": "eslint *.ts lib/ test/",
15
15
  "doc": "typedoc index.ts",
16
16
  "build": "tsc --build && cp package.json dist/ && cp ./lib/types/*.xml ./dist/lib/types/ && mkdir -p ./dist/lib/proto/ && cp lib/proto/* ./dist/lib/proto/",
@@ -42,13 +42,12 @@
42
42
  "xml-js": "^1.6.11"
43
43
  },
44
44
  "devDependencies": {
45
- "@types/node": "^22.0.0",
45
+ "@types/node": "^24.0.0",
46
46
  "@types/tape": "^5.6.0",
47
47
  "c8": "^10.1.3",
48
48
  "eslint": "^9.0.0",
49
49
  "tape": "^5.6.1",
50
- "ts-node": "^10.9.1",
51
- "ts-node-test": "^0.4.0",
50
+ "tsx": "^4.20.3",
52
51
  "typedoc": "^0.28.0",
53
52
  "typescript": "^5.7.0",
54
53
  "typescript-eslint": "^8.0.0"
package/tsconfig.json CHANGED
@@ -1,7 +1,4 @@
1
1
  {
2
- "ts-node": {
3
- "esm": true
4
- },
5
2
  "compilerOptions": {
6
3
  "strict": true,
7
4
  "strictNullChecks": true,
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../lib/chat.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,iBAAiB,CAAA;AAClC,OAAO,GAAG,MAAM,UAAU,CAAC;AAG3B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoBzC,MAAM,OAAO,UAAW,SAAQ,GAAG;IAC/B,YAAY,IAAqB;QAC7B,MAAM,GAAG,GAA2B;YAChC,KAAK,EAAE;gBACH,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC;gBACtD,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;gBACvB,MAAM,EAAE;oBACJ,MAAM,EAAE;wBACJ,WAAW,EAAE;4BACT,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,kBAAkB;4BACzC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;4BAC9C,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,UAAU,EAAE;4BACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ;4BAC3C,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG;4BACf,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;yBACrC;wBACD,OAAO,EAAE;4BACL,WAAW,EAAE;gCACT,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gCACnB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG;gCACjB,EAAE,EAAG,IAAI,CAAC,EAAE,CAAC,GAAG;6BACnB;yBACJ;qBACJ;iBACJ;aACJ;SACJ,CAAA;QAED,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,UAAU,EAAE,EAAE,CAAC;QAEtF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;YAAE,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QAE7C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG;YACpB,WAAW,EAAE;gBACT,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBAClB,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,KAAK;aAClB;SACJ,CAAA;QAED,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG;YACvB,WAAW,EAAE;gBACT,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBACrB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG;gBACf,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI;aACnC;YACD,KAAK,EAAE,IAAI,CAAC,OAAO;SACtB,CAAA;QAED,KAAK,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;CACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileshare.js","sourceRoot":"","sources":["../../lib/fileshare.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,iBAAiB,CAAA;AAClC,OAAO,GAAG,MAAM,UAAU,CAAC;AAK3B,MAAM,OAAO,SAAU,SAAQ,GAAG;IAC9B,YAAY,SAA6C;QACrD,MAAM,GAAG,GAA2B;YAChC,KAAK,EAAE;gBACH,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC;gBAClD,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;gBACvB,MAAM,EAAE;oBACJ,SAAS,EAAE;wBACP,WAAW,EAAE,SAAS;qBACzB;iBACJ;aACJ;SACJ,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;CACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"force-delete.js","sourceRoot":"","sources":["../../lib/force-delete.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,iBAAiB,CAAA;AAClC,OAAO,GAAG,MAAM,UAAU,CAAC;AAI3B,MAAM,OAAO,WAAY,SAAQ,GAAG;IAChC,YAAY,GAAW;QACnB,MAAM,GAAG,GAA2B;YAChC,KAAK,EAAE;gBACH,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC;gBAClD,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;gBACvB,MAAM,EAAE;oBACJ,IAAI,EAAE;wBACF,WAAW,EAAE;4BACT,GAAG,EAAE,GAAG;4BACR,IAAI,EAAE,MAAM;4BACZ,QAAQ,EAAE,MAAM;yBACnB;qBACJ;oBACD,aAAa,EAAE,EAAE;iBACpB;aACJ;SACJ,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,CAAA;QAEV,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;CACJ"}