@tak-ps/node-tak 8.10.0 → 9.0.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 (65) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +36 -1
  3. package/cli.ts +176 -0
  4. package/dist/cli.js +136 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/index.js +16 -5
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/api/contacts.js +24 -4
  9. package/dist/lib/api/contacts.js.map +1 -1
  10. package/dist/lib/api/credentials.js +16 -4
  11. package/dist/lib/api/credentials.js.map +1 -1
  12. package/dist/lib/api/export.js +5 -4
  13. package/dist/lib/api/export.js.map +1 -1
  14. package/dist/lib/api/files.js +40 -8
  15. package/dist/lib/api/files.js.map +1 -1
  16. package/dist/lib/api/groups.js +24 -4
  17. package/dist/lib/api/groups.js.map +1 -1
  18. package/dist/lib/api/injectors.js +24 -4
  19. package/dist/lib/api/injectors.js.map +1 -1
  20. package/dist/lib/api/mission-layer.js +11 -4
  21. package/dist/lib/api/mission-layer.js.map +1 -1
  22. package/dist/lib/api/mission-log.js +5 -4
  23. package/dist/lib/api/mission-log.js.map +1 -1
  24. package/dist/lib/api/mission.js +24 -4
  25. package/dist/lib/api/mission.js.map +1 -1
  26. package/dist/lib/api/oauth.js +5 -4
  27. package/dist/lib/api/oauth.js.map +1 -1
  28. package/dist/lib/api/package.js +24 -4
  29. package/dist/lib/api/package.js.map +1 -1
  30. package/dist/lib/api/query.js +5 -4
  31. package/dist/lib/api/query.js.map +1 -1
  32. package/dist/lib/api/repeater.js +5 -4
  33. package/dist/lib/api/repeater.js.map +1 -1
  34. package/dist/lib/api/subscriptions.js +5 -4
  35. package/dist/lib/api/subscriptions.js.map +1 -1
  36. package/dist/lib/api/video.js +16 -4
  37. package/dist/lib/api/video.js.map +1 -1
  38. package/dist/lib/api.js +17 -0
  39. package/dist/lib/api.js.map +1 -1
  40. package/dist/lib/auth.js +11 -0
  41. package/dist/lib/auth.js.map +1 -1
  42. package/dist/lib/commands.js +27 -0
  43. package/dist/lib/commands.js.map +1 -0
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/index.ts +29 -19
  46. package/lib/api/contacts.ts +23 -5
  47. package/lib/api/credentials.ts +17 -6
  48. package/lib/api/export.ts +5 -5
  49. package/lib/api/files.ts +43 -10
  50. package/lib/api/groups.ts +24 -5
  51. package/lib/api/injectors.ts +24 -5
  52. package/lib/api/mission-layer.ts +11 -5
  53. package/lib/api/mission-log.ts +5 -5
  54. package/lib/api/mission.ts +24 -5
  55. package/lib/api/oauth.ts +5 -5
  56. package/lib/api/package.ts +24 -5
  57. package/lib/api/query.ts +5 -5
  58. package/lib/api/repeater.ts +5 -5
  59. package/lib/api/subscriptions.ts +5 -5
  60. package/lib/api/video.ts +16 -5
  61. package/lib/api.ts +18 -0
  62. package/lib/auth.ts +12 -0
  63. package/lib/commands.ts +41 -0
  64. package/package.json +8 -1
  65. package/tsconfig.json +1 -0
package/CHANGELOG.md CHANGED
@@ -10,6 +10,16 @@
10
10
 
11
11
  ## Version History
12
12
 
13
+ ### v9.0.1
14
+
15
+ - :bug: Fix Global bin registration
16
+
17
+ ### v9.0.0
18
+
19
+ - :rocket: *Breaking* Change TAK constructor & connect sig. to make CloudTAK used props optional
20
+ - :tada: Introduce new CLI
21
+ - :tada: Introduce `Files.list` API Integration
22
+
13
23
  ### v8.10.0
14
24
 
15
25
  - :rocket: Support additional TLS options
package/README.md CHANGED
@@ -25,7 +25,42 @@ To install `node-tak` with npm run
25
25
  npm install @tak-ps/node-tak
