UNPKG

@tak-ps/node-tak

Version:

Lightweight JavaScript library for communicating with TAK Server

85 lines (75 loc) 2.4 kB
import { Type, Static } from '@sinclair/typebox'; import { Group } from './groups.js'; import { TAKList } from './types.js'; import Commands from '../commands.js'; export const Subscription = Type.Object({ dn: Type.Union([Type.String(), Type.Null()]), callsign: Type.String(), clientUid: Type.String(), lastReportMilliseconds: Type.Integer(), takClient: Type.String(), takVersion: Type.String(), username: Type.String(), groups: Type.Array(Group), role: Type.String(), team: Type.String(), ipAddress: Type.String(), port: Type.String(), pendingWrites: Type.Integer(), numProcessed: Type.Integer(), protocol: Type.String(), xpath: Type.Union([Type.String(), Type.Null()]), subscriptionUid: Type.String(), appFramerate: Type.String(), battery: Type.String(), batteryStatus: Type.String(), batteryTemp: Type.String(), deviceDataRx: Type.String(), deviceDataTx: Type.String(), heapCurrentSize: Type.String(), heapFreeSize: Type.String(), heapMaxSize: Type.String(), deviceIPAddress: Type.String(), storageAvailable: Type.String(), storageTotal: Type.String(), incognito: Type.Boolean(), handlerType: Type.String(), lastReportDiffMilliseconds: Type.Integer() }); export const ListSubscriptionInput = Type.Object({ sortBy: Type.String({ default: 'CALLSIGN', enum: ['CALLSIGN', 'UID'] }), direction: Type.String({ default: 'ASCENDING', enum: ['ASCENDING', 'DESCENDING'] }), page: Type.Integer({ default: -1 }), limit: Type.Integer({ default: -1 }) }) export const TAKList_Subscription = TAKList(Subscription); export default class SubscriptionCommands extends Commands { schema = {} async cli(): Promise<object | string> { throw new Error('Unsupported Subcommand'); } async list( query: Static<typeof ListSubscriptionInput> ): Promise<Static<typeof TAKList_Subscription>> { const url = new URL(`/Marti/api/subscriptions/all`, this.api.url); let q: keyof Static<typeof ListSubscriptionInput>; for (q in query) { if (query[q] !== undefined) { url.searchParams.append(q, String(query[q])); } } return await this.api.fetch(url, { method: 'GET' }); } }