@tak-ps/node-tak 8.2.1 → 8.4.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/.github/workflows/doc.yml +6 -6
- package/.github/workflows/release.yml +3 -3
- package/.github/workflows/test.yml +14 -9
- package/CHANGELOG.md +9 -0
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/api/contacts.js +23 -0
- package/dist/lib/api/contacts.js.map +1 -0
- package/dist/lib/api/credentials.js +62 -0
- package/dist/lib/api/credentials.js.map +1 -0
- package/dist/lib/api/export.js +36 -0
- package/dist/lib/api/export.js.map +1 -0
- package/dist/lib/api/files.js +112 -0
- package/dist/lib/api/files.js.map +1 -0
- package/dist/lib/api/groups.js +47 -0
- package/dist/lib/api/groups.js.map +1 -0
- package/dist/lib/api/mission-layer.js +245 -0
- package/dist/lib/api/mission-layer.js.map +1 -0
- package/dist/lib/api/mission-log.js +108 -0
- package/dist/lib/api/mission-log.js.map +1 -0
- package/dist/lib/api/mission.js +583 -0
- package/dist/lib/api/mission.js.map +1 -0
- package/dist/lib/api/oauth.js +54 -0
- package/dist/lib/api/oauth.js.map +1 -0
- package/dist/lib/api/package.js +42 -0
- package/dist/lib/api/package.js.map +1 -0
- package/dist/lib/api/query.js +60 -0
- package/dist/lib/api/query.js.map +1 -0
- package/dist/lib/api/subscriptions.js +73 -0
- package/dist/lib/api/subscriptions.js.map +1 -0
- package/dist/lib/api/types.js +42 -0
- package/dist/lib/api/types.js.map +1 -0
- package/dist/lib/api/video.js +123 -0
- package/dist/lib/api/video.js.map +1 -0
- package/dist/lib/api.js +123 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/auth.js +92 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/fetch.js +26 -0
- package/dist/lib/fetch.js.map +1 -0
- package/dist/lib/stream.js +9 -0
- package/dist/lib/stream.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/index.ts +8 -3
- package/lib/api/contacts.ts +27 -0
- package/lib/api/credentials.ts +74 -0
- package/lib/api/export.ts +44 -0
- package/lib/api/files.ts +151 -0
- package/lib/api/groups.ts +63 -0
- package/lib/api/mission-layer.ts +312 -0
- package/lib/api/mission-log.ts +140 -0
- package/lib/api/mission.ts +741 -0
- package/lib/api/oauth.ts +68 -0
- package/lib/api/package.ts +56 -0
- package/lib/api/query.ts +79 -0
- package/lib/api/subscriptions.ts +84 -0
- package/lib/api/types.ts +43 -0
- package/lib/api/video.ts +155 -0
- package/lib/api.ts +136 -0
- package/lib/auth.ts +117 -0
- package/lib/fetch.ts +38 -0
- package/lib/stream.ts +10 -0
- package/package.json +17 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../lib/api/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Type } from '@sinclair/typebox';
|
|
2
|
+
export const Package = Type.Object({
|
|
3
|
+
EXPIRATION: Type.String(),
|
|
4
|
+
UID: Type.String(),
|
|
5
|
+
SubmissionDateTime: Type.String(),
|
|
6
|
+
Keywords: Type.Array(Type.String()),
|
|
7
|
+
MIMEType: Type.String(),
|
|
8
|
+
Size: Type.String(),
|
|
9
|
+
SubmissionUser: Type.String(),
|
|
10
|
+
PrimaryKey: Type.String(),
|
|
11
|
+
Hash: Type.String(),
|
|
12
|
+
CreatorUid: Type.Optional(Type.Union([Type.Null(), Type.String()])),
|
|
13
|
+
Name: Type.String(),
|
|
14
|
+
Tool: Type.String()
|
|
15
|
+
});
|
|
16
|
+
export const ListInput = Type.Object({
|
|
17
|
+
tool: Type.Optional(Type.String()),
|
|
18
|
+
uid: Type.Optional(Type.String())
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* @class
|
|
22
|
+
*/
|
|
23
|
+
export default class {
|
|
24
|
+
api;
|
|
25
|
+
constructor(api) {
|
|
26
|
+
this.api = api;
|
|
27
|
+
}
|
|
28
|
+
async list(query) {
|
|
29
|
+
const url = new URL(`/Marti/sync/search`, this.api.url);
|
|
30
|
+
let q;
|
|
31
|
+
for (q in query) {
|
|
32
|
+
if (query[q] !== undefined) {
|
|
33
|
+
url.searchParams.append(q, String(query[q]));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const res = await this.api.fetch(url, {
|
|
37
|
+
method: 'GET'
|
|
38
|
+
});
|
|
39
|
+
return JSON.parse(res);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../../lib/api/package.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAU,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/B,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE;IACzB,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE;IAClB,kBAAkB,EAAE,IAAI,CAAC,MAAM,EAAE;IACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACnC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;IACvB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;IACnB,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE;IAC7B,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE;IACzB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAClC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;CACpC,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,IAAI,CAAC,KAA+B;QAItC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAExD,IAAI,CAAiC,CAAC;QACtC,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;YACd,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBACzB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;YAClC,MAAM,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAGpB,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import Err from '@openaddresses/batch-error';
|
|
2
|
+
import xmljs from 'xml-js';
|
|
3
|
+
import { Type } from '@sinclair/typebox';
|
|
4
|
+
import CoT from '@tak-ps/node-cot';
|
|
5
|
+
export const HistoryOptions = Type.Object({
|
|
6
|
+
start: Type.Optional(Type.String()),
|
|
7
|
+
end: Type.Optional(Type.String()),
|
|
8
|
+
secago: Type.Optional(Type.String()),
|
|
9
|
+
});
|
|
10
|
+
export default class COTQuery {
|
|
11
|
+
api;
|
|
12
|
+
constructor(api) {
|
|
13
|
+
this.api = api;
|
|
14
|
+
}
|
|
15
|
+
async singleFeat(uid) {
|
|
16
|
+
const cotstr = await this.single(uid);
|
|
17
|
+
return new CoT(cotstr).to_geojson();
|
|
18
|
+
}
|
|
19
|
+
async single(uid) {
|
|
20
|
+
const url = new URL(`/Marti/api/cot/xml/${encodeURIComponent(uid)}`, this.api.url);
|
|
21
|
+
const res = await this.api.fetch(url, {
|
|
22
|
+
method: 'GET'
|
|
23
|
+
}, true);
|
|
24
|
+
const body = await res.text();
|
|
25
|
+
if (body.trim().length === 0) {
|
|
26
|
+
throw new Err(404, null, 'CoT by that UID Not Found');
|
|
27
|
+
}
|
|
28
|
+
return body;
|
|
29
|
+
}
|
|
30
|
+
async historyFeats(uid, opts) {
|
|
31
|
+
const feats = [];
|
|
32
|
+
const res = xmljs.xml2js(await this.history(uid, opts), { compact: true });
|
|
33
|
+
if (!Object.keys(res).length || !Object.keys(res.events).length)
|
|
34
|
+
return feats;
|
|
35
|
+
if (!res.events.event || (Array.isArray(res.events.event) && !res.events.event.length))
|
|
36
|
+
return feats;
|
|
37
|
+
for (const event of Array.isArray(res.events.event) ? res.events.event : [res.events.event]) {
|
|
38
|
+
feats.push((new CoT({ event })).to_geojson());
|
|
39
|
+
}
|
|
40
|
+
return feats;
|
|
41
|
+
}
|
|
42
|
+
async history(uid, opts) {
|
|
43
|
+
const url = new URL(`/Marti/api/cot/xml/${encodeURIComponent(uid)}/all`, this.api.url);
|
|
44
|
+
if (opts) {
|
|
45
|
+
let q;
|
|
46
|
+
for (q in opts) {
|
|
47
|
+
if (opts[q] !== undefined) {
|
|
48
|
+
url.searchParams.append(q, String(opts[q]));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const res = await this.api.fetch(url, {
|
|
53
|
+
method: 'GET'
|
|
54
|
+
}, true);
|
|
55
|
+
const body = await res.text();
|
|
56
|
+
console.error(body);
|
|
57
|
+
return body;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../lib/api/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Type } from '@sinclair/typebox';
|
|
2
|
+
import { Group } from './groups.js';
|
|
3
|
+
import { TAKList } from './types.js';
|
|
4
|
+
export const Subscription = Type.Object({
|
|
5
|
+
dn: Type.Union([Type.String(), Type.Null()]),
|
|
6
|
+
callsign: Type.String(),
|
|
7
|
+
clientUid: Type.String(),
|
|
8
|
+
lastReportMilliseconds: Type.Integer(),
|
|
9
|
+
takClient: Type.String(),
|
|
10
|
+
takVersion: Type.String(),
|
|
11
|
+
username: Type.String(),
|
|
12
|
+
groups: Type.Array(Group),
|
|
13
|
+
role: Type.String(),
|
|
14
|
+
team: Type.String(),
|
|
15
|
+
ipAddress: Type.String(),
|
|
16
|
+
port: Type.String(),
|
|
17
|
+
pendingWrites: Type.Integer(),
|
|
18
|
+
numProcessed: Type.Integer(),
|
|
19
|
+
protocol: Type.String(),
|
|
20
|
+
xpath: Type.Union([Type.String(), Type.Null()]),
|
|
21
|
+
subscriptionUid: Type.String(),
|
|
22
|
+
appFramerate: Type.String(),
|
|
23
|
+
battery: Type.String(),
|
|
24
|
+
batteryStatus: Type.String(),
|
|
25
|
+
batteryTemp: Type.String(),
|
|
26
|
+
deviceDataRx: Type.String(),
|
|
27
|
+
deviceDataTx: Type.String(),
|
|
28
|
+
heapCurrentSize: Type.String(),
|
|
29
|
+
heapFreeSize: Type.String(),
|
|
30
|
+
heapMaxSize: Type.String(),
|
|
31
|
+
deviceIPAddress: Type.String(),
|
|
32
|
+
storageAvailable: Type.String(),
|
|
33
|
+
storageTotal: Type.String(),
|
|
34
|
+
incognito: Type.Boolean(),
|
|
35
|
+
handlerType: Type.String(),
|
|
36
|
+
lastReportDiffMilliseconds: Type.Integer()
|
|
37
|
+
});
|
|
38
|
+
export const ListSubscriptionInput = Type.Object({
|
|
39
|
+
sortBy: Type.String({
|
|
40
|
+
default: 'CALLSIGN',
|
|
41
|
+
enum: ['CALLSIGN', 'UID']
|
|
42
|
+
}),
|
|
43
|
+
direction: Type.String({
|
|
44
|
+
default: 'ASCENDING',
|
|
45
|
+
enum: ['ASCENDING', 'DESCENDING']
|
|
46
|
+
}),
|
|
47
|
+
page: Type.Integer({
|
|
48
|
+
default: -1
|
|
49
|
+
}),
|
|
50
|
+
limit: Type.Integer({
|
|
51
|
+
default: -1
|
|
52
|
+
})
|
|
53
|
+
});
|
|
54
|
+
export const TAKList_Subscription = TAKList(Subscription);
|
|
55
|
+
export default class {
|
|
56
|
+
api;
|
|
57
|
+
constructor(api) {
|
|
58
|
+
this.api = api;
|
|
59
|
+
}
|
|
60
|
+
async list(query) {
|
|
61
|
+
const url = new URL(`/Marti/api/subscriptions/all`, this.api.url);
|
|
62
|
+
let q;
|
|
63
|
+
for (q in query) {
|
|
64
|
+
if (query[q] !== undefined) {
|
|
65
|
+
url.searchParams.append(q, String(query[q]));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return await this.api.fetch(url, {
|
|
69
|
+
method: 'GET'
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=subscriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../../lib/api/subscriptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Type } from '@sinclair/typebox';
|
|
2
|
+
export const TAKItem = (T) => {
|
|
3
|
+
return Type.Object({
|
|
4
|
+
version: Type.String(),
|
|
5
|
+
type: Type.String(),
|
|
6
|
+
data: T,
|
|
7
|
+
messages: Type.Optional(Type.Array(Type.String())),
|
|
8
|
+
nodeId: Type.Optional(Type.String())
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
export const TAKList = (T) => {
|
|
12
|
+
return TAKItem(Type.Array(T));
|
|
13
|
+
};
|
|
14
|
+
export var TAKGroup;
|
|
15
|
+
(function (TAKGroup) {
|
|
16
|
+
TAKGroup["WHITE"] = "White";
|
|
17
|
+
TAKGroup["YELLOW"] = "Yellow";
|
|
18
|
+
TAKGroup["ORANGE"] = "Orange";
|
|
19
|
+
TAKGroup["MAGENTA"] = "Magenta";
|
|
20
|
+
TAKGroup["RED"] = "Red";
|
|
21
|
+
TAKGroup["MAROON"] = "Maroon";
|
|
22
|
+
TAKGroup["PURPLE"] = "Purple";
|
|
23
|
+
TAKGroup["DARK_BLUE"] = "Dark Blue";
|
|
24
|
+
TAKGroup["BLUE"] = "Blue";
|
|
25
|
+
TAKGroup["CYAN"] = "Cyan";
|
|
26
|
+
TAKGroup["TEAL"] = "Teal";
|
|
27
|
+
TAKGroup["GREEN"] = "Green";
|
|
28
|
+
TAKGroup["DARK_GREEN"] = "Dark Green";
|
|
29
|
+
TAKGroup["BROWN"] = "Brown";
|
|
30
|
+
})(TAKGroup || (TAKGroup = {}));
|
|
31
|
+
export var TAKRole;
|
|
32
|
+
(function (TAKRole) {
|
|
33
|
+
TAKRole["TEAM_MEMBER"] = "Team Member";
|
|
34
|
+
TAKRole["TEAM_LEAD"] = "Team Lead";
|
|
35
|
+
TAKRole["HQ"] = "HQ";
|
|
36
|
+
TAKRole["SNIPER"] = "Sniper";
|
|
37
|
+
TAKRole["MEDIC"] = "Medic";
|
|
38
|
+
TAKRole["FORWARD_OBSERVER"] = "Forward Observer";
|
|
39
|
+
TAKRole["RTO"] = "RTO";
|
|
40
|
+
TAKRole["K9"] = "K9";
|
|
41
|
+
})(TAKRole || (TAKRole = {}));
|
|
42
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAoB,CAAI,EAAE,EAAE;IAC/C,OAAO,IAAI,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QACtB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClD,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;KACvC,CAAC,CAAA;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAoB,CAAI,EAAE,EAAE;IAC/C,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC,CAAA;AAED,MAAM,CAAN,IAAY,QAeX;AAfD,WAAY,QAAQ;IAChB,2BAAe,CAAA;IACf,6BAAiB,CAAA;IACjB,6BAAiB,CAAA;IACjB,+BAAmB,CAAA;IACnB,uBAAW,CAAA;IACX,6BAAiB,CAAA;IACjB,6BAAiB,CAAA;IACjB,mCAAuB,CAAA;IACvB,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,qCAAyB,CAAA;IACzB,2BAAe,CAAA;AACnB,CAAC,EAfW,QAAQ,KAAR,QAAQ,QAenB;AAED,MAAM,CAAN,IAAY,OASX;AATD,WAAY,OAAO;IACf,sCAA2B,CAAA;IAC3B,kCAAuB,CAAA;IACvB,oBAAS,CAAA;IACT,4BAAiB,CAAA;IACjB,0BAAe,CAAA;IACf,gDAAqC,CAAA;IACrC,sBAAW,CAAA;IACX,oBAAS,CAAA;AACb,CAAC,EATW,OAAO,KAAP,OAAO,QASlB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import Err from '@openaddresses/batch-error';
|
|
2
|
+
import { Type } from '@sinclair/typebox';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
export const FeedInput = Type.Object({
|
|
5
|
+
uuid: Type.Optional(Type.String()),
|
|
6
|
+
active: Type.Boolean({ default: true }),
|
|
7
|
+
alias: Type.String(),
|
|
8
|
+
url: Type.String(),
|
|
9
|
+
});
|
|
10
|
+
export const VideoConnectionInput = Type.Object({
|
|
11
|
+
uuid: Type.Optional(Type.String()),
|
|
12
|
+
active: Type.Boolean({
|
|
13
|
+
default: true
|
|
14
|
+
}),
|
|
15
|
+
alias: Type.String(),
|
|
16
|
+
feeds: Type.Array(FeedInput)
|
|
17
|
+
});
|
|
18
|
+
export const Feed = Type.Object({
|
|
19
|
+
uuid: Type.String(),
|
|
20
|
+
active: Type.Boolean(),
|
|
21
|
+
alias: Type.String(),
|
|
22
|
+
url: Type.String(),
|
|
23
|
+
order: Type.Union([Type.Integer(), Type.Null()]),
|
|
24
|
+
macAddress: Type.String(),
|
|
25
|
+
roverPort: Type.String(),
|
|
26
|
+
ignoreEmbeddedKLV: Type.String(),
|
|
27
|
+
source: Type.Union([Type.String(), Type.Null()]),
|
|
28
|
+
networkTimeout: Type.String(),
|
|
29
|
+
bufferTime: Type.String(),
|
|
30
|
+
rtspReliable: Type.String(),
|
|
31
|
+
thumbnail: Type.Union([Type.String(), Type.Null()]),
|
|
32
|
+
classification: Type.Union([Type.String(), Type.Null()]),
|
|
33
|
+
latitude: Type.Union([Type.String(), Type.Null()]),
|
|
34
|
+
longitude: Type.Union([Type.String(), Type.Null()]),
|
|
35
|
+
fov: Type.Union([Type.String(), Type.Null()]),
|
|
36
|
+
heading: Type.Union([Type.String(), Type.Null()]),
|
|
37
|
+
range: Type.Union([Type.String(), Type.Null()]),
|
|
38
|
+
width: Type.Union([Type.Integer(), Type.Null()]),
|
|
39
|
+
height: Type.Union([Type.Integer(), Type.Null()]),
|
|
40
|
+
bitrate: Type.Union([Type.Integer(), Type.Null()]),
|
|
41
|
+
});
|
|
42
|
+
export const VideoConnection = Type.Object({
|
|
43
|
+
uuid: Type.String(),
|
|
44
|
+
active: Type.Boolean(),
|
|
45
|
+
alias: Type.String(),
|
|
46
|
+
thumbnail: Type.Union([Type.String(), Type.Null()]),
|
|
47
|
+
classification: Type.Union([Type.String(), Type.Null()]),
|
|
48
|
+
feeds: Type.Array(Feed)
|
|
49
|
+
});
|
|
50
|
+
export const VideoConnectionList = Type.Object({
|
|
51
|
+
videoConnections: Type.Array(VideoConnection)
|
|
52
|
+
});
|
|
53
|
+
export const VideoConnectionListInput = Type.Object({
|
|
54
|
+
protocol: Type.Optional(Type.String())
|
|
55
|
+
});
|
|
56
|
+
export default class {
|
|
57
|
+
api;
|
|
58
|
+
constructor(api) {
|
|
59
|
+
this.api = api;
|
|
60
|
+
}
|
|
61
|
+
async list(query = {}) {
|
|
62
|
+
const url = new URL(`/Marti/api/video`, this.api.url);
|
|
63
|
+
let q;
|
|
64
|
+
for (q in query) {
|
|
65
|
+
if (query[q] !== undefined) {
|
|
66
|
+
url.searchParams.append(q, String(query[q]));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return await this.api.fetch(url, {
|
|
70
|
+
method: 'GET'
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
async update(connection) {
|
|
74
|
+
const url = new URL(`/Marti/api/video/${connection.uuid}`, this.api.url);
|
|
75
|
+
if (!connection.uuid)
|
|
76
|
+
throw new Err(400, null, 'UUID must be set when updating Video');
|
|
77
|
+
await this.api.fetch(url, {
|
|
78
|
+
method: 'PUT',
|
|
79
|
+
body: {
|
|
80
|
+
...connection,
|
|
81
|
+
feeds: connection.feeds.map((feed) => {
|
|
82
|
+
if (!feed.uuid)
|
|
83
|
+
feed.uuid = randomUUID();
|
|
84
|
+
return feed;
|
|
85
|
+
})
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
return await this.get(connection.uuid);
|
|
89
|
+
}
|
|
90
|
+
async create(connection) {
|
|
91
|
+
const url = new URL(`/Marti/api/video`, this.api.url);
|
|
92
|
+
const uuid = connection.uuid || randomUUID();
|
|
93
|
+
await this.api.fetch(url, {
|
|
94
|
+
method: 'POST',
|
|
95
|
+
body: {
|
|
96
|
+
videoConnections: [{
|
|
97
|
+
uuid,
|
|
98
|
+
...connection,
|
|
99
|
+
feeds: connection.feeds.map((feed) => {
|
|
100
|
+
return {
|
|
101
|
+
uuid: randomUUID(),
|
|
102
|
+
...feed,
|
|
103
|
+
};
|
|
104
|
+
})
|
|
105
|
+
}]
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
return await this.get(uuid);
|
|
109
|
+
}
|
|
110
|
+
async get(uid) {
|
|
111
|
+
const url = new URL(`/Marti/api/video/${encodeURIComponent(uid)}`, this.api.url);
|
|
112
|
+
return await this.api.fetch(url, {
|
|
113
|
+
method: 'GET'
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async delete(uid) {
|
|
117
|
+
const url = new URL(`/Marti/api/video/${encodeURIComponent(uid)}`, this.api.url);
|
|
118
|
+
await this.api.fetch(url, {
|
|
119
|
+
method: 'DELETE'
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../../lib/api/video.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import FormData from 'form-data';
|
|
2
|
+
import OAuth from './api/oauth.js';
|
|
3
|
+
import Package from './api/package.js';
|
|
4
|
+
import Query from './api/query.js';
|
|
5
|
+
import Mission from './api/mission.js';
|
|
6
|
+
import MissionLog from './api/mission-log.js';
|
|
7
|
+
import MissionLayer from './api/mission-layer.js';
|
|
8
|
+
import Credentials from './api/credentials.js';
|
|
9
|
+
import Contacts from './api/contacts.js';
|
|
10
|
+
import Files from './api/files.js';
|
|
11
|
+
import Group from './api/groups.js';
|
|
12
|
+
import Subscription from './api/subscriptions.js';
|
|
13
|
+
import Video from './api/video.js';
|
|
14
|
+
import Export from './api/export.js';
|
|
15
|
+
import Err from '@openaddresses/batch-error';
|
|
16
|
+
/**
|
|
17
|
+
* Handle TAK HTTP API Operations
|
|
18
|
+
* @class
|
|
19
|
+
*/
|
|
20
|
+
export default class TAKAPI {
|
|
21
|
+
auth;
|
|
22
|
+
url;
|
|
23
|
+
Package;
|
|
24
|
+
OAuth;
|
|
25
|
+
Mission;
|
|
26
|
+
MissionLog;
|
|
27
|
+
MissionLayer;
|
|
28
|
+
Credentials;
|
|
29
|
+
Contacts;
|
|
30
|
+
Subscription;
|
|
31
|
+
Group;
|
|
32
|
+
Video;
|
|
33
|
+
Export;
|
|
34
|
+
Query;
|
|
35
|
+
Files;
|
|
36
|
+
constructor(url, auth) {
|
|
37
|
+
this.url = url;
|
|
38
|
+
this.auth = auth;
|
|
39
|
+
this.Query = new Query(this);
|
|
40
|
+
this.Package = new Package(this);
|
|
41
|
+
this.OAuth = new OAuth(this);
|
|
42
|
+
this.Export = new Export(this);
|
|
43
|
+
this.Mission = new Mission(this);
|
|
44
|
+
this.MissionLog = new MissionLog(this);
|
|
45
|
+
this.MissionLayer = new MissionLayer(this);
|
|
46
|
+
this.Credentials = new Credentials(this);
|
|
47
|
+
this.Contacts = new Contacts(this);
|
|
48
|
+
this.Subscription = new Subscription(this);
|
|
49
|
+
this.Group = new Group(this);
|
|
50
|
+
this.Video = new Video(this);
|
|
51
|
+
this.Files = new Files(this);
|
|
52
|
+
}
|
|
53
|
+
static async init(url, auth) {
|
|
54
|
+
const api = new TAKAPI(url, auth);
|
|
55
|
+
await api.auth.init(api);
|
|
56
|
+
return api;
|
|
57
|
+
}
|
|
58
|
+
stdurl(url) {
|
|
59
|
+
try {
|
|
60
|
+
url = new URL(url);
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
url = new URL(url, this.url);
|
|
65
|
+
}
|
|
66
|
+
return url;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Standardize interactions with the backend API
|
|
70
|
+
*
|
|
71
|
+
* @param {URL|String} url - Full URL or API fragment to request
|
|
72
|
+
* @param {Object} [opts={}] - Options
|
|
73
|
+
*/
|
|
74
|
+
async fetch(url, opts = {}, raw = false) {
|
|
75
|
+
url = this.stdurl(url);
|
|
76
|
+
try {
|
|
77
|
+
if (!opts.headers)
|
|
78
|
+
opts.headers = {};
|
|
79
|
+
if ((isPlainObject(opts.body) || Array.isArray(opts.body))
|
|
80
|
+
&& (!opts.headers['Content-Type']
|
|
81
|
+
|| opts.headers['Content-Type'].startsWith('application/json'))) {
|
|
82
|
+
opts.body = JSON.stringify(opts.body);
|
|
83
|
+
opts.headers['Content-Type'] = 'application/json';
|
|
84
|
+
}
|
|
85
|
+
else if (opts.body instanceof FormData) {
|
|
86
|
+
opts.headers = opts.body.getHeaders();
|
|
87
|
+
}
|
|
88
|
+
else if (opts.body instanceof URLSearchParams) {
|
|
89
|
+
opts.headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
|
90
|
+
opts.body = String(opts.body);
|
|
91
|
+
}
|
|
92
|
+
const res = await this.auth.fetch(this, url, opts);
|
|
93
|
+
if (raw)
|
|
94
|
+
return res;
|
|
95
|
+
let bdy = {};
|
|
96
|
+
if ((res.status < 200 || res.status >= 400)) {
|
|
97
|
+
try {
|
|
98
|
+
bdy = await res.text();
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
console.error(err);
|
|
102
|
+
bdy = null;
|
|
103
|
+
}
|
|
104
|
+
throw new Err(res.status, null, bdy || `Status Code: ${res.status}`);
|
|
105
|
+
}
|
|
106
|
+
if (res.headers.get('content-type') === 'application/json') {
|
|
107
|
+
return await res.json();
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return await res.text();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
if (err instanceof Error && err.name === 'PublicError')
|
|
115
|
+
throw err;
|
|
116
|
+
throw new Err(400, null, err instanceof Error ? err.message : String(err));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function isPlainObject(value) {
|
|
121
|
+
return value?.constructor === Object;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../lib/api.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/auth.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import fetch from './fetch.js';
|
|
2
|
+
import { CookieJar, Cookie } from 'tough-cookie';
|
|
3
|
+
import { CookieAgent } from 'http-cookie-agent/undici';
|
|
4
|
+
import { Client } from 'undici';
|
|
5
|
+
import stream2buffer from './stream.js';
|
|
6
|
+
export class APIAuth {
|
|
7
|
+
async init(api) {
|
|
8
|
+
}
|
|
9
|
+
async fetch(api, url, opts) {
|
|
10
|
+
return await fetch(url, opts);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class APIAuthPassword extends APIAuth {
|
|
14
|
+
username;
|
|
15
|
+
password;
|
|
16
|
+
jwt;
|
|
17
|
+
constructor(username, password) {
|
|
18
|
+
super();
|
|
19
|
+
this.username = username;
|
|
20
|
+
this.password = password;
|
|
21
|
+
this.jwt = '';
|
|
22
|
+
}
|
|
23
|
+
async init(api) {
|
|
24
|
+
const { token } = await api.OAuth.login({
|
|
25
|
+
username: this.username,
|
|
26
|
+
password: this.password
|
|
27
|
+
});
|
|
28
|
+
this.jwt = token;
|
|
29
|
+
}
|
|
30
|
+
async fetch(api, url, opts) {
|
|
31
|
+
const jar = new CookieJar();
|
|
32
|
+
await jar.setCookie(new Cookie({ key: 'access_token', value: this.jwt }), String(api.url));
|
|
33
|
+
opts.credentials = 'include';
|
|
34
|
+
if (!opts.nocookies) {
|
|
35
|
+
const agent = new CookieAgent({ cookies: { jar } });
|
|
36
|
+
opts.dispatcher = agent;
|
|
37
|
+
}
|
|
38
|
+
return await fetch(url, opts);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export class APIAuthToken extends APIAuth {
|
|
42
|
+
jwt;
|
|
43
|
+
constructor(jwt) {
|
|
44
|
+
super();
|
|
45
|
+
this.jwt = jwt;
|
|
46
|
+
}
|
|
47
|
+
async fetch(api, url, opts) {
|
|
48
|
+
const jar = new CookieJar();
|
|
49
|
+
await jar.setCookie(new Cookie({ key: 'access_token', value: this.jwt }), String(api.url));
|
|
50
|
+
opts.credentials = 'include';
|
|
51
|
+
if (!opts.nocookies) {
|
|
52
|
+
const agent = new CookieAgent({ cookies: { jar } });
|
|
53
|
+
opts.dispatcher = agent;
|
|
54
|
+
}
|
|
55
|
+
return await fetch(url, opts);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export class APIAuthCertificate extends APIAuth {
|
|
59
|
+
cert;
|
|
60
|
+
key;
|
|
61
|
+
constructor(cert, key) {
|
|
62
|
+
super();
|
|
63
|
+
this.cert = cert;
|
|
64
|
+
this.key = key;
|
|
65
|
+
}
|
|
66
|
+
async fetch(api, url, opts) {
|
|
67
|
+
const client = new Client(api.url.origin, {
|
|
68
|
+
connect: {
|
|
69
|
+
key: this.key,
|
|
70
|
+
cert: this.cert,
|
|
71
|
+
rejectUnauthorized: false,
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
const res = await client.request({
|
|
75
|
+
path: String(url).replace(api.url.origin, ''),
|
|
76
|
+
...opts
|
|
77
|
+
});
|
|
78
|
+
return {
|
|
79
|
+
status: res.statusCode,
|
|
80
|
+
body: res.body,
|
|
81
|
+
// Make this similiar to the fetch standard
|
|
82
|
+
headers: new Map(Object.entries(res.headers)),
|
|
83
|
+
text: async () => {
|
|
84
|
+
return String(await stream2buffer(res.body));
|
|
85
|
+
},
|
|
86
|
+
json: async () => {
|
|
87
|
+
return JSON.parse(String(await stream2buffer(res.body)));
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../lib/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import Err from '@openaddresses/batch-error';
|
|
2
|
+
import { TypeCompiler } from "@sinclair/typebox/compiler";
|
|
3
|
+
import { fetch, Response } from 'undici';
|
|
4
|
+
export class TypedResponse extends Response {
|
|
5
|
+
constructor(response) {
|
|
6
|
+
super(response.body, {
|
|
7
|
+
status: response.status,
|
|
8
|
+
statusText: response.statusText,
|
|
9
|
+
headers: response.headers,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
async typed(type) {
|
|
13
|
+
const body = await this.json();
|
|
14
|
+
const typeChecker = TypeCompiler.Compile(type);
|
|
15
|
+
const result = typeChecker.Check(body);
|
|
16
|
+
if (result)
|
|
17
|
+
return body;
|
|
18
|
+
const errors = typeChecker.Errors(body);
|
|
19
|
+
const firstError = errors.First();
|
|
20
|
+
throw new Err(500, null, `Internal Validation Error: ${JSON.stringify(firstError)}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export default async function (input, init) {
|
|
24
|
+
return new TypedResponse(await fetch(input, init));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../lib/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGzC,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACvC,YAAY,QAAkB;QAC1B,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;YACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC5B,CAAC,CAAC;IACP,CAAC;IAID,KAAK,CAAC,KAAK,CAA+B,IAAO;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAE/B,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,MAAM;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAElC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,8BAA8B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;CACJ;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,WAChB,KAAkB,EAClB,IAAkB;IAElB,OAAO,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export default async function stream2buffer(stream) {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
const _buf = Array();
|
|
4
|
+
stream.on("data", chunk => _buf.push(chunk));
|
|
5
|
+
stream.on("end", () => resolve(Buffer.concat(_buf)));
|
|
6
|
+
stream.on("error", (err) => reject(`error converting stream - ${err}`));
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=stream.js.map
|