26
26
  ```
27
27
 
28
- ## Usage Examples
28
+ or for use with the global CLI:
29
+
30
+ ```bash
31
+ npm install --global @tak-ps/node-tak
32
+ ```
33
+
34
+ ## CLI Usage Examples
35
+
36
+ ### Initial Setup
37
+
38
+ The initial run of the CLI will generate a new Connection Profile & Credentials
39
+
40
+ ```
41
+ tak
42
+ ```
43
+
44
+ Once the profile is generated you can specify it with `--profile <profile>` in any command
45
+ or if it is not provided it will be interactively requested
46
+
47
+ ### Streaming COTs
48
+
49
+ ```
50
+ tak stream
51
+ ```
52
+
53
+ ### API Operations
54
+
55
+ ```
56
+ tak <command> <subcommand>
57
+ tak mission list
58
+ tak package list
59
+ ```
60
+
61
+ etc.
62
+
63
+ ## SDK Usage Examples
29
64
 
30
65
  ### Basic Streaming COT Usage
31
66
 
package/cli.ts ADDED
@@ -0,0 +1,176 @@
1
+ #!/usr/bin/env tsx
2
+
3
+ import fs from 'node:fs/promises'
4
+ import os from 'node:os';
5
+ import path from 'node:path';
6
+ import minimist from 'minimist';
7
+ import { Static } from '@sinclair/typebox';
8
+ import TAK from './index.js';
9
+ import TAKAPI, { CommandList } from './lib/api.js';
10
+ import { APIAuthPassword, APIAuthCertificate } from './lib/auth.js';
11
+ import Commands, { CommandConfig } from './lib/commands.js';
12
+ import { select, confirm, number, input, password, Separator } from '@inquirer/prompts';
13
+
14
+ const args = minimist(process.argv, {
15
+ string: ['profile', 'format'],
16
+ });
17
+
18
+ const configPath = path.resolve(os.homedir(), './.tak.json');
19
+ let config: Static<typeof CommandConfig>;
20
+
21
+ try {
22
+ config = JSON.parse(String(await fs.readFile(configPath)));
23
+ } catch (err) {
24
+ if (err instanceof Error && err.message.includes('no such file or directory')) {
25
+ const answer = await confirm({
26
+ message: 'No TAK Config file Detected, create one?'
27
+ });
28
+
29
+ if (!answer) {
30
+ throw new Error('No config file and not creating one');
31
+ }
32
+
33
+ config = {
34
+ version: 1,
35
+ profiles: {}
36
+ } as Static<typeof CommandConfig>;
37
+
38
+ await fs.writeFile(
39
+ configPath,
40
+ JSON.stringify(config, null, 4)
41
+ )
42
+ } else {
43
+ throw err;
44
+ }
45
+ }
46
+
47
+ if (!args.profile && config.profiles && Object.keys(config.profiles).length) {
48
+ args.profile = await select({
49
+ message: 'Choose a profile',
50
+ choices: [
51
+ { name: 'New Profile', value: '' },
52
+ new Separator(),
53
+ ].concat(Object.keys(config.profiles).map((profile) => {
54
+ return {
55
+ name: profile,
56
+ value: profile
57
+ };
58
+ }),
59
+ )
60
+ });
61
+ }
62
+
63
+ if (!args.profile) {
64
+ console.error('Create new TAK Server Profile:');
65
+
66
+ args.profile = await input({ message: 'Enter a name for this profile' });
67
+
68
+ const host = await input({ message: 'Server hostname', default: 'ops.example.com' });
69
+
70
+ let marti: number | undefined = 8443;
71
+ let webtak: number | undefined = 443;
72
+ let stream: number | undefined = 8089;
73
+
74
+ do {
75
+ marti = await number({ message: 'Marti API Port', default: marti });
76
+ } while (!marti || isNaN(marti))
77
+
78
+ do {
79
+ webtak = await number({ message: 'WebTAK API Port', default: webtak });
80
+ } while (!webtak || isNaN(webtak))
81
+
82
+ do {
83
+ stream = await number({ message: 'Streaming Port', default: stream });
84
+ } while (!stream || isNaN(stream))
85
+
86
+ if (!config.profiles) config.profiles = {};
87
+ config.profiles[args.profile] = {
88
+ host,
89
+ ports: { webtak, marti, stream }
90
+ };
91
+ }
92
+
93
+ if (args.profile && !config.profiles[args.profile]) {
94
+ throw new Error(`Profile "${args.profile}" is not defined in config file`);
95
+ } else if (!config.profiles[args.profile].auth) {
96
+ const user = await input({ message: 'TAK Username' });
97
+ const pass = await password({ message: 'TAK Password' });
98
+
99
+ const api = await TAKAPI.init(
100
+ new URL('https://' + config.profiles[args.profile].host + ':' + config.profiles[args.profile].ports.webtak),
101
+ new APIAuthPassword(user, pass)
102
+ );
103
+
104
+ config.profiles[args.profile].auth = await api.Credentials.generate();
105
+ }
106
+
107
+ let command = args._[2];
108
+
109
+ if (!command) {
110
+ command = await select({
111
+ message: 'Choose a Command Group',
112
+ choices: [{
113
+ name: 'stream',
114
+ value: 'stream'
115
+ }].concat(Object.keys(CommandList).map((profile) => {
116
+ return {
117
+ name: profile,
118
+ value: profile
119
+ };
120
+ }))
121
+ });
122
+ }
123
+
124
+ await fs.writeFile(
125
+ configPath,
126
+ JSON.stringify(config, null, 4)
127
+ )
128
+
129
+
130
+ const auth = config.profiles[args.profile].auth;
131
+ if (!auth) throw new Error(`No Auth in ${args.profile} profile`);
132
+
133
+ if (command === 'stream') {
134
+ const tak = await TAK.connect(
135
+ new URL('ssl://' + config.profiles[args.profile].host + ':' + config.profiles[args.profile].ports.stream),
136
+ auth
137
+ );
138
+
139
+ tak.on('cot', (cot) => {
140
+ console.log(JSON.stringify(cot.to_geojson()));
141
+ });
142
+ } else {
143
+ if (!config.profiles[args.profile].auth) throw new Error(`No Auth in ${args.profile} profile`);
144
+
145
+ const tak = new TAKAPI(
146
+ new URL('https://' + config.profiles[args.profile].host + ':' + config.profiles[args.profile].ports.marti),
147
+ new APIAuthCertificate(auth.cert, auth.key)
148
+ );
149
+
150
+ const invoke = tak[CommandList[command]];
151
+ if (!invoke || !(invoke instanceof Commands)) throw new Error(`${command} not found`);
152
+
153
+ if (!args._[3] || args._[3] === 'help') {
154
+ const subcommands = <T extends object>(obj: T) => Object.keys(obj) as Array<keyof T>;
155
+
156
+ console.log((
157
+ [
158
+ 'Command:',
159
+ ` tak ${args._[2]} <subcommand>`,
160
+ 'SubCommands:',
161
+ ].concat(subcommands(invoke.schema).map((subcommand) => {
162
+ // @ts-expect-error TODO need to figure out the never here when using keyof
163
+ return ` ${String(subcommand)} - ${invoke.schema[subcommand].description}`
164
+ }))).join('\n')
165
+ )
166
+ } else {
167
+ const res = await invoke.cli(args);
168
+
169
+ if (typeof res === 'string') {
170
+ console.log(res);
171
+ } else {
172
+ console.log(JSON.stringify(res, null, 4));
173
+ }
174
+ }
175
+ }
176
+
package/dist/cli.js ADDED
@@ -0,0 +1,136 @@
1
+ #!/usr/bin/env tsx
2
+ import fs from 'node:fs/promises';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import minimist from 'minimist';
6
+ import TAK from './index.js';
7
+ import TAKAPI, { CommandList } from './lib/api.js';
8
+ import { APIAuthPassword, APIAuthCertificate } from './lib/auth.js';
9
+ import Commands from './lib/commands.js';
10
+ import { select, confirm, number, input, password, Separator } from '@inquirer/prompts';
11
+ const args = minimist(process.argv, {
12
+ string: ['profile', 'format'],
13
+ });
14
+ const configPath = path.resolve(os.homedir(), './.tak.json');
15
+ let config;
16
+ try {
17
+ config = JSON.parse(String(await fs.readFile(configPath)));
18
+ }
19
+ catch (err) {
20
+ if (err instanceof Error && err.message.includes('no such file or directory')) {
21
+ const answer = await confirm({
22
+ message: 'No TAK Config file Detected, create one?'
23
+ });
24
+ if (!answer) {
25
+ throw new Error('No config file and not creating one');
26
+ }
27
+ config = {
28
+ version: 1,
29
+ profiles: {}
30
+ };
31
+ await fs.writeFile(configPath, JSON.stringify(config, null, 4));
32
+ }
33
+ else {
34
+ throw err;
35
+ }
36
+ }
37
+ if (!args.profile && config.profiles && Object.keys(config.profiles).length) {
38
+ args.profile = await select({
39
+ message: 'Choose a profile',
40
+ choices: [
41
+ { name: 'New Profile', value: '' },
42
+ new Separator(),
43
+ ].concat(Object.keys(config.profiles).map((profile) => {
44
+ return {
45
+ name: profile,
46
+ value: profile
47
+ };
48
+ }))
49
+ });
50
+ }
51
+ if (!args.profile) {
52
+ console.error('Create new TAK Server Profile:');
53
+ args.profile = await input({ message: 'Enter a name for this profile' });
54
+ const host = await input({ message: 'Server hostname', default: 'ops.example.com' });
55
+ let marti = 8443;
56
+ let webtak = 443;
57
+ let stream = 8089;
58
+ do {
59
+ marti = await number({ message: 'Marti API Port', default: marti });
60
+ } while (!marti || isNaN(marti));
61
+ do {
62
+ webtak = await number({ message: 'WebTAK API Port', default: webtak });
63
+ } while (!webtak || isNaN(webtak));
64
+ do {
65
+ stream = await number({ message: 'Streaming Port', default: stream });
66
+ } while (!stream || isNaN(stream));
67
+ if (!config.profiles)
68
+ config.profiles = {};
69
+ config.profiles[args.profile] = {
70
+ host,
71
+ ports: { webtak, marti, stream }
72
+ };
73
+ }
74
+ if (args.profile && !config.profiles[args.profile]) {
75
+ throw new Error(`Profile "${args.profile}" is not defined in config file`);
76
+ }
77
+ else if (!config.profiles[args.profile].auth) {
78
+ const user = await input({ message: 'TAK Username' });
79
+ const pass = await password({ message: 'TAK Password' });
80
+ const api = await TAKAPI.init(new URL('https://' + config.profiles[args.profile].host + ':' + config.profiles[args.profile].ports.webtak), new APIAuthPassword(user, pass));
81
+ config.profiles[args.profile].auth = await api.Credentials.generate();
82
+ }
83
+ let command = args._[2];
84
+ if (!command) {
85
+ command = await select({
86
+ message: 'Choose a Command Group',
87
+ choices: [{
88
+ name: 'stream',
89
+ value: 'stream'
90
+ }].concat(Object.keys(CommandList).map((profile) => {
91
+ return {
92
+ name: profile,
93
+ value: profile
94
+ };
95
+ }))
96
+ });
97
+ }
98
+ await fs.writeFile(configPath, JSON.stringify(config, null, 4));
99
+ const auth = config.profiles[args.profile].auth;
100
+ if (!auth)
101
+ throw new Error(`No Auth in ${args.profile} profile`);
102
+ if (command === 'stream') {
103
+ const tak = await TAK.connect(new URL('ssl://' + config.profiles[args.profile].host + ':' + config.profiles[args.profile].ports.stream), auth);
104
+ tak.on('cot', (cot) => {
105
+ console.log(JSON.stringify(cot.to_geojson()));
106
+ });
107
+ }
108
+ else {
109
+ if (!config.profiles[args.profile].auth)
110
+ throw new Error(`No Auth in ${args.profile} profile`);
111
+ const tak = new TAKAPI(new URL('https://' + config.profiles[args.profile].host + ':' + config.profiles[args.profile].ports.marti), new APIAuthCertificate(auth.cert, auth.key));
112
+ const invoke = tak[CommandList[command]];
113
+ if (!invoke || !(invoke instanceof Commands))
114
+ throw new Error(`${command} not found`);
115
+ if (!args._[3] || args._[3] === 'help') {
116
+ const subcommands = (obj) => Object.keys(obj);
117
+ console.log(([
118
+ 'Command:',
119
+ ` tak ${args._[2]} <subcommand>`,
120
+ 'SubCommands:',
121
+ ].concat(subcommands(invoke.schema).map((subcommand) => {
122
+ // @ts-expect-error TODO need to figure out the never here when using keyof
123
+ return ` ${String(subcommand)} - ${invoke.schema[subcommand].description}`;
124
+ }))).join('\n'));
125
+ }
126
+ else {
127
+ const res = await invoke.cli(args);
128
+ if (typeof res === 'string') {
129
+ console.log(res);
130
+ }
131
+ else {
132
+ console.log(JSON.stringify(res, null, 4));
133
+ }
134
+ }
135
+ }
136
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -19,10 +19,21 @@ export default class TAK extends EventEmitter {
19
19
  pingInterval;
20
20
  client;
21
21
  version;
22
- constructor(id, type, url, auth) {
22
+ /**
23
+ * @constructor
24
+ *
25
+ * @param url - Full URL of Streaming COT Endpoint IE: "https://ops.cotak.gov:8089"
26
+ * @param auth - TAK Certificate Pair
27
+ * @param opts - Options Object
28
+ * @param opts.id - When using multiple connections in a script, allows a unique ID per connection
29
+ * @param opts.type - When using multiple connections in a script, allows specifying a script provided connection type
30
+ */
31
+ constructor(url, auth, opts = {}) {
23
32
  super();
24
- this.id = id;
25
- this.type = type;
33
+ if (!opts)
34
+ opts = {};
35
+ this.id = opts.id || crypto.randomUUID();
36
+ this.type = opts.type || 'unknown';
26
37
  this.url = url;
27
38
  this.auth = auth;
28
39
  this.writing = false;
@@ -30,8 +41,8 @@ export default class TAK extends EventEmitter {
30
41
  this.destroyed = false;
31
42
  this.queue = [];
32
43
  }
33
- static async connect(id, url, auth) {
34
- const tak = new TAK(id, 'ssl', url, auth);
44
+ static async connect(url, auth, opts = {}) {
45
+ const tak = new TAK(url, auth, opts);
35
46
  if (url.protocol === 'ssl:') {
36
47
  if (!tak.auth.cert)
37
48
  throw new Error('auth.cert required');
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Type } from '@sinclair/typebox';
2
+ import Commands from '../commands.js';
2
3
  export const Contact = Type.Object({
3
4
  filterGroups: Type.Any(), // I'm not familiar with this one
4
5
  notes: Type.String(),
@@ -8,10 +9,29 @@ export const Contact = Type.Object({
8
9
  takv: Type.String(),
9
10
  uid: Type.String()
10
11
  });
11
- export default class {
12
- api;
13
- constructor(api) {
14
- this.api = api;
12
+ export default class ContactCommands extends Commands {
13
+ schema = {
14
+ list: {
15
+ description: 'List Contacts',
16
+ params: Type.Object({}),
17
+ query: Type.Object({})
18
+ }
19
+ };
20
+ async cli(args) {
21
+ if (args._[3] === 'list') {
22
+ const list = await this.list();
23
+ if (args.format === 'json') {
24
+ return list;
25
+ }
26
+ else {
27
+ return list.map((contact) => {
28
+ return `${contact.callsign || '<No Callsign Set>'} (${contact.notes.trim()})`;
29
+ }).join('\n');
30
+ }
31
+ }
32
+ else {
33
+ throw new Error('Unsupported Subcommand');
34
+ }
15
35
  }
16
36
  async list() {
17
37
  const url = new URL(`/Marti/api/contacts/all`, this.api.url);
@@ -1 +1 @@
1
- {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../lib/api/contacts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAU,MAAM,mBAAmB,CAAC;AAEjD,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;IACV,GAAG,CAAS;IAEZ,YAAY,GAAW;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,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
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../lib/api/contacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAU,MAAM,mBAAmB,CAAC;AAEjD,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,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;SACzB;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,15 +1,27 @@
1
1
  import { APIAuthPassword } from '../auth.js';
2
2
  import { Type } from '@sinclair/typebox';
3
+ import Commands from '../commands.js';
3
4
  import pem from 'pem';
4
5
  import xml2js from 'xml2js';
5
6
  export const CertificateResponse = Type.Object({
6
7
  cert: Type.String(),
7
8
  key: Type.String()
8
9
  });
9
- export default class {
10
- api;
11
- constructor(api) {
12
- this.api = api;
10
+ export default class CredentialCommands extends Commands {
11
+ schema = {
12
+ config: {
13
+ description: 'Return TLS Config Info',
14
+ params: Type.Object({}),
15
+ query: Type.Object({})
16
+ }
17
+ };
18
+ async cli(args) {
19
+ if (args._[3] === 'config') {
20
+ return this.config();
21
+ }
22
+ else {
23
+ throw new Error('Unsupported Subcommand');
24
+ }
13
25
  }
14
26
  async config() {
15
27
  const url = new URL(`/Marti/api/tls/config`, this.api.url);
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../lib/api/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../lib/api/credentials.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Type } from '@sinclair/typebox';
2
+ import Commands from '../commands.js';
2
3
  export const ExportInput = Type.Object({
3
4
  startTime: Type.String(),
4
5
  endTime: Type.String(),
@@ -12,10 +13,10 @@ export const ExportInput = Type.Object({
12
13
  /**
13
14
  * @class
14
15
  */
15
- export default class {
16
- api;
17
- constructor(api) {
18
- this.api = api;
16
+ export default class ExportCommands extends Commands {
17
+ schema = {};
18
+ async cli() {
19
+ throw new Error('Unsupported Subcommand');
19
20
  }
20
21
  async export(query) {
21
22
  const url = new URL(`/Marti/ExportMissionKML`, this.api.url);
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../lib/api/export.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAU,MAAM,mBAAmB,CAAC;AAGjD,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;IACV,GAAG,CAAS;IAEZ,YAAY,GAAW;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,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
+ {"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,6 +1,8 @@
1
1
  import FormData from 'form-data';
2
2
  import { Readable } from 'node:stream';
3
3
  import mime from 'mime';
4
+ import Commands from '../commands.js';
5
+ import { TAKList } from './types.js';
4
6
  import { Type } from '@sinclair/typebox';
5
7
  export const Content = Type.Object({
6
8
  UID: Type.String(),
@@ -13,18 +15,48 @@ export const Content = Type.Object({
13
15
  CreatorUid: Type.String(),
14
16
  Name: Type.String()
15
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
+ }));
16
28
  export const Config = Type.Object({
17
29
  uploadSizeLimit: Type.Integer()
18
30
  });
19
- export default class File {
20
- api;
21
- constructor(api) {
22
- this.api = api;
31
+ export default class FileCommands extends Commands {
32
+ schema = {
33
+ list: {
34
+ description: 'List Files',
35
+ params: Type.Object({}),
36
+ query: Type.Object({})
37
+ }
38
+ };
39
+ async cli(args) {
40
+ if (args._[3] === 'list') {
41
+ const list = await this.list();
42
+ if (args.format === 'json') {
43
+ return list;
44
+ }
45
+ else {
46
+ return list.data.map((data) => {
47
+ return data.filename;
48
+ }).join('\n');
49
+ }
50
+ }
51
+ else {
52
+ throw new Error('Unsupported Subcommand');
53
+ }
23
54
  }
24
- // TODO Investigate this endpoint
25
- list() {
26
- new URL(`/Marti/api/sync/search`, this.api.url);
27
- // param hash=<hash>
55
+ async list() {
56
+ const url = new URL(`/Marti/api/sync/search`, this.api.url);
57
+ return await this.api.fetch(url, {
58
+ method: 'GET'
59
+ });
28
60
  }
29
61
  async meta(hash) {
30
62
  const url = new URL(`/Marti/sync/${encodeURIComponent(hash)}/metadata`, this.api.url);