@tak-ps/node-tak 8.3.0 → 8.4.1

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 (63) hide show
  1. package/.github/workflows/doc.yml +6 -6
  2. package/.github/workflows/release.yml +3 -3
  3. package/.github/workflows/test.yml +14 -9
  4. package/CHANGELOG.md +8 -0
  5. package/dist/index.js +3 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/lib/api/contacts.js +23 -0
  8. package/dist/lib/api/contacts.js.map +1 -0
  9. package/dist/lib/api/credentials.js +62 -0
  10. package/dist/lib/api/credentials.js.map +1 -0
  11. package/dist/lib/api/export.js +36 -0
  12. package/dist/lib/api/export.js.map +1 -0
  13. package/dist/lib/api/files.js +112 -0
  14. package/dist/lib/api/files.js.map +1 -0
  15. package/dist/lib/api/groups.js +47 -0
  16. package/dist/lib/api/groups.js.map +1 -0
  17. package/dist/lib/api/mission-layer.js +245 -0
  18. package/dist/lib/api/mission-layer.js.map +1 -0
  19. package/dist/lib/api/mission-log.js +108 -0
  20. package/dist/lib/api/mission-log.js.map +1 -0
  21. package/dist/lib/api/mission.js +583 -0
  22. package/dist/lib/api/mission.js.map +1 -0
  23. package/dist/lib/api/oauth.js +54 -0
  24. package/dist/lib/api/oauth.js.map +1 -0
  25. package/dist/lib/api/package.js +42 -0
  26. package/dist/lib/api/package.js.map +1 -0
  27. package/dist/lib/api/query.js +60 -0
  28. package/dist/lib/api/query.js.map +1 -0
  29. package/dist/lib/api/subscriptions.js +73 -0
  30. package/dist/lib/api/subscriptions.js.map +1 -0
  31. package/dist/lib/api/types.js +42 -0
  32. package/dist/lib/api/types.js.map +1 -0
  33. package/dist/lib/api/video.js +123 -0
  34. package/dist/lib/api/video.js.map +1 -0
  35. package/dist/lib/api.js +123 -0
  36. package/dist/lib/api.js.map +1 -0
  37. package/dist/lib/auth.js +92 -0
  38. package/dist/lib/auth.js.map +1 -0
  39. package/dist/lib/fetch.js +26 -0
  40. package/dist/lib/fetch.js.map +1 -0
  41. package/dist/lib/stream.js +9 -0
  42. package/dist/lib/stream.js.map +1 -0
  43. package/dist/tsconfig.tsbuildinfo +1 -1
  44. package/index.ts +7 -1
  45. package/lib/api/contacts.ts +27 -0
  46. package/lib/api/credentials.ts +74 -0
  47. package/lib/api/export.ts +44 -0
  48. package/lib/api/files.ts +151 -0
  49. package/lib/api/groups.ts +63 -0
  50. package/lib/api/mission-layer.ts +312 -0
  51. package/lib/api/mission-log.ts +140 -0
  52. package/lib/api/mission.ts +741 -0
  53. package/lib/api/oauth.ts +68 -0
  54. package/lib/api/package.ts +56 -0
  55. package/lib/api/query.ts +79 -0
  56. package/lib/api/subscriptions.ts +84 -0
  57. package/lib/api/types.ts +43 -0
  58. package/lib/api/video.ts +155 -0
  59. package/lib/api.ts +136 -0
  60. package/lib/auth.ts +117 -0
  61. package/lib/fetch.ts +38 -0
  62. package/lib/stream.ts +10 -0
  63. package/package.json +17 -4
