@tak-ps/node-tak 11.20.2 → 11.22.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 CHANGED
@@ -10,6 +10,14 @@
10
10
 
11
11
  ## Version History
12
12
 
13
+ ### v11.22.0 - 2025-01-05
14
+
15
+ - :rocket: Add Mission Invite Get and improve List Support
16
+
17
+ ### v11.21.0 - 2025-01-05
18
+
19
+ - :tada: Add Mission Invite & Uninvite Support
20
+
13
21
  ### v11.20.2 - 2025-12-24
14
22
 
15
23
  - :bug: Update Github Actions Workflow
@@ -1,16 +1,50 @@
1
1
  import type { ParsedArgs } from 'minimist';
2
2
  import { Static } from '@sinclair/typebox';
3
+ import { MissionOptions } from './mission.js';
3
4
  import Commands, { CommandOutputFormat } from '../commands.js';
4
5
  export declare enum MissionSubscriberRole {
5
6
  MISSION_OWNER = "MISSION_OWNER",
6
7
  MISSION_SUBSCRIBER = "MISSION_SUBSCRIBER",
7
8
  MISSION_READONLY_SUBSCRIBER = "MISSION_READONLY_SUBSCRIBER"
8
9
  }
9
- export declare const MissionInvite: import("@sinclair/typebox").TString;
10
+ export declare enum MissionInviteType {
11
+ CLIENT_UID = "clientUid",
12
+ CALLSIGN = "callsign",
13
+ USERNAME = "userName",
14
+ GROUP = "group",
15
+ TEAM = "team"
16
+ }
17
+ export declare const MissionInvite: import("@sinclair/typebox").TAny;
18
+ export declare const MissionInviteList: import("@sinclair/typebox").TObject<{
19
+ version: import("@sinclair/typebox").TString;
20
+ type: import("@sinclair/typebox").TString;
21
+ data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>;
22
+ messages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
23
+ nodeId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
24
+ }>;
25
+ export declare const MissionInviteWrapper: import("@sinclair/typebox").TObject<{
26
+ name: import("@sinclair/typebox").TString;
27
+ invites: import("@sinclair/typebox").TObject<{
28
+ version: import("@sinclair/typebox").TString;
29
+ type: import("@sinclair/typebox").TString;
30
+ data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>;
31
+ messages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
32
+ nodeId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
33
+ }>;
34
+ }>;
10
35
  export declare const TAKList_MissionInvites: import("@sinclair/typebox").TObject<{
11
36
  version: import("@sinclair/typebox").TString;
12
37
  type: import("@sinclair/typebox").TString;
13
- data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
38
+ data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
39
+ name: import("@sinclair/typebox").TString;
40
+ invites: import("@sinclair/typebox").TObject<{
41
+ version: import("@sinclair/typebox").TString;
42
+ type: import("@sinclair/typebox").TString;
43
+ data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>;
44
+ messages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
45
+ nodeId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
46
+ }>;
47
+ }>>;
14
48
  messages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
15
49
  nodeId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
16
50
  }>;
@@ -18,6 +52,7 @@ export declare const TAKList_MissionInvites: import("@sinclair/typebox").TObject
18
52
  * @class
19
53
  */
