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;