@@ -0,0 +1,245 @@
1
+ import { TAKList, TAKItem } from './types.js';
2
+ import { Type } from '@sinclair/typebox';
3
+ import { GUIDMatch } from './mission.js';
4
+ import Err from '@openaddresses/batch-error';
5
+ export var MissionLayerType;
6
+ (function (MissionLayerType) {
7
+ MissionLayerType["GROUP"] = "GROUP";
8
+ MissionLayerType["UID"] = "UID";
9
+ MissionLayerType["CONTENTS"] = "CONTENTS";
10
+ MissionLayerType["MAPLAYER"] = "MAPLAYER";
11
+ MissionLayerType["ITEM"] = "ITEM";
12
+ })(MissionLayerType || (MissionLayerType = {}));
13
+ export const MissionLayer = Type.Object({
14
+ name: Type.String({ minLength: 1 }),
15
+ type: Type.Enum(MissionLayerType),
16
+ parentUid: Type.Optional(Type.String()),
17
+ uid: Type.String(),
18
+ mission_layers: Type.Optional(Type.Array(Type.Any())),
19
+ uids: Type.Optional(Type.Array(Type.Object({
20
+ data: Type.String({
21
+ description: 'The UID of the COT'
22
+ }),
23
+ timestamp: Type.String(),
24
+ creatorUid: Type.String(),
25
+ keywords: Type.Optional(Type.Array(Type.String())),
26
+ details: Type.Optional(Type.Object({
27
+ type: Type.String(),
28
+ callsign: Type.String(),
29
+ color: Type.Optional(Type.String()),
30
+ location: Type.Object({
31
+ lat: Type.Number(),
32
+ lon: Type.Number()
33
+ })
34
+ }))
35
+ }))),
36
+ contents: Type.Optional(Type.Array(Type.Any())),
37
+ maplayers: Type.Optional(Type.Array(Type.Any()))
38
+ });
39
+ export const DeleteInput = Type.Object({
40
+ uid: Type.Array(Type.String()),
41
+ creatorUid: Type.String(),
42
+ });
43
+ export const RenameInput = Type.Object({
44
+ name: Type.String(),
45
+ creatorUid: Type.String(),
46
+ });
47
+ export const CreateInput = Type.Object({
48
+ name: Type.String(),
49
+ type: Type.Enum(MissionLayerType),
50
+ uid: Type.Optional(Type.String()),
51
+ parentUid: Type.Optional(Type.String()),
52
+ afterUid: Type.Optional(Type.String()),
53
+ creatorUid: Type.String()
54
+ });
55
+ export const TAKList_MissionLayer = TAKList(MissionLayer);
56
+ export const TAKItem_MissionLayer = TAKItem(MissionLayer);
57
+ export default class {
58
+ api;
59
+ constructor(api) {
60
+ this.api = api;
61
+ }
62
+ #encodeName(name) {
63
+ return encodeURIComponent(name.trim());
64
+ }
65
+ #isGUID(id) {
66
+ return GUIDMatch.test(id);
67
+ }
68
+ #headers(opts) {
69
+ if (opts && opts.token) {
70
+ return {
71
+ MissionAuthorization: `Bearer ${opts.token}`
72
+ };
73
+ }
74
+ else {
75
+ return {};
76
+ }
77
+ }
78
+ isEmpty(layer) {
79
+ if (layer.mission_layers && layer.mission_layers.length)
80
+ return false;
81
+ if (layer.uids && layer.uids.length)
82
+ return false;
83
+ if (layer.contents && layer.contents.length)
84
+ return false;
85
+ if (layer.maplayers && layer.maplayers.length)
86
+ return false;
87
+ return true;
88
+ }
89
+ async listAsPathMap(name, opts) {
90
+ const layers = (await this.list(name, opts)).data;
91
+ const pathMap = new Map();
92
+ for (const layer of layers) {
93
+ this.#listAsPathMapRecurse(pathMap, '', layer);
94
+ }
95
+ return pathMap;
96
+ }
97
+ #listAsPathMapRecurse(pathMap, pathCurrent, layer) {
98
+ pathCurrent = `${pathCurrent}/${encodeURIComponent(layer.name)}`;
99
+ pathMap.set(`${pathCurrent}/`, layer);
100
+ for (const l of (layer.mission_layers || [])) {
101
+ this.#listAsPathMapRecurse(pathMap, pathCurrent, l);
102
+ }
103
+ }
104
+ async list(name, opts) {
105
+ let res;
106
+ if (this.#isGUID(name)) {
107
+ const url = new URL(`/Marti/api/missions/guid/${this.#encodeName(name)}/layers`, this.api.url);
108
+ res = await this.api.fetch(url, {
109
+ method: 'GET',
110
+ headers: this.#headers(opts),
111
+ });
112
+ }
113
+ else {
114
+ const url = new URL(`/Marti/api/missions/${this.#encodeName(name)}/layers`, this.api.url);
115
+ res = await this.api.fetch(url, {
116
+ method: 'GET',
117
+ headers: this.#headers(opts),
118
+ });
119
+ }
120
+ res.data.map((l) => {
121
+ if (l.type === MissionLayerType.UID && !l.uids) {
122
+ l.uids = [];
123
+ }
124
+ return l;
125
+ });
126
+ return res;
127
+ }
128
+ /**
129
+ * Stopgap function until the main latestFeats function can accept a path
130
+ * parameter
131
+ */
132
+ async latestFeats(name, layerUid, // Layer UID
133
+ opts) {
134
+ const layer = (await this.get(name, layerUid, opts)).data;
135
+ const feats = await this.api.Mission.latestFeats(name, opts);
136
+ const layerUids = new Set((layer.uids || []).map((u) => {
137
+ return u.data;
138
+ }));
139
+ const filtered = feats.filter((f) => {
140
+ return layerUids.has(f.id);
141
+ });
142
+ return filtered;
143
+ }
144
+ async get(name, layerUid, // Layer UID
145
+ opts) {
146
+ const layers = await this.list(name, opts);
147
+ // TODO this will only return top level layers - need to recurse to lower level layers
148
+ for (const layer of layers.data) {
149
+ if (layer.uid === layerUid) {
150
+ return {
151
+ version: layers.version,
152
+ type: layers.type,
153
+ data: layer,
154
+ nodeId: layers.nodeId
155
+ };
156
+ }
157
+ }
158
+ throw new Err(404, null, `Layer ${layerUid} not found - only top level layers will be returned`);
159
+ }
160
+ async create(name, query, opts) {
161
+ if (this.#isGUID(name)) {
162
+ const url = new URL(`/Marti/api/missions/guid/${this.#encodeName(name)}/layers`, this.api.url);
163
+ let q;
164
+ for (q in query) {
165
+ if (query[q] !== undefined) {
166
+ url.searchParams.append(q, String(query[q]));
167
+ }
168
+ }
169
+ return await this.api.fetch(url, {
170
+ method: 'PUT',
171
+ headers: this.#headers(opts),
172
+ });
173
+ }
174
+ else {
175
+ const url = new URL(`/Marti/api/missions/${this.#encodeName(name)}/layers`, this.api.url);
176
+ let q;
177
+ for (q in query) {
178
+ if (query[q] !== undefined) {
179
+ url.searchParams.append(q, String(query[q]));
180
+ }
181
+ }
182
+ return await this.api.fetch(url, {
183
+ method: 'PUT',
184
+ headers: this.#headers(opts),
185
+ });
186
+ }
187
+ }
188
+ async rename(name, layer, query, opts) {
189
+ if (this.#isGUID(name)) {
190
+ const url = new URL(`/Marti/api/missions/guid/${this.#encodeName(name)}/layers/${layer}/name`, this.api.url);
191
+ let q;
192
+ for (q in query) {
193
+ if (query[q] !== undefined) {
194
+ url.searchParams.append(q, String(query[q]));
195
+ }
196
+ }
197
+ return await this.api.fetch(url, {
198
+ method: 'PUT',
199
+ headers: this.#headers(opts),
200
+ });
201
+ }
202
+ else {
203
+ const url = new URL(`/Marti/api/missions/${this.#encodeName(name)}/layers/${layer}/name`, this.api.url);
204
+ let q;
205
+ for (q in query) {
206
+ if (query[q] !== undefined) {
207
+ url.searchParams.append(q, String(query[q]));
208
+ }
209
+ }
210
+ return await this.api.fetch(url, {
211
+ method: 'PUT',
212
+ headers: this.#headers(opts),
213
+ });
214
+ }
215
+ }
216
+ async delete(name, query, opts) {
217
+ if (this.#isGUID(name)) {
218
+ const url = new URL(`/Marti/api/missions/guid/${this.#encodeName(name)}/layers`, this.api.url);
219
+ let q;
220
+ for (q in query) {
221
+ if (query[q] !== undefined) {
222
+ url.searchParams.append(q, String(query[q]));
223
+ }
224
+ }
225
+ return await this.api.fetch(url, {
226
+ method: 'DELETE',
227
+ headers: this.#headers(opts),
228
+ });
229
+ }
230
+ else {
231
+ const url = new URL(`/Marti/api/missions/${this.#encodeName(name)}/layers`, this.api.url);
232
+ let q;
233
+ for (q in query) {
234
+ if (query[q] !== undefined) {
235
+ url.searchParams.append(q, String(query[q]));
236
+ }
237
+ }
238
+ return await this.api.fetch(url, {
239
+ method: 'DELETE',
240
+ headers: this.#headers(opts),
241
+ });
242
+ }
243
+ }
244
+ }
245
+ //# sourceMappingURL=mission-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-layer.js","sourceRoot":"","sources":["../../../lib/api/mission-layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import { Type } from '@sinclair/typebox';
2
+ import { TAKItem } from './types.js';
3
+ import { GUIDMatch } from './mission.js';
4
+ export const MissionLog = Type.Object({
5
+ id: Type.String(),
6
+ content: Type.String(),
7
+ creatorUid: Type.String(),
8
+ missionNames: Type.Array(Type.String()),
9
+ servertime: Type.String(),
10
+ dtg: Type.Optional(Type.String()),
11
+ created: Type.String(),
12
+ contentHashes: Type.Array(Type.Unknown()),
13
+ keywords: Type.Array(Type.String())
14
+ });
15
+ export const CreateMissionLog = Type.Object({
16
+ content: Type.String(),
17
+ creatorUid: Type.String(),
18
+ contentHashes: Type.Optional(Type.Array(Type.Unknown())),
19
+ keywords: Type.Optional(Type.Array(Type.String()))
20
+ });
21
+ export const UpdateMissionLog = Type.Composite([CreateMissionLog, Type.Object({
22
+ id: Type.String()
23
+ })]);
24
+ export const TAKItem_MissionLog = TAKItem(MissionLog);
25
+ export default class {
26
+ api;
27
+ constructor(api) {
28
+ this.api = api;
29
+ }
30
+ #headers(opts) {
31
+ if (opts && opts.token) {
32
+ return {
33
+ MissionAuthorization: `Bearer ${opts.token}`
34
+ };
35
+ }
36
+ else {
37
+ return {};
38
+ }
39
+ }
40
+ #isGUID(id) {
41
+ return GUIDMatch.test(id);
42
+ }
43
+ /**
44
+ * Delete a log entry on a Mission Sync
45
+ *
46
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/deleteLogEntry TAK Server Docs}.
47
+ */
48
+ async delete(log, opts) {
49
+ const url = new URL(`/Marti/api/missions/logs/entries/${log}`, this.api.url);
50
+ await this.api.fetch(url, {
51
+ method: 'DELETE',
52
+ headers: this.#headers(opts),
53
+ });
54
+ return;
55
+ }
56
+ /**
57
+ * Get a log entry on a Mission Sync
58
+ *
59
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/getOneLogEntry TAK Server Docs}.
60
+ */
61
+ async get(id) {
62
+ const url = new URL(`/Marti/api/missions/logs/entries/${encodeURIComponent(id)}`, this.api.url);
63
+ return await this.api.fetch(url);
64
+ }
65
+ /**
66
+ * Create a log entry on a Mission Sync
67
+ *
68
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/postLogEntry TAK Server Docs}.
69
+ */
70
+ async create(mission, body, opts) {
71
+ const url = new URL(`/Marti/api/missions/logs/entries`, this.api.url);
72
+ if (this.#isGUID(mission)) {
73
+ mission = (await this.api.Mission.get(mission, {}, opts)).name;
74
+ }
75
+ return await this.api.fetch(url, {
76
+ method: 'POST',
77
+ headers: this.#headers(opts),
78
+ body: {
79
+ content: body.content,
80
+ creatorUid: body.creatorUid,
81
+ keywords: body.keywords,
82
+ missionNames: [mission],
83
+ }
84
+ });
85
+ }
86
+ /**
87
+ * Update a log entry on a Mission Sync
88
+ *
89
+ * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/updateLogEntry TAK Server Docs}.
90
+ */
91
+ async update(mission, body, opts) {
92
+ const url = new URL(`/Marti/api/missions/logs/entries`, this.api.url);
93
+ if (this.#isGUID(mission)) {
94
+ mission = (await this.api.Mission.get(mission, {}, opts)).name;
95
+ }
96
+ return await this.api.fetch(url, {
97
+ method: 'PUT',
98
+ headers: this.#headers(opts),
99
+ body: {
100
+ content: body.content,
101
+ creatorUid: body.creatorUid,
102
+ keywords: body.keywords,
103
+ missionNames: [mission],
104
+ }
105
+ });
106
+ }
107
+ }
108
+ //# sourceMappingURL=mission-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-log.js","sourceRoot":"","sources":["../../../lib/api/mission-log.ts"],"names":[],"mappings":"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"}