20
54
  export default class MissionInviteCommands extends Commands {
55
+ #private;
21
56
  schema: {
22
57
  list: {
23
58
  description: string;
@@ -25,6 +60,39 @@ export default class MissionInviteCommands extends Commands {
25
60
  query: import("@sinclair/typebox").TObject<{}>;
26
61
  formats: CommandOutputFormat[];
27
62
  };
63
+ get: {
64
+ description: string;
65
+ params: import("@sinclair/typebox").TObject<{
66
+ name: import("@sinclair/typebox").TString;
67
+ }>;
68
+ query: import("@sinclair/typebox").TObject<{}>;
69
+ formats: CommandOutputFormat[];
70
+ };
71
+ invite: {
72
+ description: string;
73
+ params: import("@sinclair/typebox").TObject<{
74
+ name: import("@sinclair/typebox").TString;
75
+ type: import("@sinclair/typebox").TEnum<typeof MissionInviteType>;
76
+ invitee: import("@sinclair/typebox").TString;
77
+ }>;
78
+ query: import("@sinclair/typebox").TObject<{
79
+ creatorUid: import("@sinclair/typebox").TString;
80
+ role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TEnum<typeof MissionSubscriberRole>>;
81
+ }>;
82
+ formats: CommandOutputFormat[];
83
+ };
84
+ uninvite: {
85
+ description: string;
86
+ params: import("@sinclair/typebox").TObject<{
87
+ name: import("@sinclair/typebox").TString;
88
+ type: import("@sinclair/typebox").TEnum<typeof MissionInviteType>;
89
+ invitee: import("@sinclair/typebox").TString;
90
+ }>;
91
+ query: import("@sinclair/typebox").TObject<{
92
+ creatorUid: import("@sinclair/typebox").TString;
93
+ }>;
94
+ formats: CommandOutputFormat[];
95
+ };
28
96
  };
29
97
  cli(args: ParsedArgs): Promise<object | string>;
30
98
  /**
@@ -32,5 +100,28 @@ export default class MissionInviteCommands extends Commands {
32
100
  *
33
101
  * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/getAllMissionInvitations TAK Server Docs}.
34
102
  */
35
- list(clientUid?: string): Promise<Static<typeof TAKList_MissionInvites>>;
103
+ list(clientUid?: string, opts?: Static<typeof MissionOptions>): Promise<Static<typeof TAKList_MissionInvites>>;
104
+ /**
105
+ * Get Mission Invitations
106
+ *
107
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/getMissionInvitations TAK Server Docs}.
108
+ */
109
+ get(missionName: string, opts?: Static<typeof MissionOptions>): Promise<Static<typeof MissionInviteList>>;
110
+ /**
111
+ * Invite a user/group to a mission
112
+ *
113
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/inviteToMission TAK Server Docs}.
114
+ */
115
+ invite(missionName: string, type: MissionInviteType, invitee: string, query: {
116
+ creatorUid: string;
117
+ role?: MissionSubscriberRole;
118
+ }, opts?: Static<typeof MissionOptions>): Promise<void>;
119
+ /**
120
+ * Uninvite a user/group from a mission
121
+ *
122
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/uninviteFromMission TAK Server Docs}.
123
+ */
124
+ uninvite(missionName: string, type: MissionInviteType, invitee: string, query: {
125
+ creatorUid: string;
126
+ }, opts?: Static<typeof MissionOptions>): Promise<void>;
36
127
  }
@@ -1,5 +1,6 @@
1
1
  import { Type } from '@sinclair/typebox';
2
2
  import { TAKList } from './types.js';
3
+ import { GUIDMatch } from './mission.js';
3
4
  import Commands, { CommandOutputFormat } from '../commands.js';
4
5
  export var MissionSubscriberRole;
5
6
  (function (MissionSubscriberRole) {
@@ -7,8 +8,21 @@ export var MissionSubscriberRole;
7
8
  MissionSubscriberRole["MISSION_SUBSCRIBER"] = "MISSION_SUBSCRIBER";
8
9
  MissionSubscriberRole["MISSION_READONLY_SUBSCRIBER"] = "MISSION_READONLY_SUBSCRIBER";
9
10
  })(MissionSubscriberRole || (MissionSubscriberRole = {}));
10
- export const MissionInvite = Type.String();
11
- export const TAKList_MissionInvites = TAKList(MissionInvite);
11
+ export var MissionInviteType;
12
+ (function (MissionInviteType) {
13
+ MissionInviteType["CLIENT_UID"] = "clientUid";
14
+ MissionInviteType["CALLSIGN"] = "callsign";
15
+ MissionInviteType["USERNAME"] = "userName";
16
+ MissionInviteType["GROUP"] = "group";
17
+ MissionInviteType["TEAM"] = "team";
18
+ })(MissionInviteType || (MissionInviteType = {}));
19
+ export const MissionInvite = Type.Any();
20
+ export const MissionInviteList = TAKList(MissionInvite);
21
+ export const MissionInviteWrapper = Type.Object({
22
+ name: Type.String(),
23
+ invites: MissionInviteList
24
+ });
25
+ export const TAKList_MissionInvites = TAKList(MissionInviteWrapper);
12
26
  /**
13
27
  * @class
14
28
  */
@@ -19,36 +33,197 @@ export default class MissionInviteCommands extends Commands {
19
33
  params: Type.Object({}),
20
34
  query: Type.Object({}),
21
35
  formats: [CommandOutputFormat.JSON]
36
+ },
37
+ get: {
38
+ description: 'Get Mission Invites for a Mission',
39
+ params: Type.Object({
40
+ name: Type.String()
41
+ }),
42
+ query: Type.Object({}),
43
+ formats: [CommandOutputFormat.JSON]
44
+ },
45
+ invite: {
46
+ description: 'Invite a user/group to a mission',
47
+ params: Type.Object({
48
+ name: Type.String(),
49
+ type: Type.Enum(MissionInviteType),
50
+ invitee: Type.String()
51
+ }),
52
+ query: Type.Object({
53
+ creatorUid: Type.String(),
54
+ role: Type.Optional(Type.Enum(MissionSubscriberRole))
55
+ }),
56
+ formats: [CommandOutputFormat.JSON]
57
+ },
58
+ uninvite: {
59
+ description: 'Uninvite a user/group from a mission',
60
+ params: Type.Object({
61
+ name: Type.String(),
62
+ type: Type.Enum(MissionInviteType),
63
+ invitee: Type.String()
64
+ }),
65
+ query: Type.Object({
66
+ creatorUid: Type.String()
67
+ }),
68
+ formats: [CommandOutputFormat.JSON]
22
69
  }
23
70
  };
