@tak-ps/node-tak 11.17.4 → 11.18.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 (95) hide show
  1. package/.github/workflows/release.yml +10 -16
  2. package/CHANGELOG.md +8 -0
  3. package/lib/api/mission.ts +41 -27
  4. package/package.json +3 -3
  5. package/dist/cli.d.ts +0 -2
  6. package/dist/cli.js +0 -183
  7. package/dist/cli.js.map +0 -1
  8. package/dist/index.d.ts +0 -59
  9. package/dist/index.js +0 -204
  10. package/dist/index.js.map +0 -1
  11. package/dist/lib/api/contacts.d.ts +0 -24
  12. package/dist/lib/api/contacts.js +0 -44
  13. package/dist/lib/api/contacts.js.map +0 -1
  14. package/dist/lib/api/credentials.d.ts +0 -21
  15. package/dist/lib/api/credentials.js +0 -83
  16. package/dist/lib/api/credentials.js.map +0 -1
  17. package/dist/lib/api/export.d.ts +0 -21
  18. package/dist/lib/api/export.js +0 -37
  19. package/dist/lib/api/export.js.map +0 -1
  20. package/dist/lib/api/files.d.ts +0 -77
  21. package/dist/lib/api/files.js +0 -170
  22. package/dist/lib/api/files.js.map +0 -1
  23. package/dist/lib/api/groups.d.ts +0 -43
  24. package/dist/lib/api/groups.js +0 -68
  25. package/dist/lib/api/groups.js.map +0 -1
  26. package/dist/lib/api/iconsets.d.ts +0 -27
  27. package/dist/lib/api/iconsets.js +0 -42
  28. package/dist/lib/api/iconsets.js.map +0 -1
  29. package/dist/lib/api/injectors.d.ts +0 -52
  30. package/dist/lib/api/injectors.js +0 -82
  31. package/dist/lib/api/injectors.js.map +0 -1
  32. package/dist/lib/api/locate.d.ts +0 -13
  33. package/dist/lib/api/locate.js +0 -27
  34. package/dist/lib/api/locate.js.map +0 -1
  35. package/dist/lib/api/mission-invite.d.ts +0 -36
  36. package/dist/lib/api/mission-invite.js +0 -55
  37. package/dist/lib/api/mission-invite.js.map +0 -1
  38. package/dist/lib/api/mission-layer.d.ts +0 -137
  39. package/dist/lib/api/mission-layer.js +0 -247
  40. package/dist/lib/api/mission-layer.js.map +0 -1
  41. package/dist/lib/api/mission-log.d.ts +0 -75
  42. package/dist/lib/api/mission-log.js +0 -117
  43. package/dist/lib/api/mission-log.js.map +0 -1
  44. package/dist/lib/api/mission.d.ts +0 -498
  45. package/dist/lib/api/mission.js +0 -696
  46. package/dist/lib/api/mission.js.map +0 -1
  47. package/dist/lib/api/oauth.d.ts +0 -22
  48. package/dist/lib/api/oauth.js +0 -55
  49. package/dist/lib/api/oauth.js.map +0 -1
  50. package/dist/lib/api/package.d.ts +0 -40
  51. package/dist/lib/api/package.js +0 -70
  52. package/dist/lib/api/package.js.map +0 -1
  53. package/dist/lib/api/profile.d.ts +0 -9
  54. package/dist/lib/api/profile.js +0 -16
  55. package/dist/lib/api/profile.js.map +0 -1
  56. package/dist/lib/api/query.d.ts +0 -16
  57. package/dist/lib/api/query.js +0 -60
  58. package/dist/lib/api/query.js.map +0 -1
  59. package/dist/lib/api/repeater.d.ts +0 -47
  60. package/dist/lib/api/repeater.js +0 -62
  61. package/dist/lib/api/repeater.js.map +0 -1
  62. package/dist/lib/api/security.d.ts +0 -110
  63. package/dist/lib/api/security.js +0 -123
  64. package/dist/lib/api/security.js.map +0 -1
  65. package/dist/lib/api/subscriptions.d.ts +0 -103
  66. package/dist/lib/api/subscriptions.js +0 -74
  67. package/dist/lib/api/subscriptions.js.map +0 -1
  68. package/dist/lib/api/types.d.ts +0 -41
  69. package/dist/lib/api/types.js +0 -42
  70. package/dist/lib/api/types.js.map +0 -1
  71. package/dist/lib/api/video.d.ts +0 -139
  72. package/dist/lib/api/video.js +0 -151
  73. package/dist/lib/api/video.js.map +0 -1
  74. package/dist/lib/api.d.ts +0 -60
  75. package/dist/lib/api.js +0 -166
  76. package/dist/lib/api.js.map +0 -1
  77. package/dist/lib/auth.d.ts +0 -34
  78. package/dist/lib/auth.js +0 -97
  79. package/dist/lib/auth.js.map +0 -1
  80. package/dist/lib/commands.d.ts +0 -38
  81. package/dist/lib/commands.js +0 -34
  82. package/dist/lib/commands.js.map +0 -1
  83. package/dist/lib/fetch.d.ts +0 -8
  84. package/dist/lib/fetch.js +0 -26
  85. package/dist/lib/fetch.js.map +0 -1
  86. package/dist/lib/stream.d.ts +0 -2
  87. package/dist/lib/stream.js +0 -9
  88. package/dist/lib/stream.js.map +0 -1
  89. package/dist/test/default.test.d.ts +0 -1
  90. package/dist/test/default.test.js +0 -8
  91. package/dist/test/default.test.js.map +0 -1
  92. package/dist/test/findCoT.test.d.ts +0 -1
  93. package/dist/test/findCoT.test.js +0 -85
  94. package/dist/test/findCoT.test.js.map +0 -1
  95. package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { Static } from '@sinclair/typebox';
