@tak-ps/node-tak 12.23.0 → 12.24.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.
- package/CHANGELOG.md +13 -0
- package/dist/lib/api/credentials.d.ts +3 -1
- package/dist/lib/api/credentials.js +23 -10
- package/dist/lib/api/credentials.js.map +1 -1
- package/dist/lib/api/mission-layer.d.ts +5 -6
- package/dist/lib/api/mission-layer.js +10 -4
- package/dist/lib/api/mission-layer.js.map +1 -1
- package/dist/lib/api/mission.d.ts +436 -2
- package/dist/lib/api/mission.js +38 -11
- package/dist/lib/api/mission.js.map +1 -1
- package/dist/test/mission-layer.test.d.ts +1 -0
- package/dist/test/mission-layer.test.js +105 -0
- package/dist/test/mission-layer.test.js.map +1 -0
- package/dist/test/mission.test.d.ts +1 -0
- package/dist/test/mission.test.js +137 -0
- package/dist/test/mission.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/lib/api/credentials.ts +23 -9
- package/lib/api/mission-layer.ts +12 -7
- package/lib/api/mission.ts +40 -11
- package/package.json +3 -3
- package/test/mission-layer.test.ts +137 -0
- package/test/mission.test.ts +173 -0
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Static } from '@sinclair/typebox';
|
|
2
2
|
import { Readable } from 'node:stream';
|
|
3
|
-
import type { Feature } from '@tak-ps/node-cot';
|
|
4
3
|
import Commands, { CommandOutputFormat, type ParsedArgs } from '../commands.js';
|
|
5
4
|
export declare enum MissionSubscriberRole {
|
|
6
5
|
MISSION_OWNER = "MISSION_OWNER",
|
|
@@ -165,6 +164,437 @@ export declare const MissionSubscriber: import("@sinclair/typebox").TObject<{
|
|
|
165
164
|
export declare const MissionOptions: import("@sinclair/typebox").TObject<{
|
|
166
165
|
token: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
167
166
|
}>;
|
|
167
|
+
/**
|
|
168
|
+
* A Mission CoT that could not be parsed or failed validation,
|
|
169
|
+
* with the raw xml-js event included so the caller can extract
|
|
170
|
+
* whatever context (UID, Callsign, etc.) it needs
|
|
171
|
+
*/
|
|
172
|
+
export declare const MissionInvalidFeature: import("@sinclair/typebox").TObject<{
|
|
173
|
+
error: import("@sinclair/typebox").TString;
|
|
174
|
+
feature: import("@sinclair/typebox").TUnknown;
|
|
175
|
+
}>;
|
|
176
|
+
export declare const MissionLatestFeats: import("@sinclair/typebox").TObject<{
|
|
177
|
+
features: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
178
|
+
id: import("@sinclair/typebox").TString;
|
|
179
|
+
type: import("@sinclair/typebox").TLiteral<"Feature">;
|
|
180
|
+
properties: import("@sinclair/typebox").TObject<{
|
|
181
|
+
callsign: import("@sinclair/typebox").TString;
|
|
182
|
+
type: import("@sinclair/typebox").TString;
|
|
183
|
+
how: import("@sinclair/typebox").TString;
|
|
184
|
+
time: import("@sinclair/typebox").TString;
|
|
185
|
+
start: import("@sinclair/typebox").TString;
|
|
186
|
+
stale: import("@sinclair/typebox").TString;
|
|
187
|
+
center: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
|
|
188
|
+
minzoom: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
189
|
+
maxzoom: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
190
|
+
rotate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
191
|
+
range: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
192
|
+
bearing: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
193
|
+
creator: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
194
|
+
uid: import("@sinclair/typebox").TString;
|
|
195
|
+
callsign: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
196
|
+
time: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
197
|
+
type: import("@sinclair/typebox").TString;
|
|
198
|
+
}>>;
|
|
199
|
+
course: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
200
|
+
slope: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
201
|
+
speed: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
202
|
+
labels: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
203
|
+
"marker-color": import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
204
|
+
"marker-opacity": import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
205
|
+
stroke: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
206
|
+
"stroke-opacity": import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
207
|
+
"stroke-width": import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
208
|
+
"stroke-style": import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
209
|
+
fill: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
210
|
+
"fill-opacity": import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
211
|
+
metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
|
|
212
|
+
archived: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
213
|
+
forcedelete: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
214
|
+
geofence: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
215
|
+
elevationMonitored: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
216
|
+
minElevation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
217
|
+
maxElevation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
218
|
+
monitor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
219
|
+
trigger: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
220
|
+
tracking: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
221
|
+
boundingSphere: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
222
|
+
}>>;
|
|
223
|
+
contact: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
224
|
+
phone: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
225
|
+
name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
226
|
+
callsign: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
227
|
+
endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
228
|
+
}>>;
|
|
229
|
+
shape: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
230
|
+
ellipse: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
231
|
+
major: import("@sinclair/typebox").TNumber;
|
|
232
|
+
minor: import("@sinclair/typebox").TNumber;
|
|
233
|
+
angle: import("@sinclair/typebox").TNumber;
|
|
234
|
+
swapAxis: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
235
|
+
}>>;
|
|
236
|
+
}>>;
|
|
237
|
+
remarks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
238
|
+
milsym: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
239
|
+
id: import("@sinclair/typebox").TString;
|
|
240
|
+
}>>;
|
|
241
|
+
milicon: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
242
|
+
id: import("@sinclair/typebox").TString;
|
|
243
|
+
}>>;
|
|
244
|
+
mission: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
245
|
+
type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
246
|
+
tool: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
247
|
+
guid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
248
|
+
name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
249
|
+
authorUid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
250
|
+
missionLayer: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
251
|
+
name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
252
|
+
parentUid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
253
|
+
type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
254
|
+
uid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
255
|
+
}>>;
|
|
256
|
+
missionChanges: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
257
|
+
contentUid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
258
|
+
creatorUid: import("@sinclair/typebox").TString;
|
|
259
|
+
isFederatedChange: import("@sinclair/typebox").TBoolean;
|
|
260
|
+
missionName: import("@sinclair/typebox").TString;
|
|
261
|
+
timestamp: import("@sinclair/typebox").TString;
|
|
262
|
+
type: import("@sinclair/typebox").TString;
|
|
263
|
+
contentResource: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
264
|
+
expiration: import("@sinclair/typebox").TString;
|
|
265
|
+
filename: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
266
|
+
hash: import("@sinclair/typebox").TString;
|
|
267
|
+
name: import("@sinclair/typebox").TString;
|
|
268
|
+
size: import("@sinclair/typebox").TInteger;
|
|
269
|
+
submissionTime: import("@sinclair/typebox").TString;
|
|
270
|
+
submitter: import("@sinclair/typebox").TString;
|
|
271
|
+
tool: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
272
|
+
uid: import("@sinclair/typebox").TString;
|
|
273
|
+
}>>;
|
|
274
|
+
details: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
275
|
+
type: import("@sinclair/typebox").TString;
|
|
276
|
+
callsign: import("@sinclair/typebox").TString;
|
|
277
|
+
color: import("@sinclair/typebox").TString;
|
|
278
|
+
lat: import("@sinclair/typebox").TString;
|
|
279
|
+
lon: import("@sinclair/typebox").TString;
|
|
280
|
+
}>>;
|
|
281
|
+
}>>>;
|
|
282
|
+
}>>;
|
|
283
|
+
fileshare: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
284
|
+
filename: import("@sinclair/typebox").TString;
|
|
285
|
+
name: import("@sinclair/typebox").TString;
|
|
286
|
+
senderCallsign: import("@sinclair/typebox").TString;
|
|
287
|
+
senderUid: import("@sinclair/typebox").TString;
|
|
288
|
+
senderUrl: import("@sinclair/typebox").TString;
|
|
289
|
+
sha256: import("@sinclair/typebox").TString;
|
|
290
|
+
sizeInBytes: import("@sinclair/typebox").TInteger;
|
|
291
|
+
}>>;
|
|
292
|
+
ackrequest: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
293
|
+
uid: import("@sinclair/typebox").TString;
|
|
294
|
+
ackrequested: import("@sinclair/typebox").TBoolean;
|
|
295
|
+
tag: import("@sinclair/typebox").TString;
|
|
296
|
+
}>>;
|
|
297
|
+
attachments: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
298
|
+
sensor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
299
|
+
elevation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
300
|
+
vfov: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
301
|
+
fov: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
302
|
+
roll: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
303
|
+
range: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
304
|
+
azimuth: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
305
|
+
north: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
306
|
+
fovBlue: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
307
|
+
fovAlpha: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
308
|
+
fovGreen: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
309
|
+
fovRed: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
310
|
+
strokeWeight: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
311
|
+
strokeColor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
312
|
+
rangeLines: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
313
|
+
rangeLineStrokeWeight: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
314
|
+
rangeLineStrokeColor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
315
|
+
displayMagneticReference: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
316
|
+
hideFov: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
317
|
+
type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
318
|
+
version: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
319
|
+
model: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
320
|
+
}>>;
|
|
321
|
+
video: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
322
|
+
uid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
323
|
+
url: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
324
|
+
sensor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
325
|
+
spi: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
326
|
+
connection: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
327
|
+
uid: import("@sinclair/typebox").TString;
|
|
328
|
+
address: import("@sinclair/typebox").TString;
|
|
329
|
+
networkTimeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
330
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
331
|
+
protocol: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
332
|
+
bufferTime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
333
|
+
port: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
334
|
+
roverPort: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
335
|
+
rtspReliable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
336
|
+
ignoreEmbeddedKLV: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
337
|
+
alias: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
338
|
+
}>>;
|
|
339
|
+
}>>;
|
|
340
|
+
links: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
341
|
+
uid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
342
|
+
relation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
343
|
+
type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
344
|
+
point: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
345
|
+
callsign: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
346
|
+
mission: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
347
|
+
event: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
348
|
+
url: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
349
|
+
mime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
350
|
+
remarks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
351
|
+
production_time: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
352
|
+
parent_callsign: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
353
|
+
}>>>;
|
|
354
|
+
chat: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
355
|
+
parent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
356
|
+
groupOwner: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
357
|
+
messageId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
358
|
+
chatroom: import("@sinclair/typebox").TString;
|
|
359
|
+
id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
360
|
+
senderCallsign: import("@sinclair/typebox").TString;
|
|
361
|
+
chatgrp: import("@sinclair/typebox").TAny;
|
|
362
|
+
}>>;
|
|
363
|
+
track: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
364
|
+
speed: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
365
|
+
course: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
366
|
+
slope: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
367
|
+
eCourse: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
368
|
+
eSpeed: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
369
|
+
eSlope: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
370
|
+
}>>;
|
|
371
|
+
dest: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
372
|
+
uid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
373
|
+
callsign: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
374
|
+
group: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
375
|
+
mission: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
376
|
+
"mission-guid": import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
377
|
+
after: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
378
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
379
|
+
}>, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
380
|
+
uid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
381
|
+
callsign: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
382
|
+
group: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
383
|
+
mission: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
384
|
+
"mission-guid": import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
385
|
+
after: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
386
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
387
|
+
}>>]>>;
|
|
388
|
+
marti_archive: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
389
|
+
icon: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
390
|
+
droid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
391
|
+
takv: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
392
|
+
device: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
393
|
+
platform: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
394
|
+
os: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
395
|
+
version: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
396
|
+
}>>;
|
|
397
|
+
group: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
398
|
+
name: import("@sinclair/typebox").TString;
|
|
399
|
+
role: import("@sinclair/typebox").TString;
|
|
400
|
+
}>>;
|
|
401
|
+
status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
402
|
+
battery: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
403
|
+
readiness: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
404
|
+
}>>;
|
|
405
|
+
precisionlocation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
406
|
+
geopointsrc: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
407
|
+
altsrc: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
408
|
+
}>>;
|
|
409
|
+
flow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>;
|
|
410
|
+
radsensordetail: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
411
|
+
sensor_data: import("@sinclair/typebox").TObject<{
|
|
412
|
+
time: import("@sinclair/typebox").TString;
|
|
413
|
+
model: import("@sinclair/typebox").TString;
|
|
414
|
+
neutronstatus: import("@sinclair/typebox").TString;
|
|
415
|
+
gammastatus: import("@sinclair/typebox").TString;
|
|
416
|
+
manufacturer: import("@sinclair/typebox").TString;
|
|
417
|
+
callsign: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
418
|
+
serialnumber: import("@sinclair/typebox").TString;
|
|
419
|
+
batterylevel: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
420
|
+
id_algorithm: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
421
|
+
search_algorithm: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
422
|
+
alarm_algorithm: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
423
|
+
ordinal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
424
|
+
subchannel: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
425
|
+
measurement_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
426
|
+
master_sensor_manufacturer: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
427
|
+
master_sensor_serial: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
428
|
+
source_bearing: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
429
|
+
source_strength: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
430
|
+
relay_type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
431
|
+
module_location: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
432
|
+
detector_number: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
433
|
+
mission_total_mR: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
434
|
+
mission_stay_time_sec: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
435
|
+
mission_acquired_uR: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
436
|
+
sensor_temp_deg_c: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
437
|
+
heading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
438
|
+
source_distance: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TEnum<{
|
|
439
|
+
MOVE_MUCH_CLOSER: "MOVE_MUCH_CLOSER";
|
|
440
|
+
MOVE_CLOSER: "MOVE_CLOSER";
|
|
441
|
+
OPTIMAL: "OPTIMAL";
|
|
442
|
+
MOVE_AWAY: "MOVE_AWAY";
|
|
443
|
+
MOVE_FAR_AWAY: "MOVE_FAR_AWAY";
|
|
444
|
+
}>>;
|
|
445
|
+
attachedUid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
446
|
+
simulated: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
447
|
+
}>;
|
|
448
|
+
radmeasurement: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
449
|
+
nalarmstddev: import("@sinclair/typebox").TInteger;
|
|
450
|
+
alarm: import("@sinclair/typebox").TInteger;
|
|
451
|
+
measurement: import("@sinclair/typebox").TNumber;
|
|
452
|
+
name: import("@sinclair/typebox").TEnum<{
|
|
453
|
+
alpha: "alpha";
|
|
454
|
+
beta: "beta";
|
|
455
|
+
gamma: "gamma";
|
|
456
|
+
neutron: "neutron";
|
|
457
|
+
doserate: "doserate";
|
|
458
|
+
}>;
|
|
459
|
+
}>>>;
|
|
460
|
+
physical_module: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
461
|
+
location: import("@sinclair/typebox").TEnum<{
|
|
462
|
+
FRONT_LEFT: "FRONT_LEFT";
|
|
463
|
+
FRONT_RIGHT: "FRONT_RIGHT";
|
|
464
|
+
REAR_LEFT: "REAR_LEFT";
|
|
465
|
+
REAR_RIGHT: "REAR_RIGHT";
|
|
466
|
+
CAB: "CAB";
|
|
467
|
+
}>;
|
|
468
|
+
gamma_cps: import("@sinclair/typebox").TNumber;
|
|
469
|
+
gamma_alarm: import("@sinclair/typebox").TInteger;
|
|
470
|
+
gamma_dose_rate: import("@sinclair/typebox").TNumber;
|
|
471
|
+
}>>>;
|
|
472
|
+
search_algorithm: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
473
|
+
neutron_loc: import("@sinclair/typebox").TNumber;
|
|
474
|
+
gamma_loc: import("@sinclair/typebox").TNumber;
|
|
475
|
+
neutron_loc_alarm_value: import("@sinclair/typebox").TNumber;
|
|
476
|
+
gamma_loc_alarm_value: import("@sinclair/typebox").TNumber;
|
|
477
|
+
neutron_loc_alarm: import("@sinclair/typebox").TInteger;
|
|
478
|
+
gamma_loc_alarm: import("@sinclair/typebox").TInteger;
|
|
479
|
+
}>>;
|
|
480
|
+
spectrum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
481
|
+
zerocompression: import("@sinclair/typebox").TInteger;
|
|
482
|
+
type: import("@sinclair/typebox").TString;
|
|
483
|
+
livetime_ms: import("@sinclair/typebox").TString;
|
|
484
|
+
realtime_ms: import("@sinclair/typebox").TString;
|
|
485
|
+
channeldata: import("@sinclair/typebox").TString;
|
|
486
|
+
crystal_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
487
|
+
}>>>;
|
|
488
|
+
isotope: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
489
|
+
confidence: import("@sinclair/typebox").TNumber;
|
|
490
|
+
name: import("@sinclair/typebox").TString;
|
|
491
|
+
type: import("@sinclair/typebox").TString;
|
|
492
|
+
}>>>;
|
|
493
|
+
data_permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
494
|
+
all: import("@sinclair/typebox").TBoolean;
|
|
495
|
+
contact_list: import("@sinclair/typebox").TString;
|
|
496
|
+
}>>;
|
|
497
|
+
command_permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
498
|
+
all: import("@sinclair/typebox").TBoolean;
|
|
499
|
+
contact_list: import("@sinclair/typebox").TString;
|
|
500
|
+
}>>;
|
|
501
|
+
}>>;
|
|
502
|
+
chemsensordetail: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
503
|
+
sensor_data: import("@sinclair/typebox").TObject<{
|
|
504
|
+
manufacturer: import("@sinclair/typebox").TString;
|
|
505
|
+
model: import("@sinclair/typebox").TString;
|
|
506
|
+
serialnumber: import("@sinclair/typebox").TString;
|
|
507
|
+
batterylevel: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
508
|
+
callsign: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
509
|
+
revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
510
|
+
status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
511
|
+
ordinal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
512
|
+
attachedUid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
513
|
+
simulated: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
514
|
+
}>;
|
|
515
|
+
detection: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
516
|
+
time: import("@sinclair/typebox").TString;
|
|
517
|
+
agent: import("@sinclair/typebox").TString;
|
|
518
|
+
quantity: import("@sinclair/typebox").TNumber;
|
|
519
|
+
quantityunits: import("@sinclair/typebox").TString;
|
|
520
|
+
concentration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
521
|
+
alarm: import("@sinclair/typebox").TNumber;
|
|
522
|
+
confidence: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
523
|
+
massfraction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
524
|
+
percent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
525
|
+
class: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
526
|
+
id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
527
|
+
}>>>;
|
|
528
|
+
}>>;
|
|
529
|
+
biosensordetail: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
530
|
+
sensor_data: import("@sinclair/typebox").TObject<{
|
|
531
|
+
manufacturer: import("@sinclair/typebox").TString;
|
|
532
|
+
model: import("@sinclair/typebox").TString;
|
|
533
|
+
serialnumber: import("@sinclair/typebox").TString;
|
|
534
|
+
batterylevel: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
535
|
+
callsign: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
536
|
+
revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
537
|
+
status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
538
|
+
ordinal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
539
|
+
attachedUid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
540
|
+
simulated: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
541
|
+
}>;
|
|
542
|
+
measurement: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
543
|
+
type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
544
|
+
time: import("@sinclair/typebox").TString;
|
|
545
|
+
confidence: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
546
|
+
concentration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
547
|
+
bioClass: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
548
|
+
channel: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
549
|
+
harmful: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
550
|
+
doseTime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
551
|
+
dose: import("@sinclair/typebox").TNumber;
|
|
552
|
+
confirmationLevel: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
553
|
+
sampleId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
554
|
+
persistency: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
555
|
+
level: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
556
|
+
levelName: import("@sinclair/typebox").TString;
|
|
557
|
+
levelValue: import("@sinclair/typebox").TString;
|
|
558
|
+
}>>>;
|
|
559
|
+
}>>>;
|
|
560
|
+
}>>;
|
|
561
|
+
spatial: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
562
|
+
version: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
563
|
+
attitude: import("@sinclair/typebox").TObject<{
|
|
564
|
+
roll: import("@sinclair/typebox").TNumber;
|
|
565
|
+
pitch: import("@sinclair/typebox").TNumber;
|
|
566
|
+
yaw: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
567
|
+
eRoll: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
568
|
+
ePitch: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
569
|
+
eYaw: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
570
|
+
}>;
|
|
571
|
+
spin: import("@sinclair/typebox").TObject<{
|
|
572
|
+
roll: import("@sinclair/typebox").TNumber;
|
|
573
|
+
pitch: import("@sinclair/typebox").TNumber;
|
|
574
|
+
yaw: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
575
|
+
eRoll: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
576
|
+
ePitch: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
577
|
+
eYaw: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
578
|
+
}>;
|
|
579
|
+
}>>;
|
|
580
|
+
}>;
|
|
581
|
+
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
582
|
+
geometry: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
583
|
+
type: import("@sinclair/typebox").TLiteral<"Point">;
|
|
584
|
+
coordinates: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>;
|
|
585
|
+
}>, import("@sinclair/typebox").TObject<{
|
|
586
|
+
type: import("@sinclair/typebox").TLiteral<"LineString">;
|
|
587
|
+
coordinates: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>;
|
|
588
|
+
}>, import("@sinclair/typebox").TObject<{
|
|
589
|
+
type: import("@sinclair/typebox").TLiteral<"Polygon">;
|
|
590
|
+
coordinates: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TNumber>>>;
|
|
591
|
+
}>]>;
|
|
592
|
+
}>>;
|
|
593
|
+
invalid: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
594
|
+
error: import("@sinclair/typebox").TString;
|
|
595
|
+
feature: import("@sinclair/typebox").TUnknown;
|
|
596
|
+
}>>;
|
|
597
|
+
}>;
|
|
168
598
|
export declare const AttachContentsInput: import("@sinclair/typebox").TObject<{
|
|
169
599
|
hashes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
170
600
|
uids: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
@@ -461,8 +891,12 @@ export default class MissionCommands extends Commands {
|
|
|
461
891
|
changes(name: string, query: Static<typeof MissionChangesInput>, opts?: Static<typeof MissionOptions>): Promise<Static<typeof TAKList_MissionChange>>;
|
|
462
892
|
/**
|
|
463
893
|
* Return all current features in the Data Sync as CoT GeoJSON Features
|
|
894
|
+
*
|
|
895
|
+
* Each CoT in the TAK Server response is parsed & validated individually -
|
|
896
|
+
* those that fail are returned in the `invalid` array so a single poisoned
|
|
897
|
+
* CoT doesn't prevent the valid features from being returned
|
|
464
898
|
*/
|
|
465
|
-
latestFeats(name: string, opts?: Static<typeof MissionOptions>): Promise<Static<typeof
|
|
899
|
+
latestFeats(name: string, opts?: Static<typeof MissionOptions>): Promise<Static<typeof MissionLatestFeats>>;
|
|
466
900
|
/**
|
|
467
901
|
* Return all current features in the Data Sync as CoT GeoJSON Features
|
|
468
902
|
*
|
package/dist/lib/api/mission.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import CoT, { CoTParser } from '@tak-ps/node-cot';
|
|
1
|
+
import { CoTParser } from '@tak-ps/node-cot';
|
|
3
2
|
import { Type } from '@sinclair/typebox';
|
|
4
3
|
import Err from '@openaddresses/batch-error';
|
|
5
4
|
import { TAKItem, TAKList } from './types.js';
|
|
6
5
|
import { MissionLog } from './mission-log.js';
|
|
6
|
+
import { Feature } from '@tak-ps/node-cot';
|
|
7
7
|
import Commands, { CommandOutputFormat } from '../commands.js';
|
|
8
8
|
export var MissionSubscriberRole;
|
|
9
9
|
(function (MissionSubscriberRole) {
|
|
@@ -99,6 +99,19 @@ export const MissionSubscriber = Type.Object({
|
|
|
99
99
|
export const MissionOptions = Type.Object({
|
|
100
100
|
token: Type.Optional(Type.String())
|
|
101
101
|
});
|
|
102
|
+
/**
|
|
103
|
+
* A Mission CoT that could not be parsed or failed validation,
|
|
104
|
+
* with the raw xml-js event included so the caller can extract
|
|
105
|
+
* whatever context (UID, Callsign, etc.) it needs
|
|
106
|
+
*/
|
|
107
|
+
export const MissionInvalidFeature = Type.Object({
|
|
108
|
+
error: Type.String(),
|
|
109
|
+
feature: Type.Unknown()
|
|
110
|
+
});
|
|
111
|
+
export const MissionLatestFeats = Type.Object({
|
|
112
|
+
features: Type.Array(Feature.Feature),
|
|
113
|
+
invalid: Type.Array(MissionInvalidFeature)
|
|
114
|
+
});
|
|
102
115
|
export const AttachContentsInput = Type.Object({
|
|
103
116
|
hashes: Type.Optional(Type.Array(Type.String())),
|
|
104
117
|
uids: Type.Optional(Type.Array(Type.String())),
|
|
@@ -282,18 +295,32 @@ export default class MissionCommands extends Commands {
|
|
|
282
295
|
}
|
|
283
296
|
/**
|
|
284
297
|
* Return all current features in the Data Sync as CoT GeoJSON Features
|
|
298
|
+
*
|
|
299
|
+
* Each CoT in the TAK Server response is parsed & validated individually -
|
|
300
|
+
* those that fail are returned in the `invalid` array so a single poisoned
|
|
301
|
+
* CoT doesn't prevent the valid features from being returned
|
|
285
302
|
*/
|
|
286
303
|
async latestFeats(name, opts) {
|
|
287
|
-
const
|
|
288
|
-
const res =
|
|
289
|
-
|
|
290
|
-
return
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
304
|
+
const features = [];
|
|
305
|
+
const res = CoTParser.from_xml_document(await this.latestCots(name, opts));
|
|
306
|
+
const invalid = res.invalid.map((entry) => {
|
|
307
|
+
return {
|
|
308
|
+
error: entry.error,
|
|
309
|
+
feature: entry.event
|
|
310
|
+
};
|
|
311
|
+
});
|
|
312
|
+
for (const cot of res.cots) {
|
|
313
|
+
try {
|
|
314
|
+
features.push(await CoTParser.to_geojson(cot));
|
|
315
|
+
}
|
|
316
|
+
catch (err) {
|
|
317
|
+
invalid.push({
|
|
318
|
+
error: err instanceof Error ? err.message : String(err),
|
|
319
|
+
feature: cot.raw.event
|
|
320
|
+
});
|
|
321
|
+
}
|
|
295
322
|
}
|
|
296
|
-
return
|
|
323
|
+
return { features, invalid };
|
|
297
324
|
}
|
|
298
325
|
/**
|
|
299
326
|
* Return all current features in the Data Sync as CoT GeoJSON Features
|