24
71
  async cli(args) {
25
72
  if (args._[3] === 'list') {
26
- const list = await this.list();
73
+ const list = await this.list(args.clientUid, {
74
+ token: args.token
75
+ });
76
+ if (args.format === 'json') {
77
+ return list;
78
+ }
79
+ else {
80
+ return list.data.map((invite) => {
81
+ return `${invite.name}: ${invite.invites.data.length} Invites`;
82
+ }).join('\n');
83
+ }
84
+ }
85
+ else if (args._[3] === 'get') {
86
+ const name = args._[4];
87
+ if (!name)
88
+ throw new Error('Usage: get <name>');
89
+ const list = await this.get(name, {
90
+ token: args.token
91
+ });
27
92
  if (args.format === 'json') {
28
93
  return list;
29
94
  }
30
95
  else {
31
96
  return list.data.map((invite) => {
32
- return `${invite}`;
97
+ return JSON.stringify(invite);
33
98
  }).join('\n');
34
99
  }
35
100
  }
101
+ else if (args._[3] === 'invite') {
102
+ const name = args._[4];
103
+ const type = args._[5];
104
+ const invitee = args._[6];
105
+ if (!name || !type || !invitee)
106
+ throw new Error('Usage: invite <name> <type> <invitee>');
107
+ await this.invite(name, type, invitee, {
108
+ creatorUid: args.creatorUid,
109
+ role: args.role
110
+ }, {
111
+ token: args.token
112
+ });
113
+ return { message: 'OK' };
114
+ }
115
+ else if (args._[3] === 'uninvite') {
116
+ const name = args._[4];
117
+ const type = args._[5];
118
+ const invitee = args._[6];
119
+ if (!name || !type || !invitee)
120
+ throw new Error('Usage: uninvite <name> <type> <invitee>');
121
+ await this.uninvite(name, type, invitee, {
122
+ creatorUid: args.creatorUid
123
+ }, {
124
+ token: args.token
125
+ });
126
+ return { message: 'OK' };
127
+ }
36
128
  else {
37
129
  throw new Error('Unsupported Subcommand');
38
130
  }
39
131
  }
