node-red-contrib-tak-registration 0.8.0 → 0.9.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 (75) hide show
  1. package/README.md +2 -0
  2. package/node_modules/@types/node/README.md +1 -1
  3. package/node_modules/@types/node/child_process.d.ts +5 -0
  4. package/node_modules/@types/node/dgram.d.ts +5 -0
  5. package/node_modules/@types/node/events.d.ts +35 -0
  6. package/node_modules/@types/node/fs/promises.d.ts +5 -0
  7. package/node_modules/@types/node/fs.d.ts +43 -5
  8. package/node_modules/@types/node/globals.d.ts +22 -0
  9. package/node_modules/@types/node/index.d.ts +1 -1
  10. package/node_modules/@types/node/inspector.d.ts +1 -1
  11. package/node_modules/@types/node/module.d.ts +103 -0
  12. package/node_modules/@types/node/net.d.ts +5 -0
  13. package/node_modules/@types/node/package.json +2 -2
  14. package/node_modules/@types/node/stream.d.ts +143 -0
  15. package/node_modules/@types/node/test.d.ts +33 -4
  16. package/node_modules/@types/node/timers.d.ts +12 -2
  17. package/node_modules/@types/node/ts4.8/child_process.d.ts +5 -0
  18. package/node_modules/@types/node/ts4.8/dgram.d.ts +5 -0
  19. package/node_modules/@types/node/ts4.8/events.d.ts +35 -0
  20. package/node_modules/@types/node/ts4.8/fs/promises.d.ts +5 -0
  21. package/node_modules/@types/node/ts4.8/fs.d.ts +43 -5
  22. package/node_modules/@types/node/ts4.8/globals.d.ts +22 -0
  23. package/node_modules/@types/node/ts4.8/inspector.d.ts +1 -1
  24. package/node_modules/@types/node/ts4.8/module.d.ts +103 -0
  25. package/node_modules/@types/node/ts4.8/net.d.ts +5 -0
  26. package/node_modules/@types/node/ts4.8/stream.d.ts +762 -728
  27. package/node_modules/@types/node/ts4.8/test.d.ts +97 -50
  28. package/node_modules/@types/node/ts4.8/timers.d.ts +12 -2
  29. package/node_modules/@types/node/ts4.8/vm.d.ts +2 -1
  30. package/node_modules/@types/node/vm.d.ts +2 -1
  31. package/node_modules/axios/CHANGELOG.md +23 -0
  32. package/node_modules/axios/README.md +33 -5
  33. package/node_modules/axios/dist/axios.js +26 -18
  34. package/node_modules/axios/dist/axios.js.map +1 -1
  35. package/node_modules/axios/dist/axios.min.js +1 -1
  36. package/node_modules/axios/dist/axios.min.js.map +1 -1
  37. package/node_modules/axios/dist/browser/axios.cjs +24 -20
  38. package/node_modules/axios/dist/browser/axios.cjs.map +1 -1
  39. package/node_modules/axios/dist/esm/axios.js +26 -21
  40. package/node_modules/axios/dist/esm/axios.js.map +1 -1
  41. package/node_modules/axios/dist/esm/axios.min.js +1 -1
  42. package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  43. package/node_modules/axios/dist/node/axios.cjs +27 -21
  44. package/node_modules/axios/dist/node/axios.cjs.map +1 -1
  45. package/node_modules/axios/index.d.cts +1 -0
  46. package/node_modules/axios/index.d.ts +3 -0
  47. package/node_modules/axios/index.js +2 -0
  48. package/node_modules/axios/lib/adapters/http.js +3 -1
  49. package/node_modules/axios/lib/axios.js +3 -0
  50. package/node_modules/axios/lib/core/Axios.js +2 -4
  51. package/node_modules/axios/lib/core/AxiosHeaders.js +11 -1
  52. package/node_modules/axios/lib/defaults/index.js +4 -11
  53. package/node_modules/axios/lib/env/data.js +1 -1
  54. package/node_modules/axios/lib/utils.js +3 -2
  55. package/node_modules/axios/package.json +3 -1
  56. package/node_modules/protobufjs/dist/light/protobuf.js +24 -13
  57. package/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
  58. package/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
  59. package/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
  60. package/node_modules/protobufjs/dist/minimal/protobuf.js +12 -7
  61. package/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
  62. package/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
  63. package/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
  64. package/node_modules/protobufjs/dist/protobuf.js +40 -18
  65. package/node_modules/protobufjs/dist/protobuf.js.map +1 -1
  66. package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
  67. package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
  68. package/node_modules/protobufjs/package.json +1 -1
  69. package/node_modules/protobufjs/src/converter.js +2 -2
  70. package/node_modules/protobufjs/src/parse.js +4 -1
  71. package/node_modules/protobufjs/src/reader.js +8 -3
  72. package/node_modules/protobufjs/src/tokenize.js +2 -4
  73. package/package.json +3 -3
  74. package/tak-ingest.js +1 -1
  75. package/tak-registration.js +38 -6
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "protobufjs",
3
- "version": "7.2.4",
3
+ "version": "7.2.5",
4
4
  "versionScheme": "~",
