@tak-ps/node-tak 12.33.0 → 12.36.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.
@@ -297,4 +297,216 @@ test('Mission.getArchive throws on a TAK Server error instead of streaming an em
297
297
  mock.restore();
298
298
  }
299
299
  });
300
+ test('Mission.parent uses the name parent endpoint and unwraps the mission', async () => {
301
+ const originalRequest = Client.prototype.request;
302
+ let captured;
303
+ Client.prototype.request = async function (opts) {
304
+ captured = opts;
305
+ return mockResponse(200, 'application/json', JSON.stringify({
306
+ version: '3', type: 'Mission', nodeId: 'n', data: { name: 'parent-1', guid: '11111111-2222-3333-4444-555555555555' }
307
+ }));
308
+ };
309
+ try {
310
+ const api = new TAKAPI(new URL('https://tak.example.com'), new APIAuthCertificate('cert', 'key'));
311
+ const parent = await api.Mission.parent('child 1');
312
+ assert.ok(captured);
313
+ assert.equal(captured.method, 'GET');
314
+ assert.equal(captured.path, '/Marti/api/missions/child%201/parent');
315
+ assert.equal(parent.name, 'parent-1');
316
+ assert.equal(parent.description, '');
317
+ }
318
+ finally {
319
+ Client.prototype.request = originalRequest;
320
+ }
321
+ });
322
+ test('Mission.parent resolves a GUID to a name first', async () => {
323
+ const originalRequest = Client.prototype.request;
324
+ const paths = [];
325
+ Client.prototype.request = async function (opts) {
326
+ paths.push(String(opts.path));
327
+ if (paths.length === 1) {
328
+ return mockResponse(200, 'application/json', JSON.stringify({
329
+ version: '3', type: 'Mission', nodeId: 'n', data: [{ name: 'child-1', guid: '11111111-2222-3333-4444-555555555555' }]
330
+ }));
331
+ }
332
+ return mockResponse(200, 'application/json', JSON.stringify({
333
+ version: '3', type: 'Mission', nodeId: 'n', data: { name: 'parent-1', guid: '22222222-2222-3333-4444-555555555555' }
334
+ }));
335
+ };
336
+ try {
337
+ const api = new TAKAPI(new URL('https://tak.example.com'), new APIAuthCertificate('cert', 'key'));
338
+ const parent = await api.Mission.parent('11111111-2222-3333-4444-555555555555');
339
+ assert.deepEqual(paths, [
340
+ '/Marti/api/missions/guid/11111111-2222-3333-4444-555555555555',
341
+ '/Marti/api/missions/child-1/parent'
342
+ ]);
343
+ assert.equal(parent.name, 'parent-1');
344
+ }
345
+ finally {
346
+ Client.prototype.request = originalRequest;
347
+ }
348
+ });
349
+ test('Mission.clearParent issues a DELETE on the guid parent endpoint', async () => {
350
+ const originalRequest = Client.prototype.request;
351
+ let captured;
352
+ Client.prototype.request = async function (opts) {
353
+ captured = opts;
354
+ return mockResponse(200, 'text/plain', '');
355
+ };
356
+ try {
357
+ const api = new TAKAPI(new URL('https://tak.example.com'), new APIAuthCertificate('cert', 'key'));
358
+ const res = await api.Mission.clearParent('11111111-2222-3333-4444-555555555555');
359
+ assert.equal(res, undefined);
360
+ assert.ok(captured);
361
+ assert.equal(captured.method, 'DELETE');
362
+ assert.equal(captured.path, '/Marti/api/missions/guid/11111111-2222-3333-4444-555555555555/parent');
363
+ }
364
+ finally {
365
+ Client.prototype.request = originalRequest;
366
+ }
367
+ });
368
+ test('Mission.update sends defaultRole alongside the current mission values', async () => {
369
+ const originalRequest = Client.prototype.request;
370
+ const captured = [];
371
+ Client.prototype.request = async function (opts) {
372
+ captured.push(opts);
373
+ return mockResponse(200, 'application/json', JSON.stringify({
374
+ version: '3',
375
+ type: 'Mission',
376
+ data: [{
377
+ name: 'mission-1',
378
+ guid: '9d2b7a6e-3c4f-4e8a-9b1d-2f6a8c0e4b71',
379
+ createTime: '2024-01-01T00:00:00Z',
380
+ description: 'desc',
381
+ tool: 'public',
382
+ keywords: [],
383
+ externalData: [],
384
+ feeds: [],
385
+ mapLayers: [],
386
+ inviteOnly: false,
387
+ expiration: -1,
388
+ uids: [],
389
+ contents: [],
390
+ passwordProtected: false,
391
+ defaultRole: { type: 'MISSION_SUBSCRIBER', permissions: ['MISSION_READ', 'MISSION_WRITE'] },
392
+ groups: ['__ANON__']
393
+ }],
394
+ nodeId: 'node'
395
+ }));
396
+ };
397
+ try {
398
+ const api = new TAKAPI(new URL('https://tak.example.com'), new APIAuthCertificate('cert', 'key'));
399
+ const mission = await api.Mission.update('mission-1', {
400
+ defaultRole: MissionSubscriberRole.MISSION_READONLY_SUBSCRIBER
401
+ });
402
+ assert.equal(mission.defaultRole?.type, 'MISSION_SUBSCRIBER');
403
+ assert.equal(captured.length, 2);
404
+ assert.equal(captured[1].method, 'POST');
405
+ const url = new URL(String(captured[1].path), 'https://tak.example.com');
406
+ assert.equal(url.pathname, '/Marti/api/missions/mission-1');
407
+ assert.equal(url.searchParams.get('defaultRole'), 'MISSION_READONLY_SUBSCRIBER');
408
+ assert.equal(url.searchParams.get('description'), 'desc');
409
+ assert.equal(url.searchParams.get('group'), '__ANON__');
410
+ assert.equal(url.searchParams.get('allowDupe'), 'false');
411
+ }
412
+ finally {
413
+ Client.prototype.request = originalRequest;
414
+ }
415
+ });
416
+ test('Mission.update omits defaultRole when it is not provided', async () => {
417
+ const originalRequest = Client.prototype.request;
418
+ const captured = [];
419
+ Client.prototype.request = async function (opts) {
420
+ captured.push(opts);
421
+ return mockResponse(200, 'application/json', JSON.stringify({
422
+ version: '3',
423
+ type: 'Mission',
424
+ data: [{
425
+ name: 'mission-1',
426
+ guid: '9d2b7a6e-3c4f-4e8a-9b1d-2f6a8c0e4b71',
427
+ createTime: '2024-01-01T00:00:00Z',
428
+ description: 'desc',
429
+ tool: 'public',
430
+ keywords: [],
431
+ externalData: [],
432
+ feeds: [],
433
+ mapLayers: [],
434
+ inviteOnly: false,
435
+ expiration: -1,
436
+ uids: [],
437
+ contents: [],
438
+ passwordProtected: false,
439
+ defaultRole: { type: 'MISSION_SUBSCRIBER', permissions: [] }
440
+ }],
441
+ nodeId: 'node'
442
+ }));
443
+ };
444
+ try {
445
+ const api = new TAKAPI(new URL('https://tak.example.com'), new APIAuthCertificate('cert', 'key'));
446
+ await api.Mission.update('mission-1', { description: 'next' });
447
+ const url = new URL(String(captured[1].path), 'https://tak.example.com');
448
+ assert.equal(url.searchParams.has('defaultRole'), false);
449
+ assert.equal(url.searchParams.get('description'), 'next');
450
+ }
451
+ finally {
452
+ Client.prototype.request = originalRequest;
453
+ }
454
+ });
455
+ test('Mission.setPassword issues a PUT on the guid password endpoint', async () => {
456
+ const originalRequest = Client.prototype.request;
457
+ let captured;
458
+ Client.prototype.request = async function (opts) {
459
+ captured = opts;
460
+ return mockResponse(200, 'text/plain', '');
461
+ };
462
+ try {
463
+ const api = new TAKAPI(new URL('https://tak.example.com'), new APIAuthCertificate('cert', 'key'));
464
+ await api.Mission.setPassword('9d2b7a6e-3c4f-4e8a-9b1d-2f6a8c0e4b71', 'p%ss?w"rd', {
465
+ token: 'mission-token'
466
+ });
467
+ assert.ok(captured);
468
+ assert.equal(captured.method, 'PUT');
469
+ const url = new URL(String(captured.path), 'https://tak.example.com');
470
+ assert.equal(url.pathname, '/Marti/api/missions/guid/9d2b7a6e-3c4f-4e8a-9b1d-2f6a8c0e4b71/password');
471
+ assert.equal(url.searchParams.get('password'), 'p%ss?w"rd');
472
+ assert.equal(captured.headers.MissionAuthorization, 'Bearer mission-token');
473
+ }
474
+ finally {
475
+ Client.prototype.request = originalRequest;
476
+ }
477
+ });
478
+ test('Mission.setPassword rejects an empty password without calling TAK Server', async () => {
479
+ const originalRequest = Client.prototype.request;
480
+ let called = false;
481
+ Client.prototype.request = async function () {
482
+ called = true;
483
+ return mockResponse(200, 'text/plain', '');
484
+ };
485
+ try {
486
+ const api = new TAKAPI(new URL('https://tak.example.com'), new APIAuthCertificate('cert', 'key'));
487
+ await assert.rejects(api.Mission.setPassword('mission-1', ''), { status: 400, message: 'Mission Password cannot be empty' });
488
+ assert.equal(called, false);
489
+ }
490
+ finally {
491
+ Client.prototype.request = originalRequest;
492
+ }
493
+ });
494
+ test('Mission.removePassword issues a DELETE on the name password endpoint', async () => {
495
+ const originalRequest = Client.prototype.request;
496
+ let captured;
497
+ Client.prototype.request = async function (opts) {
498
+ captured = opts;
499
+ return mockResponse(200, 'text/plain', '');
500
+ };
501
+ try {
502
+ const api = new TAKAPI(new URL('https://tak.example.com'), new APIAuthCertificate('cert', 'key'));
503
+ await api.Mission.removePassword('Test Mission', undefined, 'creator-1');
504
+ assert.ok(captured);
505
+ assert.equal(captured.method, 'DELETE');
506
+ assert.equal(captured.path, '/Marti/api/missions/Test%20Mission/password?creatorUid=creator-1');
507
+ }
508
+ finally {
509
+ Client.prototype.request = originalRequest;
510
+ }
511
+ });
300
512
  //# sourceMappingURL=mission.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mission.test.js","sourceRoot":"","sources":["../../test/mission.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mission.test.js","sourceRoot":"","sources":["../../test/mission.test.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,12 @@ export const MissionChange = Type.Object({