132
+ #headers(opts) {
133
+ if (opts && opts.token) {
134
+ return {
135
+ MissionAuthorization: `Bearer ${opts.token}`
136
+ };
137
+ }
138
+ else {
139
+ return {};
140
+ }
141
+ }
40
142
  /**
41
143
  * List all Invitations for missions
42
144
  *
43
145
  * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/getAllMissionInvitations TAK Server Docs}.
44
146
  */
45
- async list(clientUid) {
147
+ async list(clientUid, opts) {
46
148
  const url = new URL('/Marti/api/missions/all/invitations', this.api.url);
47
149
  if (clientUid) {
48
150
  url.searchParams.append('clientUid', clientUid);
49
151
  }
152
+ const missionNames = await this.api.fetch(url, {
153
+ method: 'GET',
154
+ headers: this.#headers(opts)
155
+ });
156
+ const promises = missionNames.data.map(async (name) => {
157
+ const invites = await this.get(name, opts);
158
+ return {
159
+ name,
160
+ invites
161
+ };
162
+ });
163
+ const results = await Promise.all(promises);
164
+ return {
165
+ version: missionNames.version,
166
+ type: missionNames.type,
167
+ data: results,
168
+ nodeId: missionNames.nodeId
169
+ };
170
+ }
171
+ /**
172
+ * Get Mission Invitations
173
+ *
174
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/getMissionInvitations TAK Server Docs}.
175
+ */
176
+ async get(missionName, opts) {
177
+ let url;
178
+ if (GUIDMatch.test(missionName)) {
179
+ url = new URL(`/Marti/api/missions/guid/${encodeURIComponent(missionName)}/invitations`, this.api.url);
180
+ }
181
+ else {
182
+ url = new URL(`/Marti/api/missions/${encodeURIComponent(missionName)}/invitations`, this.api.url);
183
+ }
50
184
  return await this.api.fetch(url, {
51
- method: 'GET'
185
+ method: 'GET',
186
+ headers: this.#headers(opts)
187
+ });
188
+ }
189
+ /**
190
+ * Invite a user/group to a mission
191
+ *
192
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/inviteToMission TAK Server Docs}.
193
+ */
194
+ async invite(missionName, type, invitee, query, opts) {
195
+ let url;
196
+ if (GUIDMatch.test(missionName)) {
197
+ url = new URL(`/Marti/api/missions/guid/${encodeURIComponent(missionName)}/invite/${encodeURIComponent(type)}/${encodeURIComponent(invitee)}`, this.api.url);
198
+ }
199
+ else {
200
+ url = new URL(`/Marti/api/missions/${encodeURIComponent(missionName)}/invite/${encodeURIComponent(type)}/${encodeURIComponent(invitee)}`, this.api.url);
201
+ }
202
+ for (const q in query)
203
+ url.searchParams.append(q, String(query[q]));
204
+ await this.api.fetch(url, {
205
+ method: 'PUT',
206
+ headers: this.#headers(opts)
207
+ });
208
+ }
209
+ /**
210
+ * Uninvite a user/group from a mission
211
+ *
212
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/uninviteFromMission TAK Server Docs}.
213
+ */
214
+ async uninvite(missionName, type, invitee, query, opts) {
215
+ let url;
216
+ if (GUIDMatch.test(missionName)) {
217
+ url = new URL(`/Marti/api/missions/guid/${encodeURIComponent(missionName)}/invite/${encodeURIComponent(type)}/${encodeURIComponent(invitee)}`, this.api.url);
218
+ }
219
+ else {
220
+ url = new URL(`/Marti/api/missions/${encodeURIComponent(missionName)}/invite/${encodeURIComponent(type)}/${encodeURIComponent(invitee)}`, this.api.url);
221
+ }
222
+ for (const q in query)
223
+ url.searchParams.append(q, String(query[q]));
224
+ await this.api.fetch(url, {
225
+ method: 'DELETE',
226
+ headers: this.#headers(opts)
52
227
  });
53
228
  }
54
229
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mission-invite.js","sourceRoot":"","sources":["../../../lib/api/mission-invite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAU,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,QAAQ,EAAE,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,CAAN,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC7B,wDAA+B,CAAA;IAC/B,kEAAyC,CAAA;IACzC,oFAA2D,CAAA;AAC/D,CAAC,EAJW,qBAAqB,KAArB,qBAAqB,QAIhC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAE3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,QAAQ;IACvD,MAAM,GAAG;QACL,IAAI,EAAE;YACF,WAAW,EAAE,sBAAsB;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,CAAE,mBAAmB,CAAC,IAAI,CAAE;SACxC;KACJ,CAAA;IAED,KAAK,CAAC,GAAG,CAAC,IAAgB;QACtB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAE/B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC5B,OAAO,GAAG,MAAM,EAAE,CAAC;gBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,SAAkB;QACzB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzE,IAAI,SAAS,EAAE,CAAC;YACZ,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;YAC7B,MAAM,EAAE,KAAK;SAChB,CAAC,CAAC;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"mission-invite.js","sourceRoot":"","sources":["../../../lib/api/mission-invite.ts"],"names":[],"mappings":"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"}
package/dist/lib/api.d.ts CHANGED
@@ -4,7 +4,7 @@ import Certificate from './api/certificate.js';
4
4
  import Query from './api/query.js';
