From 65bbd1e50c1a8ca90728b4041d684fe09fce3c07 Mon Sep 17 00:00:00 2001 From: GermanBluefox Date: Sun, 9 Feb 2025 13:58:12 +0000 Subject: [PATCH] Added TypeScript packet --- README.md | 2 +- dist/lib/socket.d.ts | 1 + dist/lib/socket.js | 39 ++++++++++++++++++++++ dist/lib/socket.js.map | 1 + dist/main.d.ts | 4 +-- dist/main.js | 5 +-- dist/main.js.map | 2 +- dist/types.d.ts | 35 ++++++++++++++++++++ io-package.json | 13 -------- package.json | 3 +- src/lib/socket.ts | 75 ++++++++++++++++++++++++++++++++++++++++++ src/lib/socketWS.ts | 4 +-- src/main.ts | 20 +++-------- src/types.d.ts | 20 +++++++++++ tasks.js | 4 ++- 15 files changed, 190 insertions(+), 38 deletions(-) create mode 100644 dist/lib/socket.d.ts create mode 100644 dist/lib/socket.js create mode 100644 dist/lib/socket.js.map create mode 100644 dist/types.d.ts create mode 100644 src/lib/socket.ts diff --git a/README.md b/README.md index 245b966..a57419f 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ It is suggested to use [socket class](https://github.com/ioBroker/socket-client) --> ## Changelog -### 3.0.0 (2025-02-08) +### **WORK IN PROGRESS** * (@GermanBluefox) Adapter was rewritten in TypeScript ### 2.7.0 (2024-11-17) diff --git a/dist/lib/socket.d.ts b/dist/lib/socket.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist/lib/socket.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/lib/socket.js b/dist/lib/socket.js new file mode 100644 index 0000000..8b4225e --- /dev/null +++ b/dist/lib/socket.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const ws_server_1 = require("@iobroker/ws-server"); +const socketWS_1 = require("./socketWS"); +const socket_classes_1 = require("@iobroker/socket-classes"); +class Socket { + ioServer; + constructor(server, settings, adapter, store, checkUser) { + this.ioServer = new socketWS_1.SocketWS(settings, adapter); + this.ioServer.start(server, ws_server_1.SocketIO, { + checkUser, + store, + secret: settings.secret, + }); + } + getWhiteListIpForAddress(remoteIp, whiteListSettings) { + return socket_classes_1.SocketCommon.getWhiteListIpForAddress(remoteIp, whiteListSettings); + } + publishAll(type, id, obj) { + return this.ioServer?.publishAll(type, id, obj); + } + publishFileAll(id, fileName, size) { + return this.ioServer?.publishFileAll(id, fileName, size); + } + publishInstanceMessageAll(sourceInstance, messageType, sid, data) { + return this.ioServer?.publishInstanceMessageAll(sourceInstance, messageType, sid, data); + } + sendLog(obj) { + this.ioServer?.sendLog(obj); + } + close() { + if (this.ioServer) { + this.ioServer.close(); + this.ioServer = null; + } + } +} +module.exports = Socket; +//# sourceMappingURL=socket.js.map \ No newline at end of file diff --git a/dist/lib/socket.js.map b/dist/lib/socket.js.map new file mode 100644 index 0000000..ff87e11 --- /dev/null +++ b/dist/lib/socket.js.map @@ -0,0 +1 @@ +{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/lib/socket.ts"],"names":[],"mappings":";;AAGA,mDAAkE;AAClE,yCAAsC;AACtC,6DAAuH;AAIvH,MAAM,MAAM;IACD,QAAQ,CAAkB;IACjC,YACI,MAAc,EACd,QAEC,EACD,OAAyB,EACzB,KAAY,EACZ,SASS;QAET,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAe,EAAE;YACzC,SAAS;YACT,KAAK;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;SAC1B,CAAC,CAAC;IACP,CAAC;IAED,wBAAwB,CACpB,QAAgB,EAChB,iBAEC;QAED,OAAO,6BAAY,CAAC,wBAAwB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAC9E,CAAC;IAED,UAAU,CAAC,IAA0B,EAAE,EAAU,EAAE,GAAwD;QACvG,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,cAAc,CAAC,EAAU,EAAE,QAAgB,EAAE,IAAmB;QAC5D,OAAO,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,yBAAyB,CAAC,cAAsB,EAAE,WAAmB,EAAE,GAAW,EAAE,IAAS;QACzF,OAAO,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,CAAC,GAAwB;QAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;IACL,CAAC;CACJ;AAED,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/dist/main.d.ts b/dist/main.d.ts index 6035c25..1214e38 100644 --- a/dist/main.d.ts +++ b/dist/main.d.ts @@ -10,9 +10,9 @@ export declare class WsAdapter extends Adapter { constructor(options?: Partial); onUnload(callback: () => void): void; onMessage(obj: ioBroker.Message): void; - checkUser(username: string, password: string, cb: (error: null | Error, result?: { + checkUser: (username: string, password: string, cb: (error: null | Error, result?: { logged_in: boolean; - }) => void): void; + }) => void) => void; initWebServer(): void; main(): Promise; } diff --git a/dist/main.js b/dist/main.js index 68c5735..8effb00 100644 --- a/dist/main.js +++ b/dist/main.js @@ -98,7 +98,7 @@ class WsAdapter extends adapter_core_1.Adapter { // d - data this.server?.io?.publishInstanceMessageAll(obj.from, obj.message.m, obj.message.s, obj.message.d); } - checkUser(username, password, cb) { + checkUser = (username, password, cb) => { username = (username || '') .toString() .replace(this.FORBIDDEN_CHARS, '_') @@ -155,7 +155,7 @@ class WsAdapter extends adapter_core_1.Adapter { } return cb(null); }); - } + }; initWebServer() { this.wsConfig.port = parseInt(this.wsConfig.port, 10) || 0; if (this.wsConfig.port) { @@ -241,6 +241,7 @@ class WsAdapter extends adapter_core_1.Adapter { forceWebSockets: true, // this is irrelevant for ws defaultUser: this.wsConfig.defaultUser, language: this.wsConfig.language, + secret: this.secret, }; this.server.io = new socketWS_1.SocketWS(settings, this); this.server.io.start(this.server.server, ws_server_1.SocketIO, { diff --git a/dist/main.js.map b/dist/main.js.map index e143c22..1109a96 100644 --- a/dist/main.js.map +++ b/dist/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/types.d.ts b/dist/types.d.ts new file mode 100644 index 0000000..a105d09 --- /dev/null +++ b/dist/types.d.ts @@ -0,0 +1,35 @@ +import type { SocketWS } from './lib/socketWS'; + +export interface WsAdapterConfig { + port: number | string; + auth: boolean; + secure: boolean; + bind: string; + ttl: number | string; + certPublic: string; + certPrivate: string; + certChained: string; + defaultUser: string; + leEnabled: boolean; + leUpdate: boolean; + language: ioBroker.Languages; + leCheckPort: number | string; +} + +export declare class IOSocketClass { + public ioServer: SocketWS | null; + + constructor(server: Server, settings: SocketSettings, adapter: ioBroker.Adapter, store: Store); + + getWhiteListIpForAddress( + remoteIp: string, + whiteListSettings: { + [address: string]: WhiteListSettings; + }, + ): string | null; + publishAll(type: SocketSubscribeTypes, id: string, obj: ioBroker.Object | ioBroker.State | null | undefined): void; + publishFileAll(id: string, fileName: string, size: number | null): void; + publishInstanceMessageAll(sourceInstance: string, messageType: string, sid: string, data: any): void; + sendLog(obj: ioBroker.LogMessage): void; + close(): void; +} diff --git a/io-package.json b/io-package.json index 169ef14..8b4d7db 100644 --- a/io-package.json +++ b/io-package.json @@ -20,19 +20,6 @@ "zh-cn": "该适配器允许与ioBroker通信不同的Web应用程序" }, "news": { - "3.0.0": { - "en": "Adapter was rewritten in TypeScript", - "de": "Adapter wurde in TypeScript neu geschrieben", - "ru": "Адаптер был переписан в TypeScript", - "pt": "Adapter foi reescrito no TypeScript", - "nl": "Adapter is herschreven in TypeScript", - "fr": "Adaptateur a été réécrit dans TypeScript", - "it": "L'adattatore è stato riscritto in TypeScript", - "es": "Adaptador fue reescrito en TipoScript", - "pl": "Adapter został przepisany w TypeScript", - "uk": "Адаптер був записаний у TypeScript", - "zh-cn": "适配器在类型脚本中重写" - }, "2.7.0": { "en": "Update ws-server library", "de": "Ws-Server-Bibliothek aktualisieren", diff --git a/package.json b/package.json index af35e55..a69d890 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@iobroker/adapter-core": "^3.2.3", - "@iobroker/socket-classes": "^2.0.5", + "@iobroker/socket-classes": "^2.0.7", "@iobroker/webserver": "^1.0.8", "@iobroker/ws-server": "^4.2.4", "express-session": "^1.18.1" @@ -49,6 +49,7 @@ "url": "https://github.com/ioBroker/ioBroker.ws/issues" }, "main": "dist/main.js", + "types": "dist/types.d.ts", "files": [ "admin/", "dist/", diff --git a/src/lib/socket.ts b/src/lib/socket.ts new file mode 100644 index 0000000..2e10229 --- /dev/null +++ b/src/lib/socket.ts @@ -0,0 +1,75 @@ +import type { Server as HttpServer } from 'node:http'; +import type { Server as HttpsServer } from 'node:https'; + +import { SocketIO as WebSocketServer } from '@iobroker/ws-server'; +import { SocketWS } from './socketWS'; +import { + type Store, + SocketCommon, + type WhiteListSettings, + type SocketSubscribeTypes, + type SocketSettings, +} from '@iobroker/socket-classes'; + +type Server = HttpServer | HttpsServer; + +class Socket { + public ioServer: SocketWS | null; + constructor( + server: Server, + settings: SocketSettings, + adapter: ioBroker.Adapter, + store: Store, + checkUser?: ( + user: string, + pass: string, + cb: ( + error: Error | null, + result?: { + logged_in: boolean; + }, + ) => void, + ) => void, + ) { + this.ioServer = new SocketWS(settings, adapter); + this.ioServer.start(server, WebSocketServer, { + checkUser, + store, + secret: settings.secret, + }); + } + + getWhiteListIpForAddress( + remoteIp: string, + whiteListSettings: { + [address: string]: WhiteListSettings; + }, + ): string | null { + return SocketCommon.getWhiteListIpForAddress(remoteIp, whiteListSettings); + } + + publishAll(type: SocketSubscribeTypes, id: string, obj: ioBroker.Object | ioBroker.State | null | undefined): void { + return this.ioServer?.publishAll(type, id, obj); + } + + publishFileAll(id: string, fileName: string, size: number | null): void { + return this.ioServer?.publishFileAll(id, fileName, size); + } + + publishInstanceMessageAll(sourceInstance: string, messageType: string, sid: string, data: any): void { + return this.ioServer?.publishInstanceMessageAll(sourceInstance, messageType, sid, data); + } + + sendLog(obj: ioBroker.LogMessage): void { + this.ioServer?.sendLog(obj); + } + + close(): void { + if (this.ioServer) { + this.ioServer.close(); + this.ioServer = null; + } + } +} + +module.exports = Socket; diff --git a/src/lib/socketWS.ts b/src/lib/socketWS.ts index 4c2cb49..239126c 100644 --- a/src/lib/socketWS.ts +++ b/src/lib/socketWS.ts @@ -164,7 +164,7 @@ export class SocketWS extends SocketCommon { sessionId, ( _err: Error | null, - obj: { + obj?: { cookie: { originalMaxAge: number; expires: string; @@ -210,7 +210,7 @@ export class SocketWS extends SocketCommon { sessionId, ( _err: Error | null, - obj: { + obj?: { cookie: { originalMaxAge: number; expires: string; diff --git a/src/main.ts b/src/main.ts index 2cb82ed..9f54ff9 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,7 +5,7 @@ import * as session from 'express-session'; import { Adapter, type AdapterOptions, commonTools, EXIT_CODES } from '@iobroker/adapter-core'; // Get common adapter utils import { WebServer } from '@iobroker/webserver'; import { SocketIO, type Socket as WebSocketClient } from '@iobroker/ws-server'; -import type { Store } from '@iobroker/socket-classes'; +import type {SocketSettings, Store} from '@iobroker/socket-classes'; import type { WsAdapterConfig } from './types'; import { SocketWS } from './lib/socketWS'; import { readFileSync } from 'node:fs'; @@ -79,7 +79,7 @@ export class WsAdapter extends Adapter { this.server?.io?.publishInstanceMessageAll(obj.from, obj.message.m, obj.message.s, obj.message.d); } - checkUser( + checkUser = ( username: string, password: string, cb: ( @@ -88,7 +88,7 @@ export class WsAdapter extends Adapter { logged_in: boolean; }, ) => void, - ): void { + ): void => { username = (username || '') .toString() .replace(this.FORBIDDEN_CHARS, '_') @@ -237,18 +237,7 @@ export class WsAdapter extends Adapter { }, ); - const settings: { - language?: ioBroker.Languages; - defaultUser?: string; - ttl?: number; - secure?: boolean; - auth?: boolean; - crossDomain?: boolean; - extensions?: (socket: WebSocketClient) => void; - port?: number; - compatibilityV2?: boolean; - forceWebSockets?: boolean; - } = { + const settings: SocketSettings = { ttl: this.wsConfig.ttl as number, port: this.wsConfig.port, secure: this.wsConfig.secure, @@ -257,6 +246,7 @@ export class WsAdapter extends Adapter { forceWebSockets: true, // this is irrelevant for ws defaultUser: this.wsConfig.defaultUser, language: this.wsConfig.language, + secret: this.secret, }; this.server.io = new SocketWS(settings, this); diff --git a/src/types.d.ts b/src/types.d.ts index d5fb53d..a105d09 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -1,3 +1,5 @@ +import type { SocketWS } from './lib/socketWS'; + export interface WsAdapterConfig { port: number | string; auth: boolean; @@ -13,3 +15,21 @@ export interface WsAdapterConfig { language: ioBroker.Languages; leCheckPort: number | string; } + +export declare class IOSocketClass { + public ioServer: SocketWS | null; + + constructor(server: Server, settings: SocketSettings, adapter: ioBroker.Adapter, store: Store); + + getWhiteListIpForAddress( + remoteIp: string, + whiteListSettings: { + [address: string]: WhiteListSettings; + }, + ): string | null; + publishAll(type: SocketSubscribeTypes, id: string, obj: ioBroker.Object | ioBroker.State | null | undefined): void; + publishFileAll(id: string, fileName: string, size: number | null): void; + publishInstanceMessageAll(sourceInstance: string, messageType: string, sid: string, data: any): void; + sendLog(obj: ioBroker.LogMessage): void; + close(): void; +} diff --git a/tasks.js b/tasks.js index 4fb971b..39dcd4e 100644 --- a/tasks.js +++ b/tasks.js @@ -1,4 +1,6 @@ -const { writeFileSync, readFileSync } = require('node:fs'); +const { writeFileSync, readFileSync, copyFileSync} = require('node:fs'); const socket = require.resolve('@iobroker/ws').replace(/\\/g, '/'); writeFileSync(`${__dirname}/dist/lib/socket.io.js`, readFileSync(socket)); + +copyFileSync(`${__dirname}/src/types.d.ts`, `${__dirname}/dist/types.d.ts`); \ No newline at end of file