diff --git a/ifc2.d.ts b/ifc2.d.ts new file mode 100644 index 0000000..6e9201a --- /dev/null +++ b/ifc2.d.ts @@ -0,0 +1,73 @@ +/// + +import type { Socket } from 'net'; + +export type IFData = string | number | boolean; + +export const name: 'IFC2'; +export const LE: true; +export const enableLog: boolean; +export const logLevel: number; +export const keepAlive: boolean; +export const doReconnect: boolean; +export const timeout: number; +export const isConnected: boolean; +export const isWaiting: boolean; +export const isPollWaiting: boolean; +export const isCallback: boolean; + +export const INFO = 3; +export const WARN = 2; +export const ERROR = 1; +export const MANDATORY = 0; + +export function on(event: string, listener: (...args: unknown[]) => void): void; +export function getCommand(cmd: string): Uint8Array; +export function setCommand(cmd: string, value: T): Uint8Array; +export function get( + cmd: string, + callback?: (data: T) => void +): void; +export function set(cmd: string, value: T): void; +export function run(cmd: string): void; +export function manifestByName(): { [key: string]: ManifestNameItem }; +export function manifestByCommand(): { [key: string]: ManifestCommandItem }; +export function pollRegister( + cmd: string, + callback: (data: T) => void +): void; +export function pollDeregister(cmd: string): void; +export function init(successCallback?: () => void, params?: InitInfo): void; +export function close(callback: () => void): void; + +export enum DataType { + BOOLEAN = 0, + INTEGER = 1, + FLOAT = 2, + DOUBLE = 3, + STRING = 4, + LONG = 5, +} + +export interface ManifestCommandItem { + name: string; + type: DataType; +} + +export interface ManifestNameItem { + command: number; + type: DataType; +} + +export interface InitInfo { + enableLog?: boolean; + logLevel?: number; + keepAlive?: boolean; + doReconnect?: boolean; + timeout?: number; + callback?: boolean; + infoCallback?: (info: unknown) => void; + pollThrottle?: number; + host?: string; + port?: number; +} diff --git a/package-lock.json b/package-lock.json index 9dbd703..d67bc70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,30 @@ { "name": "ifc2", - "version": "1.0.20", + "version": "1.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ifc2", - "version": "1.0.20", + "version": "1.1.0", "license": "Apache 2", "dependencies": { "dgram": "^1.0.1", "events": "^3.3.0", "net": "^1.0.2", "stringview": "^2.1.1" + }, + "devDependencies": { + "@types/node": "^18.7.21", + "typescript": "^4.8.3" } }, + "node_modules/@types/node": { + "version": "18.7.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.21.tgz", + "integrity": "sha512-rLFzK5bhM0YPyCoTC8bolBjMk7bwnZ8qeZUBslBfjZQou2ssJdWslx9CZ8DGM+Dx7QXQiiTVZ/6QO6kwtHkZCA==", + "dev": true + }, "node_modules/dgram": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dgram/-/dgram-1.0.1.tgz", @@ -38,9 +48,28 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/stringview/-/stringview-2.1.1.tgz", "integrity": "sha512-hsaj+P//gLkAnYB6QUT5Kg/2T/ExTfNJUvKhRe980H8rRrXLlG4Q3U2EITbu4Ku1k/Aw/4MZHUUiNZVJtm63PQ==" + }, + "node_modules/typescript": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } } }, "dependencies": { + "@types/node": { + "version": "18.7.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.21.tgz", + "integrity": "sha512-rLFzK5bhM0YPyCoTC8bolBjMk7bwnZ8qeZUBslBfjZQou2ssJdWslx9CZ8DGM+Dx7QXQiiTVZ/6QO6kwtHkZCA==", + "dev": true + }, "dgram": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dgram/-/dgram-1.0.1.tgz", @@ -60,6 +89,12 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/stringview/-/stringview-2.1.1.tgz", "integrity": "sha512-hsaj+P//gLkAnYB6QUT5Kg/2T/ExTfNJUvKhRe980H8rRrXLlG4Q3U2EITbu4Ku1k/Aw/4MZHUUiNZVJtm63PQ==" + }, + "typescript": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "dev": true } } } diff --git a/package.json b/package.json index cb9b4fe..281f398 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,9 @@ { "name": "ifc2", - "version": "1.0.22", + "version": "1.1.0", "description": "A Javascript client for Infinite Flight simulator API version 2", "main": "ifc2.js", + "types": "ifc2.d.ts", "repository": { "type": "git", "url": "https://github.com/likeablegeek/ifc2" @@ -25,5 +26,9 @@ "bugs": { "url": "https://github.com/likeablegeek/ifc2/issues" }, - "homepage": "https://github.com/likeablegeek/ifc2" + "homepage": "https://github.com/likeablegeek/ifc2", + "devDependencies": { + "@types/node": "^18.7.21", + "typescript": "^4.8.3" + } }