5
5
  import Locate from './api/locate.js';
6
6
  import Mission, { MissionSubscriberRole } from './api/mission.js';
7
- import MissionInvite from './api/mission-invite.js';
7
+ import MissionInvite, { MissionInviteType } from './api/mission-invite.js';
8
8
  import MissionLog from './api/mission-log.js';
9
9
  import MissionLayer, { MissionLayerType } from './api/mission-layer.js';
10
10
  import Credentials from './api/credentials.js';
@@ -60,4 +60,4 @@ export default class TAKAPI {
60
60
  */
61
61
  fetch(url: URL, opts?: any, raw?: boolean): Promise<any>;
62
62
  }
63
- export { OAuth, Package, Certificate, Query, Locate, Mission, MissionInvite, MissionLog, MissionLayer, Credentials, Security, Contacts, Profile, Files, Iconsets, Injectors, Repeater, Group, Subscription, Video, Export, MissionSubscriberRole, MissionLayerType };
63
+ export { OAuth, Package, Certificate, Query, Locate, Mission, MissionInvite, MissionLog, MissionLayer, Credentials, Security, Contacts, Profile, Files, Iconsets, Injectors, Repeater, Group, Subscription, Video, Export, MissionSubscriberRole, MissionLayerType, MissionInviteType };
package/dist/lib/api.js CHANGED
@@ -5,7 +5,7 @@ import Certificate from './api/certificate.js';
5
5
  import Query from './api/query.js';
6
6
  import Locate from './api/locate.js';
7
7
  import Mission, { MissionSubscriberRole } from './api/mission.js';
8
- import MissionInvite from './api/mission-invite.js';
8
+ import MissionInvite, { MissionInviteType } from './api/mission-invite.js';
9
9
  import MissionLog from './api/mission-log.js';
10
10
  import MissionLayer, { MissionLayerType } from './api/mission-layer.js';
11
11
  import Credentials from './api/credentials.js';