54
54
  contentResource: Type.Optional(MissionContent)
55
55
  });
56
56
 
57
+ export const MissionRole = Type.Object({
58
+ permissions: Type.Array(Type.String()),
59
+ hibernateLazyInitializer: Type.Optional(Type.Any()),
60
+ type: Type.Enum(MissionSubscriberRole)
61
+ })
62
+
57
63
  export const Mission = Type.Object({
58
64
  name: Type.String(),
59
65
  description: Type.String(),
@@ -84,17 +90,12 @@ export const Mission = Type.Object({
84
90
  data: MissionContent
85
91
  })),
86
92
  passwordProtected: Type.Boolean(),
93
+ defaultRole: Type.Optional(MissionRole),
87
94
  token: Type.Optional(Type.String()), // Only present when mission created
88
95
  groups: Type.Optional(Type.Union([Type.String(), Type.Array(Type.String())])), // Only present on Mission.get()
89
96
  missionChanges: Type.Optional(Type.Array(MissionChange)) // Only present on Mission.get()
90
97
  });
91
98
 
92
- export const MissionRole = Type.Object({
93
- permissions: Type.Array(Type.String()),
94
- hibernateLazyInitializer: Type.Optional(Type.Any()),
95
- type: Type.Enum(MissionSubscriberRole)
96
- })
97
-
98
99
  export const MissionSubscriber = Type.Object({
99
100
  token: Type.Optional(Type.String()),
100
101
  clientUid: Type.String(),
@@ -176,8 +177,13 @@ export const GetInput = Type.Object({
176
177
 
177
178
  export const SetRoleInput = Type.Object({
178
179
  clientUid: Type.String(),
179
- username: Type.String(),
180
- role: Type.Enum(MissionSubscriberRole)
180
+ username: Type.Optional(Type.String()),
181
+ role: Type.Optional(Type.Enum(MissionSubscriberRole))
182
+ });
183
+
184
+ export const RemoveUserInput = Type.Object({
185
+ clientUid: Type.String(),
186
+ username: Type.Optional(Type.String())
181
187
  });
182
188
 
183
189
  export const MissionListInput = Type.Object({
@@ -238,11 +244,13 @@ export const MissionUpdateInput = Type.Object({
238
244
  tool: Type.Optional(Type.String()),
239
245
  expiration: Type.Optional(Type.Integer()),
240
246
  inviteOnly: Type.Optional(Type.Boolean()),
247
+ defaultRole: Type.Optional(Type.Enum(MissionSubscriberRole)),
241
248
  });
242
249
 
243
250
  export const GUIDMatch = new RegExp(/^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$/);
244
251
 
245
252
  export const TAKList_Mission = TAKList(Mission);
253
+ export const TAKItem_Mission = TAKItem(Mission);
246
254
  export const TAKList_MissionInvites = TAKList(Type.String());
247
255
  export const TAKList_MissionChange = TAKList(MissionChange);
248
256
  export const TAKList_MissionSubscriber = TAKList(MissionSubscriber);
@@ -484,6 +492,97 @@ export default class MissionCommands extends Commands {
484
492
  });
485
493
  }
486
494
 
495
+ /**
496
+ * Return the parent mission of a child mission
497
+ *
498
+ * TAK Server only exposes this by name, so a GUID is resolved to a name first.
499
+ * Throws a 404 when the mission has no parent.
500
+ *
501
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/getParent TAK Server Docs}.
502
+ */
503
+ async parent(
504
+ name: string,
505
+ opts?: Static<typeof MissionOptions>
506
+ ): Promise<Static<typeof Mission>> {
507
+ const missionName = this.#isGUID(name) ? (await this.get(name, {}, opts)).name : name;
508
+
509
+ const url = new URL(`/Marti/api/missions/${this.#encodeName(missionName)}/parent`, this.api.url);
510
+
511
+ const res: Static<typeof TAKItem_Mission> = await this.api.fetch(url, {
512
+ method: 'GET',
513
+ headers: this.#headers(opts)
514
+ });
515
+
516
+ return this.#stdMission(res.data);
517
+ }
518
+
519
+ /**
520
+ * Clear the parent mission of a child mission
521
+ *
522
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/clearParent TAK Server Docs}.
523
+ */
524
+ async clearParent(
525
+ child: string,
526
+ opts?: Static<typeof MissionOptions>
527
+ ): Promise<void> {
528
+ const url = this.#isGUID(child)
529
+ ? new URL(`/Marti/api/missions/guid/${encodeURIComponent(child)}/parent`, this.api.url)
530
+ : new URL(`/Marti/api/missions/${this.#encodeName(child)}/parent`, this.api.url);
531
+
532
+ await this.api.fetch(url, {
533
+ method: 'DELETE',
534
+ headers: this.#headers(opts)
535
+ });
536
+ }
537
+
538
+ /**
539
+ * Set or replace the password on a mission
540
+ *
541
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/setPassword TAK Server Docs}.
542
+ */
543
+ async setPassword(
544
+ name: string,
545
+ password: string,
546
+ opts?: Static<typeof MissionOptions>,
547
+ creatorUid?: string
548
+ ): Promise<void> {
549
+ if (!password.length) throw new Err(400, null, 'Mission Password cannot be empty');
550
+
551
+ const url = this.#isGUID(name)
552
+ ? new URL(`/Marti/api/missions/guid/${encodeURIComponent(name)}/password`, this.api.url)
553
+ : new URL(`/Marti/api/missions/${this.#encodeName(name)}/password`, this.api.url);
554
+
555
+ url.searchParams.append('password', password);
556
+ if (creatorUid !== undefined) url.searchParams.append('creatorUid', creatorUid);
557
+
558
+ await this.api.fetch(url, {
559
+ method: 'PUT',
560
+ headers: this.#headers(opts)
561
+ });
562
+ }
563
+
564
+ /**
565
+ * Remove the password from a mission
566
+ *
567
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/removePassword TAK Server Docs}.
568
+ */
569
+ async removePassword(
570
+ name: string,
571
+ opts?: Static<typeof MissionOptions>,
572
+ creatorUid?: string
573
+ ): Promise<void> {
574
+ const url = this.#isGUID(name)
575
+ ? new URL(`/Marti/api/missions/guid/${encodeURIComponent(name)}/password`, this.api.url)
576
+ : new URL(`/Marti/api/missions/${this.#encodeName(name)}/password`, this.api.url);
577
+
578
+ if (creatorUid !== undefined) url.searchParams.append('creatorUid', creatorUid);
579
+
580
+ await this.api.fetch(url, {
581
+ method: 'DELETE',
582
+ headers: this.#headers(opts)
583
+ });
584
+ }
585
+
487
586
  /**
488
587
  * Remove a file from the mission
489
588
  *
@@ -592,6 +691,8 @@ export default class MissionCommands extends Commands {
592
691
  /**
593
692
  * Set the Role of a given user on a Mission
594
693
  *
694
+ * Omitting `role` removes the subscriber instead (see `removeUser`)
695
+ *
595
696
  * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/setMissionRole TAK Server Docs}.
596
697
  */
597
698
  async setRole(
@@ -616,6 +717,25 @@ export default class MissionCommands extends Commands {
616
717
  });
617
718
  }
618
719
 
720
+ /**
721
+ * Remove another subscriber from a Mission
722
+ *
723
+ * Uses `PUT .../role` without a `role` parameter, which TAK Server treats as an
724
+ * unsubscribe of the target user; requires `MISSION_SET_ROLE`. The
725
+ * `DELETE .../subscription` endpoint only ever removes the caller's own subscription.
726
+ * When `username` is omitted the subscription is matched by `clientUid` alone.
727
+ */
728
+ async removeUser(
729
+ name: string,
730
+ query: Static<typeof RemoveUserInput>,
731
+ opts?: Static<typeof MissionOptions>
732
+ ): Promise<void> {
733
+ await this.setRole(name, {
734
+ clientUid: query.clientUid,
735
+ username: query.username
736
+ }, opts);
737
+ }
738
+
619
739
  /**
620
740
  * Return Role associated with a given mission if subscribed
621
741
  *
@@ -837,7 +957,8 @@ export default class MissionCommands extends Commands {
837
957
  classification: body.classification ?? mission.classification,
838
958
  tool: body.tool ?? mission.tool,
839
959
  expiration: body.expiration ?? mission.expiration,
840
- inviteOnly: body.inviteOnly ?? mission.inviteOnly
960
+ inviteOnly: body.inviteOnly ?? mission.inviteOnly,
961
+ defaultRole: body.defaultRole
841
962
  };
842
963
 
843
964
  // Group changes by non-admin Mission Owners require `allowGroupChange=true`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tak-ps/node-tak",
3
3
  "type": "module",
4
- "version": "12.33.0",
4
+ "version": "12.36.0",
5
5
  "description": "Lightweight JavaScript library for communicating with TAK Server",
6
6
  "author": "Nick Ingalls <nick@ingalls.ca>",
7
7
  "main": "dist/index.js",