2
- import type { ParsedArgs } from 'minimist';
3
- import Commands, { CommandOutputFormat } from '../commands.js';
4
- export declare const Contact: import("@sinclair/typebox").TObject<{
5
- filterGroups: import("@sinclair/typebox").TAny;
6
- notes: import("@sinclair/typebox").TString;
7
- callsign: import("@sinclair/typebox").TString;
8
- team: import("@sinclair/typebox").TString;
9
- role: import("@sinclair/typebox").TString;
10
- takv: import("@sinclair/typebox").TString;
11
- uid: import("@sinclair/typebox").TString;
12
- }>;
13
- export default class ContactCommands extends Commands {
14
- schema: {
15
- list: {
16
- description: string;
17
- params: import("@sinclair/typebox").TObject<{}>;
18
- query: import("@sinclair/typebox").TObject<{}>;
19
- formats: CommandOutputFormat[];
20
- };
21
- };
22
- cli(args: ParsedArgs): Promise<object | string>;
23
- list(): Promise<Array<Static<typeof Contact>>>;
24
- }
@@ -1,44 +0,0 @@
1
- import { Type } from '@sinclair/typebox';
2
- import Commands, { CommandOutputFormat } from '../commands.js';
3
- export const Contact = Type.Object({
4
- filterGroups: Type.Any(), // I'm not familiar with this one
5
- notes: Type.String(),
6
- callsign: Type.String(),
7
- team: Type.String(),
8
- role: Type.String(),
9
- takv: Type.String(),
10
- uid: Type.String()
11
- });
12
- export default class ContactCommands extends Commands {
13
- schema = {
14
- list: {
15
- description: 'List Contacts',
16
- params: Type.Object({}),
17
- query: Type.Object({}),
18
- formats: [CommandOutputFormat.JSON]
19
- }
20
- };
21
- async cli(args) {
22
- if (args._[3] === 'list') {
23
- const list = await this.list();
24
- if (args.format === 'json') {
25
- return list;
26
- }
27
- else {
28
- return list.map((contact) => {
29
- return `${contact.callsign || '<No Callsign Set>'} (${contact.notes.trim()})`;
30
- }).join('\n');
31
- }
32
- }
33
- else {
34
- throw new Error('Unsupported Subcommand');
35
- }
36
- }
37
- async list() {
38
- const url = new URL(`/Marti/api/contacts/all`, this.api.url);
39
- return await this.api.fetch(url, {
40
- method: 'GET'
41
- });
42
- }
43
- }
44
- //# sourceMappingURL=contacts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../lib/api/contacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAU,MAAM,mBAAmB,CAAC;AAEjD,OAAO,QAAQ,EAAE,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/B,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,iCAAiC;IAC3D,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;IACvB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;IACnB,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,QAAQ;IACjD,MAAM,GAAG;QACL,IAAI,EAAE;YACF,WAAW,EAAE,eAAe;YAC5B,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;YAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBACxB,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,mBAAmB,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;gBAClF,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,KAAK,CAAC,IAAI;QACN,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;YAC7B,MAAM,EAAE,KAAK;SAChB,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,21 +0,0 @@
1
- import type { ParsedArgs } from 'minimist';
2
- import { Static } from '@sinclair/typebox';
3
- import Commands, { CommandOutputFormat } from '../commands.js';
4
- export declare const CertificateResponse: import("@sinclair/typebox").TObject<{
5
- ca: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
6
- cert: import("@sinclair/typebox").TString;
7
- key: import("@sinclair/typebox").TString;
8
- }>;
9
- export default class CredentialCommands extends Commands {
10
- schema: {
11
- config: {
12
- description: string;
13
- params: import("@sinclair/typebox").TObject<{}>;
14
- query: import("@sinclair/typebox").TObject<{}>;
15
- formats: CommandOutputFormat[];
16
- };
17
- };
18
- cli(args: ParsedArgs): Promise<object | string>;
19
- config(): Promise<string>;
20
- generate(): Promise<Static<typeof CertificateResponse>>;
21
- }
@@ -1,83 +0,0 @@
1
- import { APIAuthPassword } from '../auth.js';
2
- import { Type } from '@sinclair/typebox';
3
- import Commands, { CommandOutputFormat } from '../commands.js';
4
- import pem from 'pem';
5
- import xmljs from 'xml-js';
6
- export const CertificateResponse = Type.Object({
7
- ca: Type.Array(Type.String()),
8
- cert: Type.String(),
9
- key: Type.String()
10
- });
11
- export default class CredentialCommands extends Commands {
12
- schema = {
13
- config: {
14
- description: 'Return TLS Config Info',
15
- params: Type.Object({}),
16
- query: Type.Object({}),
17
- formats: [CommandOutputFormat.JSON]
18
- }
19
- };
20
- async cli(args) {
21
- if (args._[3] === 'config') {
22
- return this.config();
23
- }
24
- else {
25
- throw new Error('Unsupported Subcommand');
26
- }
27
- }
28
- async config() {
29
- const url = new URL(`/Marti/api/tls/config`, this.api.url);
30
- return await this.api.fetch(url, {
31
- method: 'GET'
32
- });
33
- }
34
- async generate() {
35
- if (!(this.api.auth instanceof APIAuthPassword))
36
- throw new Error('Must use Password Auth');
37
- const config = xmljs.xml2js(await this.config(), { compact: true });
38
- let organization = null;
39
- let organizationUnit = null;
40
- const nameEntries = config['ns2:certificateConfig'].nameEntries;
41
- if (nameEntries && nameEntries.nameEntry) {
42
- for (const ne of nameEntries.nameEntry) {
43
- if (ne._attributes && ne._attributes.name === 'O')
44
- organization = ne._attributes.value;
45
- if (ne._attributes && ne._attributes.name === 'OU')
46
- organizationUnit = ne._attributes.value;
47
- }
48
- }
49
- const createCSR = pem.promisified.createCSR;
50
- const keys = await createCSR({
51
- organization,
52
- organizationUnit,
53
- commonName: this.api.auth.username
54
- });
55
- const url = new URL(`/Marti/api/tls/signClient/v2`, this.api.url);
56
- url.searchParams.append('clientUid', this.api.auth.username + ' (ETL)');
57
- url.searchParams.append('version', '3');
58
- const res = await this.api.fetch(url, {
59
- method: 'POST',
60
- nocookies: true,
61
- headers: {
62
- Accept: 'application/json',
63
- Authorization: 'Basic ' + btoa(this.api.auth.username + ":" + this.api.auth.password)
64
- },
65
- body: keys.csr
66
- });
67
- let cert = '-----BEGIN CERTIFICATE-----\n' + res.signedCert;
68
- if (!res.signedCert.endsWith('\n'))
69
- cert = cert + '\n';
70
- cert = cert + '-----END CERTIFICATE-----';
71
- const chain = [];
72
- if (res.ca0)
73
- chain.push(res.ca0);
74
- if (res.ca1)
75
- chain.push(res.ca1);
76
- return {
77
- ca: chain,
78
- cert,
79
- key: keys.clientKey
80
- };
81
- }
82
- }
83
- //# sourceMappingURL=credentials.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../lib/api/credentials.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { Static } from '@sinclair/typebox';
2
- import { Readable } from 'node:stream';
3
- import Commands from '../commands.js';
4
- export declare const ExportInput: import("@sinclair/typebox").TObject<{
5
- startTime: import("@sinclair/typebox").TString;
6
- endTime: import("@sinclair/typebox").TString;
7
- groups: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
8
- format: import("@sinclair/typebox").TString;
9
- interval: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
10
- multiTrackThreshold: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
11
- extendedData: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
12
- optimizeExport: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
13
- }>;
14
- /**
15
- * @class
16
- */
17
- export default class ExportCommands extends Commands {
18
- schema: {};
19
- cli(): Promise<object | string>;
20
- export(query: Static<typeof ExportInput>): Promise<Readable>;
21
- }
@@ -1,37 +0,0 @@
1
- import { Type } from '@sinclair/typebox';
2
- import Commands from '../commands.js';
3
- export const ExportInput = Type.Object({
4
- startTime: Type.String(),
5
- endTime: Type.String(),
6
- groups: Type.Array(Type.String()),
7
- format: Type.String({ enum: ['kmz', 'kml'] }),
8
- interval: Type.Optional(Type.Number()),
9
- multiTrackThreshold: Type.Optional(Type.String()),
10
- extendedData: Type.Optional(Type.Boolean()),
11
- optimizeExport: Type.Optional(Type.Boolean()),
12
- });
13
- /**
14
- * @class
15
- */
16
- export default class ExportCommands extends Commands {
17
- schema = {};
18
- async cli() {
19
- throw new Error('Unsupported Subcommand');
20
- }
21
- async export(query) {
22
- const url = new URL(`/Marti/ExportMissionKML`, this.api.url);
23
- const params = new URLSearchParams();
24
- let q;
25
- for (q in query) {
26
- if (query[q] !== undefined) {
27
- params.append(q, String(query[q]));
28
- }
29
- }
30
- const res = await this.api.fetch(url, {
31
- method: 'POST',
32
- body: params
33
- }, true);
34
- return res.body;
35
- }
36
- }
37
- //# sourceMappingURL=export.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../lib/api/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAU,MAAM,mBAAmB,CAAC;AAEjD,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;IACxB,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACjC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACtC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACjD,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC3C,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;CAChD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,QAAQ;IAChD,MAAM,GAAG,EAAE,CAAC;IAEZ,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAiC;QAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,CAAmC,CAAC;QACxC,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;YACd,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAG,CAAC;gBAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;SACf,EAAE,IAAI,CAAC,CAAC;QAET,OAAO,GAAG,CAAC,IAAI,CAAC;IACpB,CAAC;CACJ"}
@@ -1,77 +0,0 @@
1
- import type { ParsedArgs } from 'minimist';
2
- import { Readable } from 'node:stream';
3
- import Commands, { CommandOutputFormat } from '../commands.js';
4
- import { Static } from '@sinclair/typebox';
5
- export declare const Content: import("@sinclair/typebox").TObject<{
6
- UID: import("@sinclair/typebox").TString;
7
- SubmissionDateTime: import("@sinclair/typebox").TString;
8
- Keywords: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
9
- MIMEType: import("@sinclair/typebox").TString;
10
- SubmissionUser: import("@sinclair/typebox").TString;
11
- PrimaryKey: import("@sinclair/typebox").TString;
12
- Hash: import("@sinclair/typebox").TString;
13
- CreatorUid: import("@sinclair/typebox").TString;
14
- Name: import("@sinclair/typebox").TString;
15
- }>;
16
- export declare const TAKList_Content: import("@sinclair/typebox").TObject<{
17
- version: import("@sinclair/typebox").TString;
18
- type: import("@sinclair/typebox").TString;
19
- data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
20
- filename: import("@sinclair/typebox").TString;
21
- keywords: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
22
- mimeType: import("@sinclair/typebox").TString;
23
- name: import("@sinclair/typebox").TString;
24
- submissionTime: import("@sinclair/typebox").TString;
25
- submitter: import("@sinclair/typebox").TString;
26
- uid: import("@sinclair/typebox").TString;
27
- size: import("@sinclair/typebox").TInteger;
28
- }>>;
29
- messages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
30
- nodeId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
31
- }>;
32
- export declare const Config: import("@sinclair/typebox").TObject<{
33
- uploadSizeLimit: import("@sinclair/typebox").TInteger;
34
- }>;
35
- export default class FileCommands extends Commands {
36
- schema: {
37
- list: {
38
- description: string;
39
- params: import("@sinclair/typebox").TObject<{}>;
40
- query: import("@sinclair/typebox").TObject<{}>;
41
- formats: CommandOutputFormat[];
42
- };
43
- };
44
- cli(args: ParsedArgs): Promise<object | string>;
45
- list(): Promise<Static<typeof TAKList_Content>>;
46
- meta(hash: string): Promise<string>;
47
- download(hash: string): Promise<Readable>;
48
- adminDelete(hash: string): Promise<any>;
49
- delete(hash: string): Promise<any>;
50
- /**
51
- * Update a Package that should appear in the Public Data Packages List
52
- */
53
- uploadPackage(opts: {
54
- name: string;
55
- creatorUid: string;
56
- hash: string;
57
- keywords?: string[];
58
- mimetype?: string;
59
- groups?: string[];
60
- }, body: Readable | Buffer): Promise<string>;
61
- /**
62
- * Update a Package that will not appear in the Public Data Packages List
63
- * used primarily for sharing files between TAK clients
64
- */
65
- upload(opts: {
66
- name: string;
67
- contentLength: number;
68
- contentType?: string;
69
- keywords: string[];
70
- creatorUid: string;
71
- latitude?: string;
72
- longitude?: string;
73
- altitude?: string;
74
- }, body: Readable | Buffer): Promise<Static<typeof Content>>;
75
- count(): Promise<any>;
76
- config(): Promise<Static<typeof Config>>;
77
- }
@@ -1,170 +0,0 @@
1
- import FormData from 'form-data';
2
- import { Readable } from 'node:stream';
3
- import mime from 'mime';
4
- import Commands, { CommandOutputFormat } from '../commands.js';
5
- import { TAKList } from './types.js';
6
- import { Type } from '@sinclair/typebox';
7
- export const Content = Type.Object({
8
- UID: Type.String(),
9
- SubmissionDateTime: Type.String(),
10
- Keywords: Type.Array(Type.String()),
11
- MIMEType: Type.String(),
12
- SubmissionUser: Type.String(),
13
- PrimaryKey: Type.String(),
14
- Hash: Type.String(),
15
- CreatorUid: Type.String(),
16
- Name: Type.String()
17
- });
18
- export const TAKList_Content = TAKList(Type.Object({
19
- filename: Type.String(),
20
- keywords: Type.Array(Type.String()),
21
- mimeType: Type.String(),
22
- name: Type.String(),
23
- submissionTime: Type.String(),
24
- submitter: Type.String(),
25
- uid: Type.String(),
26
- size: Type.Integer(),
27
- }));
28
- export const Config = Type.Object({
29
- uploadSizeLimit: Type.Integer()
30
- });
31
- export default class FileCommands extends Commands {
32
- schema = {
33
- list: {
34
- description: 'List Files',
35
- params: Type.Object({}),
36
- query: Type.Object({}),
37
- formats: [CommandOutputFormat.JSON]
38
- }
39
- };
40
- async cli(args) {
41
- if (args._[3] === 'list') {
42
- const list = await this.list();
43
- if (args.format === 'json') {
44
- return list;
45
- }
46
- else {
47
- return list.data.map((data) => {
48
- return data.filename;
49
- }).join('\n');
50
- }
51
- }
52
- else {
53
- throw new Error('Unsupported Subcommand');
54
- }
55
- }
56
- async list() {
57
- const url = new URL(`/Marti/api/sync/search`, this.api.url);
58
- return await this.api.fetch(url, {
59
- method: 'GET'
60
- });
61
- }
62
- async meta(hash) {
63
- const url = new URL(`/Marti/sync/${encodeURIComponent(hash)}/metadata`, this.api.url);
64
- const res = await this.api.fetch(url, {
65
- method: 'GET'
66
- }, true);
67
- const body = await res.text();
68
- return body;
69
- }
70
- async download(hash) {
71
- const url = new URL(`/Marti/sync/content`, this.api.url);
72
- url.searchParams.append('hash', hash);
73
- const res = await this.api.fetch(url, {
74
- method: 'GET'
75
- }, true);
76
- return res.body;
77
- }
78
- async adminDelete(hash) {
79
- const url = new URL(`/Marti/api/files/${hash}`, this.api.url);
80
- return await this.api.fetch(url, {
81
- method: 'DELETE',
82
- });
83
- }
84
- async delete(hash) {
85
- const url = new URL(`/Marti/sync/delete`, this.api.url);
86
- url.searchParams.append('hash', hash);
87
- return await this.api.fetch(url, {
88
- method: 'DELETE',
89
- });
90
- }
91
- // TODO Return a Content Object
92
- /**
93
- * Update a Package that should appear in the Public Data Packages List
94
- */
95
- async uploadPackage(opts, body) {
96
- const url = new URL(`/Marti/sync/missionupload`, this.api.url);
97
- url.searchParams.append('filename', opts.name);
98
- url.searchParams.append('creatorUid', opts.creatorUid);
99
- url.searchParams.append('hash', opts.hash);
100
- if (opts.mimetype) {
101
- url.searchParams.append('mimetype', opts.mimetype);
102
- }
103
- // Needs this keywordt to appear in public list
104
- url.searchParams.append('keyword', 'missionpackage');
105
- if (opts.keywords) {
106
- for (const keyword of opts.keywords) {
107
- if (keyword.toLowerCase() === 'missionpackage')
108
- continue;
109
- url.searchParams.append('keyword', keyword);
110
- }
111
- }
112
- if (opts.groups) {
113
- for (const group of opts.groups) {
114
- // This is intentionally case sensitive due to an apparent bug in TAK server
115
- url.searchParams.append('Groups', group);
116
- }
117
- }
118
- if (body instanceof Buffer) {
119
- body = Readable.from(body);
120
- }
121
- const form = new FormData();
122
- form.append('assetfile', body);
123
- const res = await this.api.fetch(url, {
124
- method: 'POST',
125
- body: form
126
- });
127
- return res;
128
- }
129
- /**
130
- * Update a Package that will not appear in the Public Data Packages List
131
- * used primarily for sharing files between TAK clients
132
- */
133
- async upload(opts, body) {
134
- const url = new URL(`/Marti/sync/upload`, this.api.url);
135
- url.searchParams.append('name', opts.name);
136
- url.searchParams.append('keywords', opts.keywords.join(','));
137
- url.searchParams.append('creatorUid', opts.creatorUid);
138
- if (opts.altitude)
139
- url.searchParams.append('altitude', opts.altitude);
140
- if (opts.longitude)
141
- url.searchParams.append('longitude', opts.longitude);
142
- if (opts.latitude)
143
- url.searchParams.append('latitude', opts.latitude);
144
- if (body instanceof Buffer) {
145
- body = Readable.from(body);
146
- }
147
- const res = await this.api.fetch(url, {
148
- method: 'POST',
149
- headers: {
150
- 'Content-Type': opts.contentType ? opts.contentType : mime.getType(opts.name),
151
- 'Content-Length': opts.contentLength
152
- },
153
- body: body
154
- });
155
- return JSON.parse(res);
156
- }
157
- async count() {
158
- const url = new URL('/Marti/api/files/metadata/count', this.api.url);
159
- return await this.api.fetch(url, {
160
- method: 'GET'
161
- });
162
- }
163
- async config() {
164
- const url = new URL('/files/api/config', this.api.url);
165
- return await this.api.fetch(url, {
166
- method: 'GET'
167
- });
168
- }
169
- }
170
- //# sourceMappingURL=files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../lib/api/files.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- import { Static } from '@sinclair/typebox';
2
- import type { ParsedArgs } from 'minimist';
3
- import Commands, { CommandOutputFormat } from '../commands.js';
4
- export declare const Group: import("@sinclair/typebox").TObject<{
5
- name: import("@sinclair/typebox").TString;
6
- direction: import("@sinclair/typebox").TString;
7
- created: import("@sinclair/typebox").TString;
8
- type: import("@sinclair/typebox").TString;
9
- bitpos: import("@sinclair/typebox").TNumber;
10
- active: import("@sinclair/typebox").TBoolean;
11
- description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
12
- }>;
13
- export declare const GroupListInput: import("@sinclair/typebox").TObject<{
14
- useCache: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
15
- }>;
16
- export declare const TAKList_Group: import("@sinclair/typebox").TObject<{
17
- version: import("@sinclair/typebox").TString;
18
- type: import("@sinclair/typebox").TString;
19
- data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
20
- name: import("@sinclair/typebox").TString;
21
- direction: import("@sinclair/typebox").TString;
22
- created: import("@sinclair/typebox").TString;
23
- type: import("@sinclair/typebox").TString;
24
- bitpos: import("@sinclair/typebox").TNumber;
25
- active: import("@sinclair/typebox").TBoolean;
26
- description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
27
- }>>;
28
- messages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
29
- nodeId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
30
- }>;
31
- export default class GroupCommands extends Commands {
32
- schema: {
33
- list: {
34
- description: string;
35
- params: import("@sinclair/typebox").TObject<{}>;
36
- query: import("@sinclair/typebox").TObject<{}>;
37
- formats: CommandOutputFormat[];
38
- };
39
- };
40
- cli(args: ParsedArgs): Promise<object | string>;
41
- list(query?: Static<typeof GroupListInput>): Promise<Static<typeof TAKList_Group>>;
42
- update(body: Static<typeof Group>[], query?: Static<typeof GroupListInput>): Promise<void>;
43
- }
@@ -1,68 +0,0 @@
1
- import { Type } from '@sinclair/typebox';
2
- import { TAKList } from './types.js';
3
- import Commands, { CommandOutputFormat } from '../commands.js';
4
- export const Group = Type.Object({
5
- name: Type.String(),
6
- direction: Type.String(),
7
- created: Type.String(),
8
- type: Type.String(),
9
- bitpos: Type.Number(),
10
- active: Type.Boolean(),
11
- description: Type.Optional(Type.String())
12
- });
13
- export const GroupListInput = Type.Object({
14
- useCache: Type.Optional(Type.Boolean())
15
- });
16
- export const TAKList_Group = TAKList(Group);
17
- export default class GroupCommands extends Commands {
18
- schema = {
19
- list: {
20
- description: 'List Missions',
21
- params: Type.Object({}),
22
- query: Type.Object({}),
23
- formats: [CommandOutputFormat.JSON]
24
- }
25
- };
26
- async cli(args) {
27
- if (args._[3] === 'list') {
28
- const list = await this.list();
29
- if (args.format === 'json') {
30
- return list;
31
- }
32
- else {
33
- return list.data.map((channel) => {
34
- return `${channel.name} - ${channel.description}`;
35
- }).join('\n');
36
- }
37
- }
38
- else {
39
- throw new Error('Unsupported Subcommand');
40
- }
41
- }
42
- async list(query = {}) {
43
- const url = new URL(`/Marti/api/groups/all`, this.api.url);
44
- let q;
45
- for (q in query) {
46
- if (query[q] !== undefined) {
47
- url.searchParams.append(q, String(query[q]));
48
- }
49
- }
50
- return await this.api.fetch(url, {
51
- method: 'GET'
52
- });
53
- }
54
- async update(body, query = {}) {
55
- const url = new URL(`/Marti/api/groups/active`, this.api.url);
56
- let q;
57
- for (q in query) {
58
- if (query[q] !== undefined) {
59
- url.searchParams.append(q, String(query[q]));
60
- }
61
- }
62
- await this.api.fetch(url, {
63
- method: 'PUT',
64
- body
65
- });
66
- }
67
- }
68
- //# sourceMappingURL=groups.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"groups.js","sourceRoot":"","sources":["../../../lib/api/groups.ts"],"names":[],"mappings":"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"}