From ba0752e5b8b36c6042370fdffb6e96a2d5d139b7 Mon Sep 17 00:00:00 2001
From: Kai Malcolm <34199284+velocity23@users.noreply.github.com>
Date: Mon, 26 Sep 2022 10:55:51 +1000
Subject: [PATCH 1/6] Add TypeScript Definitions
---
ifc2.d.ts | 97 +++++++++++++++++++++++++++++++++++++++++++++++
package-lock.json | 19 +++++++++-
package.json | 5 ++-
3 files changed, 118 insertions(+), 3 deletions(-)
create mode 100644 ifc2.d.ts
diff --git a/ifc2.d.ts b/ifc2.d.ts
new file mode 100644
index 0000000..cd71829
--- /dev/null
+++ b/ifc2.d.ts
@@ -0,0 +1,97 @@
+///
+
+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 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 LogLevel {
+ INFO = 3,
+ WARN = 2,
+ ERROR = 1,
+ MANDATORY = 0,
+}
+
+export enum Action {
+ GET = 0,
+ SET = 1,
+ RUN = -1,
+ MANIFEST = -1,
+}
+
+export enum DataType {
+ BOOLEAN = 0,
+ INTEGER = 1,
+ FLOAT = 2,
+ DOUBLE = 3,
+ STRING = 4,
+ LONG = 5,
+}
+
+export interface InfiniteFlight {
+ broadcastPort: 15000;
+ serverPort: 10112;
+ serverAddress: string;
+ clientSocket: Socket;
+ manifestSocket: Socket;
+ pollSocket: Socket;
+ manifestTimeout: number;
+ manifestData: string;
+ manifestByName: { [key: number]: ManifestNameItem };
+ manifestByCommand: { [key: string]: ManifestCommandItem };
+ manifestLength: number;
+ manifestBuffer: Buffer | null;
+}
+
+export interface ManifestCommandItem {
+ name: string;
+ type: DataType;
+}
+
+export interface ManifestNameItem {
+ command: number;
+ type: DataType;
+}
+
+export interface InitInfo {
+ enableLog?: boolean;
+ logLevel?: LogLevel;
+ 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..494e16d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,20 +1,29 @@
{
"name": "ifc2",
- "version": "1.0.20",
+ "version": "1.0.22",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "ifc2",
- "version": "1.0.20",
+ "version": "1.0.22",
"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"
}
},
+ "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",
@@ -41,6 +50,12 @@
}
},
"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",
diff --git a/package.json b/package.json
index cb9b4fe..e5030bb 100644
--- a/package.json
+++ b/package.json
@@ -25,5 +25,8 @@
"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"
+ }
}
From 991111928733c4e01fc3200a20671b8ddb7cba4c Mon Sep 17 00:00:00 2001
From: Kai Malcolm <34199284+velocity23@users.noreply.github.com>
Date: Mon, 26 Sep 2022 11:01:58 +1000
Subject: [PATCH 2/6] Fix Init Type Definition
---
ifc2.d.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ifc2.d.ts b/ifc2.d.ts
index cd71829..50119c1 100644
--- a/ifc2.d.ts
+++ b/ifc2.d.ts
@@ -32,7 +32,7 @@ export function pollRegister(
callback: (data: T) => void
): void;
export function pollDeregister(cmd: string): void;
-export function init(successCallback: () => void, params: InitInfo): void;
+export function init(successCallback?: () => void, params?: InitInfo): void;
export function close(callback: () => void): void;
export enum LogLevel {
From 04b99501ebc53db2c0ab8d79b77c00113fb68795 Mon Sep 17 00:00:00 2001
From: Kai Malcolm <34199284+velocity23@users.noreply.github.com>
Date: Mon, 26 Sep 2022 11:02:55 +1000
Subject: [PATCH 3/6] Add types file to package.json and bump version
---
package.json | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index e5030bb..4f38f52 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"
@@ -29,4 +30,4 @@
"devDependencies": {
"@types/node": "^18.7.21"
}
-}
+}
\ No newline at end of file
From d681e0a398a70969738d3a81947609450a3bca2f Mon Sep 17 00:00:00 2001
From: Kai Malcolm <34199284+velocity23@users.noreply.github.com>
Date: Mon, 26 Sep 2022 11:09:10 +1000
Subject: [PATCH 4/6] Add TypeScript Dependency
---
package-lock.json | 26 +++++++++++++++++++++++---
package.json | 5 +++--
2 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 494e16d..d67bc70 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "ifc2",
- "version": "1.0.22",
+ "version": "1.1.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "ifc2",
- "version": "1.0.22",
+ "version": "1.1.0",
"license": "Apache 2",
"dependencies": {
"dgram": "^1.0.1",
@@ -15,7 +15,8 @@
"stringview": "^2.1.1"
},
"devDependencies": {
- "@types/node": "^18.7.21"
+ "@types/node": "^18.7.21",
+ "typescript": "^4.8.3"
}
},
"node_modules/@types/node": {
@@ -47,6 +48,19 @@
"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": {
@@ -75,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 4f38f52..281f398 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,7 @@
},
"homepage": "https://github.com/likeablegeek/ifc2",
"devDependencies": {
- "@types/node": "^18.7.21"
+ "@types/node": "^18.7.21",
+ "typescript": "^4.8.3"
}
-}
\ No newline at end of file
+}
From 38fe0d75a8f371b214bd6f0d4cfffddb4fa4714b Mon Sep 17 00:00:00 2001
From: Kai Malcolm <34199284+velocity23@users.noreply.github.com>
Date: Mon, 26 Sep 2022 11:19:10 +1000
Subject: [PATCH 5/6] Clean up TS Definitions
---
ifc2.d.ts | 36 ++++++------------------------------
1 file changed, 6 insertions(+), 30 deletions(-)
diff --git a/ifc2.d.ts b/ifc2.d.ts
index 50119c1..540e2de 100644
--- a/ifc2.d.ts
+++ b/ifc2.d.ts
@@ -16,6 +16,11 @@ 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;
@@ -35,20 +40,6 @@ export function pollDeregister(cmd: string): void;
export function init(successCallback?: () => void, params?: InitInfo): void;
export function close(callback: () => void): void;
-export enum LogLevel {
- INFO = 3,
- WARN = 2,
- ERROR = 1,
- MANDATORY = 0,
-}
-
-export enum Action {
- GET = 0,
- SET = 1,
- RUN = -1,
- MANIFEST = -1,
-}
-
export enum DataType {
BOOLEAN = 0,
INTEGER = 1,
@@ -58,21 +49,6 @@ export enum DataType {
LONG = 5,
}
-export interface InfiniteFlight {
- broadcastPort: 15000;
- serverPort: 10112;
- serverAddress: string;
- clientSocket: Socket;
- manifestSocket: Socket;
- pollSocket: Socket;
- manifestTimeout: number;
- manifestData: string;
- manifestByName: { [key: number]: ManifestNameItem };
- manifestByCommand: { [key: string]: ManifestCommandItem };
- manifestLength: number;
- manifestBuffer: Buffer | null;
-}
-
export interface ManifestCommandItem {
name: string;
type: DataType;
@@ -85,7 +61,7 @@ export interface ManifestNameItem {
export interface InitInfo {
enableLog?: boolean;
- logLevel?: LogLevel;
+ logLevel?: number;
keepAlive?: boolean;
doReconnect?: boolean;
timeout?: number;
From f9395b898bd3e7e3fcad9f2a223ff359bcbfd492 Mon Sep 17 00:00:00 2001
From: Kai Malcolm <34199284+velocity23@users.noreply.github.com>
Date: Mon, 26 Sep 2022 11:20:49 +1000
Subject: [PATCH 6/6] Make get callback optional in types
---
ifc2.d.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ifc2.d.ts b/ifc2.d.ts
index 540e2de..6e9201a 100644
--- a/ifc2.d.ts
+++ b/ifc2.d.ts
@@ -26,7 +26,7 @@ export function getCommand(cmd: string): Uint8Array;
export function setCommand(cmd: string, value: T): Uint8Array;
export function get(
cmd: string,
- callback: (data: T) => void
+ callback?: (data: T) => void
): void;
export function set(cmd: string, value: T): void;
export function run(cmd: string): void;