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"
+ }
}