5
5
  "description": "Protocol Buffers for JavaScript (& TypeScript).",
6
6
  "author": "Daniel Wirtz <dcode+protobufjs@dcode.io>",
@@ -62,7 +62,7 @@ function genValuePartial_fromObject(gen, field, fieldIndex, prop) {
62
62
  break;
63
63
  case "uint64":
64
64
  isUnsigned = true;
65
- // eslint-disable-line no-fallthrough
65
+ // eslint-disable-next-line no-fallthrough
66
66
  case "int64":
67
67
  case "sint64":
68
68
  case "fixed64":
@@ -176,7 +176,7 @@ function genValuePartial_toObject(gen, field, fieldIndex, prop) {
176
176
  break;
177
177
  case "uint64":
178
178
  isUnsigned = true;
179
- // eslint-disable-line no-fallthrough
179
+ // eslint-disable-next-line no-fallthrough
180
180
  case "int64":
181
181
  case "sint64":
182
182
  case "fixed64":
@@ -227,7 +227,7 @@ function parse(source, root, options) {
227
227
  break;
228
228
  case "public":
229
229
  next();
230
- // eslint-disable-line no-fallthrough
230
+ // eslint-disable-next-line no-fallthrough
231
231
  default:
232
232
  whichImports = imports || (imports = []);
233
233
  break;
@@ -621,6 +621,9 @@ function parse(source, root, options) {
621
621
  if (!nameRe.test(token = next())) {
622
622
  throw illegal(token, "name");
623
623
  }
624
+ if (token === null) {
625
+ throw illegal(token, "end of input");
626
+ }
624
627
 
625
628
  var value;
626
629
  var propName = token;
@@ -312,9 +312,14 @@ Reader.prototype.bytes = function read_bytes() {
312
312
  this.pos += length;
313
313
  if (Array.isArray(this.buf)) // plain array
314
314
  return this.buf.slice(start, end);
315
- return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1
316
- ? new this.buf.constructor(0)
317
- : this._slice.call(this.buf, start, end);
315
+
316
+ if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1
317
+ var nativeBuffer = util.Buffer;
318
+ return nativeBuffer
319
+ ? nativeBuffer.alloc(0)
320
+ : new this.buf.constructor(0);
321
+ }
322
+ return this._slice.call(this.buf, start, end);
318
323
  };
319
324
 
320
325
  /**
@@ -197,9 +197,7 @@ function tokenize(source, alternateCommentMode) {
197
197
 
198
198
  // see if remaining line matches comment pattern
199
199
  var lineText = source.substring(startOffset, endOffset);
200
- // look for 1 or 2 slashes since startOffset would already point past
201
- // the first slash that started the comment.
202
- var isComment = /^\s*\/{1,2}/.test(lineText);
200
+ var isComment = /^\s*\/\//.test(lineText);
203
201
  return isComment;
204
202
  }
205
203
 
@@ -268,7 +266,7 @@ function tokenize(source, alternateCommentMode) {
268
266
  // check for double-slash comments, consolidating consecutive lines
269
267
  start = offset;
270
268
  isDoc = false;
271
- if (isDoubleSlashCommentLine(offset)) {
269
+ if (isDoubleSlashCommentLine(offset - 1)) {
272
270
  isDoc = true;
273
271
  do {
274
272
  offset = findEndOfLine(offset);
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "node-red-contrib-tak-registration",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "A Node-RED node to register to TAK and to help wrap files as datapackages to send to TAK",
5
5
  "dependencies": {
6
6
  "@turf/turf": "6.5.0",
7
7
  "adm-zip": "0.5.10",
8
- "axios": "1.4.0",
8
+ "axios": "1.5.0",
9
9
  "fast-xml-parser": "4.2.7",
10
10
  "form-data": "4.0.0",
11
11
  "long": "5.2.3",
12
- "protobufjs": "7.2.4",
12
+ "protobufjs": "7.2.5",
13
13
  "uuid": "9.0.0"
14
14
  },
15
15
  "bundledDependencies": [
package/tak-ingest.js CHANGED
@@ -9,7 +9,7 @@ module.exports = function(RED) {
9
9
  "use strict";
10
10
  const fastXmlOptions = {
11
11
  attributeNamePrefix: "",
12
- // attrNodeName: "attr",
12
+ // attributesGroupName: "attr",
13
13
  ignoreAttributes: false,
14
14
  };
15
15
 
@@ -35,6 +35,7 @@ module.exports = function(RED) {
35
35
  var gr = {};
36
36
  gr[node.callsign] = node.uuid;
37
37
  globalContext.set("_takgatewaycs",gr);
38
+ globalContext.set("_takdphost",node.host);
38
39
 
39
40
  if (node.role !== "Gateway") { node.ntype = "a-f-G-U-C" }
40
41
 
@@ -73,7 +74,7 @@ module.exports = function(RED) {
73
74
  var sendIt = function() {
74
75
  node.emit("input", {
75
76
  time: new Date().toISOString(),
76
- etime: new Date(Date.now() + 2000 * node.repeat).toISOString(),
77
+ etime: new Date(Date.now() + (2 * node.repeat)).toISOString(),
77
78
  lat: node.lat,
78
79
  lon: node.lon,
79
80
  alt: node.alt,
@@ -98,8 +99,8 @@ module.exports = function(RED) {
98
99
 
99
100
  node.on("input",function(msg) {
100
101
  if (msg.heartbeat) { // Register gateway and do the heartbeats
101
- var template = `<event version="2.0" uid="${node.uuid}" type="${msg.type}" how="h-e" time="${msg.time}" start="${msg.time}" stale="${msg.etime}"><point lat="${msg.lat}" lon="${msg.lon}" hae="${msg.alt}" ce="9999999" le="9999999"/><detail><takv device="${os.hostname()}" os="${os.platform()}" platform="NRedTAK" version="${ver}"/><contact endpoint="*:-1:stcp" callsign="${msg.callsign}"/><uid Droid="${msg.callsign}"/><__group name="${msg.group}" role="${msg.role}"/><status battery="99"/></detail></event>`;
102
- node.send({payload:template});
102
+ var template = `<event version="2.0" uid="${node.uuid}" type="${msg.type}" how="h-e" time="${msg.time}" start="${msg.time}" stale="${msg.etime}"><point lat="${msg.lat}" lon="${msg.lon}" hae="${msg.alt}" ce="9999999" le="9999999"/><detail><takv device="${os.hostname()}" os="${os.platform()}" platform="NRedTAK" version="${ver}"/><contact endpoint="*:-1:stcp" callsign="${msg.callsign}"/><uid Droid="${msg.callsign}"/><__group name="${msg.group}" role="${msg.role}"/><status battery="99"/><track course="0.00000000" speed="0.00000000"/></detail></event>`;
103
+ node.send({payload:template, topic:msg.type});
103
104
  node.status({fill:"green", shape:"dot", text:node.repeat/1000+"s - "+node.callsign});
104
105
  return;
105
106
  }
@@ -183,6 +184,7 @@ module.exports = function(RED) {
183
184
  m += '</detail></event>';
184
185
  node.log( "DP: " + node.host + "/Marti/sync/content?hash=" + msg.hash );
185
186
  msg.payload = m.replace(/>\s+</g, "><");
187
+ msg.topic = "b-f-t-r";
186
188
  node.send(msg);
187
189
  }
188
190
  })
@@ -197,6 +199,7 @@ module.exports = function(RED) {
197
199
  // Otherwise if it's a string maybe it's raw cot xml - or NMEA from GPS - or maybe a simple chat message
198
200
  else if (typeof msg.payload === "string" ) {
199
201
  if (msg.payload.trim().startsWith('<') && msg.payload.trim().endsWith('>')) { // Assume it's proper XML event so pass straight through
202
+ msg.topic = msg.payload.split('type="')[1].split('"')[0];
200
203
  node.send(msg);
201
204
  }
202
205
  else if (msg.payload.trim().startsWith('$GPGGA')) { // maybe it's an NMEA string
@@ -244,6 +247,7 @@ module.exports = function(RED) {
244
247
  </event>`;
245
248
  // console.log(xm);
246
249
  m.payload = xm.replace(/>\s+</g, "><");
250
+ m.topic = "b-t-f";
247
251
  node.send(m);
248
252
  }
249
253
  }
@@ -277,8 +281,13 @@ module.exports = function(RED) {
277
281
  type = s.split('').join('-').replace('s-','a-').replace('-p-','-');
278
282
  }
279
283
  }
280
- // console.log("TYPE",type)
284
+ if (msg.payload.icon === 'fa-circle fa-fw') {
285
+ type = 'b-m-p-s-m';
286
+ shapeXML = '<color argb="' + convertWMtoCOTColour(msg.payload.iconColor.replace('#', '')) + '"/>';
287
+ shapeXML = shapeXML+'<usericon iconsetpath="COT_MAPPING_SPOTMAP/b-m-p-s-m/-16711681"/>';
288
+ }
281
289
  }
290
+
282
291
  // Handle Worldmap drawing shapes
283
292
  if (msg.payload.hasOwnProperty("action") && msg.payload.action === "draw") {
284
293
  ttl = 24*60*60*1000; /// set TTL to 1 day for shapes...
@@ -342,7 +351,6 @@ module.exports = function(RED) {
342
351
  msg.payload.lon = polyCent.geometry.coordinates[1];
343
352
  }
344
353
  // console.log("SHAPE",shape)
345
-
346
354
  if (shape.type === 'ellipse') {
347
355
  type = "u-d-c-c";
348
356
 
@@ -399,13 +407,37 @@ module.exports = function(RED) {
399
407
  <point lat="${msg.payload.lat || 0}" lon="${msg.payload.lon || 0}" hae="${parseInt(msg.payload.alt || invalid)}" le="9999999.0" ce="9999999.0"/>
400
408
  <detail>
401
409
  <takv device="${os.hostname()}" os="${os.platform()}" platform="NRedTAK" version="${ver}"/>
402
- <track course="${msg.payload.bearing || 0}" speed="${parseInt(msg.payload.speed) || 0}"/>
410
+ <track course="${msg.payload.bearing || 9999999.0}" speed="${parseInt(msg.payload.speed) || 0}"/>
403
411
  <contact callsign="${msg.payload.name}"/>
404
412
  <remarks source="NRedTAK">${tag}</remarks>
405
413
  ${shapeXML}
406
414
  </detail>
407
415
  </event>`
408
416
  msg.payload = msg.payload.replace(/>\s+</g, "><");
417
+ msg.topic = type;
418
+ node.send(msg);
419
+ }
420
+
421
+ // Maybe a simple event json update (eg from an ingest - tweak and send back)
422
+ // Note this is not 100% reverse of the ingest... but seems to work mostly...
423
+ else if (typeof msg.payload === "object" && msg.payload.hasOwnProperty("event") ) {
424
+ const ev = msg.payload.event;
425
+ msg.topic = ev.type;
426
+ msg.payload = `<event version="${ev.version}" uid="${ev.uid}" type="${ev.type}" time="${ev.time}" start="${ev.start}" stale="${ev.stale}" how="${ev.how}">
427
+ <point lat="${ev.point.lat || 0}" lon="${ev.point.lon || 0}" hae="${ev.detail?.height?.value || ev.point.hae || 9999999.0}" le="${ev.point.le}" ce="${ev.point.ce}"/>
428
+ <detail>
429
+ <takv device="${os.hostname()}" os="${os.platform()}" platform="NRedTAK" version="${ver}"/>`
430
+ if (ev.detail?.track) {
431
+ msg.payload += `<track speed="${ev.detail.track.speed}" course="${ev.detail.track.course}"/>`;
432
+ }
433
+ if (ev.detail?.color) {
434
+ msg.payload += `<color argb="${ev.detail.color.argb}"/>`;
435
+ }
436
+ msg.payload += `<contact callsign="${ev.detail?.contact?.callsign}"/>
437
+ <remarks source="${node.callsign}">${msg.remarks || ev.detail?.remarks}</remarks>
438
+ </detail>
439
+ </event>`
440
+ msg.payload = msg.payload.replace(/>\s+</g, "><");
409
441
  node.send(msg);
410
442
  }
411
443