@tak-ps/node-tak 11.18.1 → 11.18.2

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