@@ -167,5 +167,5 @@ export default class TAKAPI {
167
167
  function isPlainObject(value) {
168
168
  return value?.constructor === Object;
169
169
  }
170
- export { OAuth, Package, Certificate, Query, Locate, Mission, MissionInvite, MissionLog, MissionLayer, Credentials, Security, Contacts, Profile, Files, Iconsets, Injectors, Repeater, Group, Subscription, Video, Export, MissionSubscriberRole, MissionLayerType };
170
+ export { OAuth, Package, Certificate, Query, Locate, Mission, MissionInvite, MissionLog, MissionLayer, Credentials, Security, Contacts, Profile, Files, Iconsets, Injectors, Repeater, Group, Subscription, Video, Export, MissionSubscriberRole, MissionLayerType, MissionInviteType };
171
171
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../lib/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../lib/api.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { ParsedArgs } from 'minimist'
2
2
  import { Type, Static } from '@sinclair/typebox';
3
3
  import { TAKList } from './types.js';
4
+ import { GUIDMatch, MissionOptions } from './mission.js';
4
5
  import Commands, { CommandOutputFormat } from '../commands.js';
5
6
 
6
7
  export enum MissionSubscriberRole {
@@ -9,9 +10,23 @@ export enum MissionSubscriberRole {
9
10
  MISSION_READONLY_SUBSCRIBER = 'MISSION_READONLY_SUBSCRIBER'
10
11
  }
11
12
 
12
- export const MissionInvite = Type.String();
13
+ export enum MissionInviteType {
14
+ CLIENT_UID = 'clientUid',
15
+ CALLSIGN = 'callsign',
16
+ USERNAME = 'userName',
17
+ GROUP = 'group',
18
+ TEAM = 'team'
19
+ }
20
+
21
+ export const MissionInvite = Type.Any();
22
+ export const MissionInviteList = TAKList(MissionInvite);
13
23
 
14
- export const TAKList_MissionInvites = TAKList(MissionInvite);
24
+ export const MissionInviteWrapper = Type.Object({
25
+ name: Type.String(),
26
+ invites: MissionInviteList
27
+ });
28
+
29
+ export const TAKList_MissionInvites = TAKList(MissionInviteWrapper);
15
30
 
16
31
  /**
17
32
  * @class
@@ -23,39 +38,229 @@ export default class MissionInviteCommands extends Commands {
23
38
  params: Type.Object({}),
24
39
  query: Type.Object({}),
25
40
  formats: [ CommandOutputFormat.JSON ]
41
+ },
42
+ get: {
43
+ description: 'Get Mission Invites for a Mission',
44
+ params: Type.Object({
45
+ name: Type.String()
46
+ }),
47
+ query: Type.Object({}),
48
+ formats: [ CommandOutputFormat.JSON ]
49
+ },
50
+ invite: {
51
+ description: 'Invite a user/group to a mission',
52
+ params: Type.Object({
53
+ name: Type.String(),
54
+ type: Type.Enum(MissionInviteType),
55
+ invitee: Type.String()
56
+ }),
57
+ query: Type.Object({
58
+ creatorUid: Type.String(),
59
+ role: Type.Optional(Type.Enum(MissionSubscriberRole))
60
+ }),
61
+ formats: [ CommandOutputFormat.JSON ]
62
+ },
63
+ uninvite: {
64
+ description: 'Uninvite a user/group from a mission',
65
+ params: Type.Object({
66
+ name: Type.String(),
67
+ type: Type.Enum(MissionInviteType),
68
+ invitee: Type.String()
69
+ }),
70
+ query: Type.Object({
71
+ creatorUid: Type.String()
72
+ }),
73
+ formats: [ CommandOutputFormat.JSON ]
26
74
  }
27
75
  }
28
76
 
29
77
  async cli(args: ParsedArgs): Promise<object | string> {
30
78
  if (args._[3] === 'list') {
31
- const list = await this.list();
79
+ const list = await this.list(args.clientUid, {
80
+ token: args.token
81
+ });
32
82
 
33
83
  if (args.format === 'json') {
34
84
  return list;
35
85
  } else {
36
86
  return list.data.map((invite) => {
37
- return `${invite}`;
87
+ return `${invite.name}: ${invite.invites.data.length} Invites`;
38
88
  }).join('\n');
39
89
  }
90
+ } else if (args._[3] === 'get') {
91
+ const name = args._[4];
92
+
93
+ if (!name) throw new Error('Usage: get <name>');
94
+
95
+ const list = await this.get(name, {
96
+ token: args.token
97
+ });
98
+
99
+ if (args.format === 'json') {
100
+ return list;
101
+ } else {
102
+ return list.data.map((invite) => {
103
+ return JSON.stringify(invite);
104
+ }).join('\n');
105
+ }
106
+ } else if (args._[3] === 'invite') {
107
+ const name = args._[4];
108
+ const type = args._[5] as MissionInviteType;
109
+ const invitee = args._[6];
110
+
111
+ if (!name || !type || !invitee) throw new Error('Usage: invite <name> <type> <invitee>');
112
+
113
+ await this.invite(name, type, invitee, {
114
+ creatorUid: args.creatorUid,
115
+ role: args.role
116
+ }, {
117
+ token: args.token
118
+ });
119
+ return { message: 'OK' };
120
+ } else if (args._[3] === 'uninvite') {
121
+ const name = args._[4];
122
+ const type = args._[5] as MissionInviteType;
123
+ const invitee = args._[6];
124
+
125
+ if (!name || !type || !invitee) throw new Error('Usage: uninvite <name> <type> <invitee>');
126
+
127
+ await this.uninvite(name, type, invitee, {
128
+ creatorUid: args.creatorUid
129
+ }, {
130
+ token: args.token
131
+ });
132
+ return { message: 'OK' };
40
133
  } else {
41
134
  throw new Error('Unsupported Subcommand');
42
135
  }
43
136
  }
44
137
 
138
+ #headers(opts?: Static<typeof MissionOptions>): object {
139
+ if (opts && opts.token) {
140
+ return {
141
+ MissionAuthorization: `Bearer ${opts.token}`
142
+ }
143
+ } else {
144
+ return {};
145
+ }
146
+ }
147
+
45
148
  /**
46
149
  * List all Invitations for missions
47
150
  *
48
151
  * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/getAllMissionInvitations TAK Server Docs}.
49
152
  */
50
- async list(clientUid?: string): Promise<Static<typeof TAKList_MissionInvites>> {
153
+ async list(
154
+ clientUid?: string,
155
+ opts?: Static<typeof MissionOptions>
156
+ ): Promise<Static<typeof TAKList_MissionInvites>> {
51
157
  const url = new URL('/Marti/api/missions/all/invitations', this.api.url);
52
158
 
53
159
  if (clientUid) {
54
160
  url.searchParams.append('clientUid', clientUid);
55
161
  }
56
162
 
163
+ const missionNames = await this.api.fetch(url, {
164
+ method: 'GET',
165
+ headers: this.#headers(opts)
166
+ });
167
+
168
+ const promises = missionNames.data.map(async (name: string) => {
169
+ const invites = await this.get(name, opts);
170
+ return {
171
+ name,
172
+ invites
173
+ };
174
+ });
175
+
176
+ const results = await Promise.all(promises);
177
+
178
+ return {
179
+ version: missionNames.version,
180
+ type: missionNames.type,
181
+ data: results,
182
+ nodeId: missionNames.nodeId
183
+ };
184
+ }
185
+
186
+ /**
187
+ * Get Mission Invitations
188
+ *
189
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/getMissionInvitations TAK Server Docs}.
190
+ */
191
+ async get(
192
+ missionName: string,
193
+ opts?: Static<typeof MissionOptions>
194
+ ): Promise<Static<typeof MissionInviteList>> {
195
+ let url;
196
+ if (GUIDMatch.test(missionName)) {
197
+ url = new URL(`/Marti/api/missions/guid/${encodeURIComponent(missionName)}/invitations`, this.api.url);
198
+ } else {
199
+ url = new URL(`/Marti/api/missions/${encodeURIComponent(missionName)}/invitations`, this.api.url);
200
+ }
201
+
57
202
  return await this.api.fetch(url, {
58
- method: 'GET'
203
+ method: 'GET',
204
+ headers: this.#headers(opts)
205
+ });
206
+ }
207
+
208
+ /**
209
+ * Invite a user/group to a mission
210
+ *
211
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/inviteToMission TAK Server Docs}.
212
+ */
213
+ async invite(
214
+ missionName: string,
215
+ type: MissionInviteType,
216
+ invitee: string,
217
+ query: {
218
+ creatorUid: string;
219
+ role?: MissionSubscriberRole;
220
+ },
221
+ opts?: Static<typeof MissionOptions>
222
+ ): Promise<void> {
223
+ let url;
224
+ if (GUIDMatch.test(missionName)) {
225
+ url = new URL(`/Marti/api/missions/guid/${encodeURIComponent(missionName)}/invite/${encodeURIComponent(type)}/${encodeURIComponent(invitee)}`, this.api.url);
226
+ } else {
227
+ url = new URL(`/Marti/api/missions/${encodeURIComponent(missionName)}/invite/${encodeURIComponent(type)}/${encodeURIComponent(invitee)}`, this.api.url);
228
+ }
229
+
230
+ for (const q in query) url.searchParams.append(q, String(query[q as keyof typeof query]));
231
+
232
+ await this.api.fetch(url, {
233
+ method: 'PUT',
234
+ headers: this.#headers(opts)
235
+ });
236
+ }
237
+
238
+ /**
239
+ * Uninvite a user/group from a mission
240
+ *
241
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/uninviteFromMission TAK Server Docs}.
242
+ */
243
+ async uninvite(
244
+ missionName: string,
245
+ type: MissionInviteType,
246
+ invitee: string,
247
+ query: {
248
+ creatorUid: string;
249
+ },
250
+ opts?: Static<typeof MissionOptions>
251
+ ): Promise<void> {
252
+ let url;
253
+ if (GUIDMatch.test(missionName)) {
254
+ url = new URL(`/Marti/api/missions/guid/${encodeURIComponent(missionName)}/invite/${encodeURIComponent(type)}/${encodeURIComponent(invitee)}`, this.api.url);
255
+ } else {
256
+ url = new URL(`/Marti/api/missions/${encodeURIComponent(missionName)}/invite/${encodeURIComponent(type)}/${encodeURIComponent(invitee)}`, this.api.url);
257
+ }
258
+
259
+ for (const q in query) url.searchParams.append(q, String(query[q as keyof typeof query]));
260
+
261
+ await this.api.fetch(url, {
262
+ method: 'DELETE',
263
+ headers: this.#headers(opts)
59
264
  });
60
265
  }
61
266
  }
package/lib/api.ts CHANGED
@@ -5,7 +5,7 @@ import Certificate from './api/certificate.js';
5
5
  import Query from './api/query.js';
6
6
  import Locate from './api/locate.js';
7
7
  import Mission, { MissionSubscriberRole } from './api/mission.js';
8
- import MissionInvite from './api/mission-invite.js';
8
+ import MissionInvite, { MissionInviteType } from './api/mission-invite.js';
9
9
  import MissionLog from './api/mission-log.js';
10
10
  import MissionLayer, { MissionLayerType } from './api/mission-layer.js';
11
11
  import Credentials from './api/credentials.js';
@@ -206,5 +206,6 @@ export {
206
206
  Video,
207
207
  Export,
208
208
  MissionSubscriberRole,
209
- MissionLayerType
209
+ MissionLayerType,
210
+ MissionInviteType
210
211
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tak-ps/node-tak",
3
3
  "type": "module",
4
- "version": "11.20.2",
4
+ "version": "11.22.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",