iobroker.iot 5.0.13 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -14
- package/admin/assets/{index-DCr4hGKK.js → index-BdqghSg7.js} +40 -40
- package/admin/index_m.html +1 -1
- package/admin/rules/@mf-types/compiled-types/ActionVisu.d.ts +1 -1
- package/admin/rules/@mf-types.zip +0 -0
- package/admin/rules/assets/{ActionVisu-BN0Kjfo9.js → ActionVisu-BCZFwf_Y.js} +1 -1
- package/admin/rules/assets/{ActionVisu__loadShare__react__loadShare__.js-aa1tDx2C.js → ActionVisu__loadShare__react__loadShare__.js-B4USkKO5.js} +1 -1
- package/admin/rules/assets/{ActionVisu__loadShare__react__loadShare__.js_commonjs-proxy-DX6cx281.js → ActionVisu__loadShare__react__loadShare__.js_commonjs-proxy-CEUqE4IA.js} +1 -1
- package/admin/rules/assets/{ActionVisu__loadShare__react_mf_2_dom__loadShare__.js_commonjs-proxy-27bLZRGy.js → ActionVisu__loadShare__react_mf_2_dom__loadShare__.js_commonjs-proxy-MphP5XTI.js} +1 -1
- package/admin/rules/assets/{bootstrap-QjsDSZNA.js → bootstrap-BKoQjf4I.js} +1 -1
- package/admin/rules/assets/{index-DiSsXjpZ.js → index-BlSAfGU-.js} +4 -4
- package/admin/rules/assets/index-Dk5YUp3j.js +1187 -0
- package/admin/rules/assets/{index-C1ZEp-2N.js → index-pMP6L5OL.js} +2 -2
- package/admin/rules/assets/{jsx-runtime-CnsYFZsa.js → jsx-runtime-D-zp5RaI.js} +1 -1
- package/admin/rules/assets/{localSharedImportMap-8wECk2hR.js → localSharedImportMap-BsAeuDnA.js} +1 -1
- package/admin/rules/assets/{virtualExposes-b6CxLzZb.js → virtualExposes-B2aPQUg7.js} +1 -1
- package/admin/rules/customRuleBlocks.js +5 -5
- package/build/lib/AlexaSmartHomeV3/Alexa/Directives/Discovery.js +11 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Directives/Discovery.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/TargetSetpoint.js +8 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/TargetSetpoint.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/Temperature.js +8 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/Temperature.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/AirCondition.js +2 -2
- package/build/lib/AlexaSmartHomeV3/Controls/AirCondition.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Control.js +7 -0
- package/build/lib/AlexaSmartHomeV3/Controls/Control.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Ct.js +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Ct.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Rgb.js +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Rgb.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/RgbSingle.js +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/RgbSingle.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/RgbwSingle.js +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/RgbwSingle.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Thermostat.js +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Thermostat.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Volume.js +2 -2
- package/build/lib/AlexaSmartHomeV3/Controls/Volume.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/DeviceManager.js +18 -9
- package/build/lib/AlexaSmartHomeV3/DeviceManager.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Helpers/DiscoveryValidator.js +283 -0
- package/build/lib/AlexaSmartHomeV3/Helpers/DiscoveryValidator.js.map +1 -0
- package/build/lib/AlexaSmartHomeV3/Helpers/Utils.js +4 -0
- package/build/lib/AlexaSmartHomeV3/Helpers/Utils.js.map +1 -1
- package/build/lib/alisa.js +15 -14
- package/build/lib/googleHome.js +151 -207
- package/build/lib/remote.js +1 -1
- package/build/lib/remote.js.map +1 -1
- package/io-package.json +27 -27
- package/package.json +5 -5
- package/admin/rules/assets/index-FrXvyqvW.js +0 -1187
- package/admin/rules/mf-stats.json +0 -1
- /package/admin/rules/assets/{index-Ccpql4vu.js → index-BPY9gF0q.js} +0 -0
package/build/lib/remote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/lib/remote.ts"],"names":[],"mappings":"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","sourcesContent":["import axios, { type AxiosError } from 'axios';\nimport { deflateSync } from 'node:zlib';\nimport AdminSocket from './adminCommonSocket';\nimport type { IotAdapterConfig } from './types';\nimport type { device as DeviceModule } from 'aws-iot-device-sdk';\nimport type IotAdapter from '../main';\n\ntype MESSAGE_TYPE = number;\nconst MESSAGE_TYPES: Record<string, MESSAGE_TYPE> = {\n MESSAGE: 0,\n PING: 1,\n PONG: 2,\n CALLBACK: 3,\n READY: 4,\n WAIT: 5,\n SENDING_DONE: 6,\n MISSING: 7,\n TIMEOUT: 8,\n HTML: 9,\n COMBINED_CALLBACK: 10,\n COMBINED_MESSAGE: 11,\n};\n\nconst MAX_IOT_MESSAGE_LENGTH = 127 * 1024;\nconst MAX_POST_MESSAGE_LENGTH = 127 * 1024;\nconst MAX_FILE_SIZE = 4 * 1024 * 1024;\n\nconst COLLECT_OBJS_MS = 400;\nconst COLLECT_STATES_MS = 400;\nconst COLLECT_LOGS_MS = 800;\n\nconst NONE = '___none___';\n\ntype SessionID = string;\ntype SubscribeType = 'stateChange' | 'objectChange' | 'log';\ntype Socket = {\n _subscribe: {\n stateChange: { pattern: string; regex: RegExp }[];\n objectChange: { pattern: string; regex: RegExp }[];\n log: { pattern: string; regex: RegExp }[];\n };\n ts: number;\n name?: string;\n};\n\ntype SOCKET_PAYLOAD = [\n type: MESSAGE_TYPE,\n id: number,\n functionName: string,\n args: any[] | string | { error: string },\n readUrlOrTotalMultiPackageLength?: string | number,\n numberOfPacketInMultiPackage?: number,\n];\nexport type SOCKET_MESSAGE = {\n sid: SessionID;\n d: SOCKET_PAYLOAD;\n wu?: string;\n ru?: string;\n};\nexport type SOCKET_CHANGE_MESSAGE = {\n name: SubscribeType;\n args: string | [ioBroker.LogMessage[]] | [string[], (ioBroker.Object | null | undefined)[]];\n sid: SessionID;\n multi?: boolean;\n};\n\nexport type SOCKET_TRUNK = {\n sid: string;\n i: number;\n l: number;\n d: SOCKET_PAYLOAD;\n};\n\nexport default class RemoteAccess {\n private readonly adapter: IotAdapter;\n private device: DeviceModule | null = null;\n private gcInterval: NodeJS.Timeout | null = null;\n private name = {};\n private objects = {};\n private readonly packets: {\n [id: string]: {\n ts: number;\n trunks: SOCKET_TRUNK[];\n };\n } = {};\n private readonly statesCache: { [stateId: string]: string } = {};\n private listOfLogs: ioBroker.LogMessage[] = [];\n private listOfStates: { ids: string[]; states: (ioBroker.State | null | undefined)[] } = { ids: [], states: [] };\n private listOfObjects: { ids: string[]; objs: (ioBroker.Object | null | undefined)[] } = { ids: [], objs: [] };\n private readonly clientId: string;\n private readonly config: IotAdapterConfig;\n private readonly collectStatesMs: number;\n private readonly collectObjectsMs: number;\n private readonly collectLogsMs: number;\n private readonly handlers: { [funcName: string]: { f: (...args: any[]) => Promise<any>; args: number } };\n private subscribes: {\n stateChange: { [pattern: string]: number };\n objectChange: { [pattern: string]: number };\n log: { [pattern: string]: number };\n } = { stateChange: {}, objectChange: {}, log: {} };\n private sockets: { [socketId: SessionID]: Socket } = {};\n private vendorPrefix = '';\n private localAdmin: string | null = null;\n private webObj: ioBroker.InstanceObject | null = null;\n private webUrl: string = '';\n private adminObj: ioBroker.InstanceObject | null = null;\n private adminUrl: string = '';\n private lang: ioBroker.Languages = 'en';\n private sendObjectsTimeout: NodeJS.Timeout | null = null;\n private sendLogsTimeout: NodeJS.Timeout | null = null;\n private sendStatesTimeout: NodeJS.Timeout | null = null;\n private infoTimeout: NodeJS.Timeout | null = null;\n private secret: string = '';\n\n constructor(adapter: IotAdapter, clientId: string) {\n this.adapter = adapter;\n this.config = adapter.config;\n this.clientId = clientId;\n this.collectStatesMs =\n this.config.collectStatesMs === undefined\n ? COLLECT_STATES_MS\n : parseInt(this.config.collectStatesMs as string, 10);\n this.collectObjectsMs =\n this.config.collectObjectsMs === undefined\n ? COLLECT_OBJS_MS\n : parseInt(this.config.collectObjectsMs as string, 10);\n this.collectLogsMs =\n this.config.collectLogsMs === undefined\n ? COLLECT_LOGS_MS\n : parseInt(this.config.collectLogsMs as string, 10);\n\n this.handlers = {\n getObject: { f: this.adapter.getForeignObjectAsync.bind(this.adapter), args: 1 },\n setObject: { f: this.adapter.setForeignObjectAsync.bind(this.adapter), args: 2 },\n getState: { f: this.adapter.getForeignStateAsync.bind(this.adapter), args: 1 },\n setState: { f: this.adapter.setForeignStateAsync.bind(this.adapter), args: 2 },\n delState: { f: this.adapter.delForeignStateAsync.bind(this.adapter), args: 2 },\n getObjectView: { f: this.adapter.getObjectViewAsync.bind(this.adapter), args: 4 },\n delObject: { f: this.adapter.delForeignObjectAsync.bind(this.adapter), args: 2 },\n delObjects: { f: this.adapter.delForeignObjectAsync.bind(this.adapter), args: 2 },\n extendObject: { f: this.adapter.extendForeignObjectAsync.bind(this.adapter), args: 2 },\n getForeignStates: { f: this.adapter.getForeignStatesAsync.bind(this.adapter), args: 1 },\n getForeignObjects: { f: this.adapter.getForeignObjectsAsync.bind(this.adapter), args: 2 },\n fileExists: { f: this.adapter.fileExistsAsync.bind(this.adapter), args: 2 },\n chownFile: { f: this.adapter.chownFileAsync.bind(this.adapter), args: 3 },\n chmodFile: { f: this.adapter.chmodFileAsync.bind(this.adapter), args: 3 },\n deleteFolder: { f: this.adapter.unlinkAsync.bind(this.adapter), args: 2 },\n deleteFile: { f: this.adapter.unlinkAsync.bind(this.adapter), args: 2 },\n mkdir: { f: this.adapter.mkdirAsync.bind(this.adapter), args: 2 },\n renameFile: { f: this.adapter.renameAsync.bind(this.adapter), args: 3 },\n readDir: { f: this.adapter.readDirAsync.bind(this.adapter), args: 2 },\n changePassword: { f: this.adapter.setPasswordAsync.bind(this.adapter), args: 2 },\n };\n\n if (!this.config.remote) {\n return;\n }\n\n if (this.config.remoteAdminInstance) {\n try {\n this.localAdmin = require\n .resolve('iobroker.admin')\n .replace(/\\\\/g, '/')\n .replace(/main\\.js$/, 'www-react');\n } catch {\n this.localAdmin = null;\n this.adapter.log.warn('[REMOTE] Cannot read admin files while iobroker.admin was not found');\n }\n void this.adapter.getForeignObjectAsync(`system.adapter.${this.config.remoteAdminInstance}`).then(obj => {\n this.adminObj = obj || null;\n if (obj?.native && !obj.native.auth) {\n this.adminUrl = `${obj.native.secure ? 'https:' : 'http:'}//localhost:${obj.native.port}`;\n }\n });\n }\n if (this.config.remoteWebInstance) {\n void this.adapter.getForeignObjectAsync(`system.adapter.${this.config.remoteWebInstance}`).then(obj => {\n this.webObj = obj || null;\n if (obj?.native && !obj.native.auth) {\n this.webUrl = `${obj.native.secure ? 'https:' : 'http:'}//localhost:${obj.native.port}`;\n }\n });\n }\n\n void this.adapter.getForeignObjectAsync('system.meta.uuid').then(obj => {\n if (obj?.native) {\n this.vendorPrefix = obj.native.uuid.length > 36 ? obj.native.uuid.substring(0, 2) : '';\n }\n });\n }\n\n setLanguage(_lang: ioBroker.Languages): void {\n this.lang = _lang || 'de';\n }\n\n registerDevice(device: DeviceModule): void {\n this.device = device;\n }\n\n async _sendCachedStates(): Promise<void> {\n const sids = Object.keys(this.sockets);\n\n const listOfStates = this.listOfStates;\n // clear cache\n this.listOfStates = { ids: [], states: [] };\n\n if (sids.length) {\n this.adapter.log.debug(\n `Send to ${sids.length} sockets: ${listOfStates.ids.map((id, i) => `${id}: ${listOfStates.states[i]?.val}`).join(', ')}`,\n );\n\n // pack the data\n const data = JSON.stringify([listOfStates.ids, listOfStates.states]);\n const args = deflateSync(data).toString('base64');\n\n for (let s = 0; s < sids.length; s++) {\n const error = await this._sendEvent({ name: 'stateChange', args, sid: sids[s], multi: true });\n if (error) {\n this.adapter.log.warn(`[REMOTE] cannot send \"stateChange\": ${JSON.stringify(error)}`);\n }\n }\n }\n }\n\n updateState(id: string, state: ioBroker.State | null | undefined): void {\n if (!this.config.remote) {\n return;\n }\n const cache = JSON.stringify(state);\n\n if (this.statesCache[id] && this.statesCache[id] !== cache) {\n if (this.config.debug) {\n this.adapter.log.debug(`[REMOTE] send stateChange \"${id}\": ${JSON.stringify(state)}`);\n }\n\n this.statesCache[id] = cache;\n\n this.listOfStates.ids.push(id);\n this.listOfStates.states.push(JSON.parse(JSON.stringify(state)));\n\n // do not wait if the list will be too long\n if (this.listOfStates.ids.length > 70) {\n if (this.sendObjectsTimeout) {\n clearTimeout(this.sendObjectsTimeout);\n this.sendObjectsTimeout = null;\n }\n this._sendCachedStates().catch(e => this.adapter.log.error(`[REMOTE] Cannot send cached states: ${e}`));\n } else {\n this.sendObjectsTimeout ||= setTimeout(() => {\n this.sendObjectsTimeout = null;\n this._sendCachedStates().catch(e =>\n this.adapter.log.error(`[REMOTE] Cannot send cached states: ${e}`),\n );\n }, this.collectStatesMs);\n }\n } else {\n // this.adapter.log.debug(`[REMOTE] ignore stateChange \"${id}\": ${JSON.stringify(state)}`);\n }\n }\n\n updateObject(id: string, obj: ioBroker.Object | null | undefined): void {\n if (!this.config.remote) {\n return;\n }\n this.listOfObjects.ids.push(id);\n this.listOfObjects.objs.push(JSON.parse(JSON.stringify(obj)));\n\n if (this.sendObjectsTimeout) {\n clearTimeout(this.sendObjectsTimeout);\n }\n\n this.sendObjectsTimeout = setTimeout(async () => {\n this.sendObjectsTimeout = null;\n const listOfObjects = this.listOfObjects;\n this.listOfObjects = { ids: [], objs: [] };\n const sids = Object.keys(this.sockets);\n\n for (let s = 0; s < sids.length; s++) {\n const error = await this._sendEvent({\n name: 'objectChange',\n args: [listOfObjects.ids, listOfObjects.objs],\n sid: sids[s],\n multi: true,\n });\n if (error) {\n this.adapter.log.warn(`[REMOTE] cannot send \"objectChange\": ${JSON.stringify(error)}`);\n }\n }\n }, COLLECT_OBJS_MS);\n }\n\n onLog(obj: ioBroker.LogMessage): void {\n if (!this.config.remote) {\n return;\n }\n this.listOfLogs.push(obj);\n\n if (this.sendLogsTimeout) {\n clearTimeout(this.sendLogsTimeout);\n }\n\n this.sendLogsTimeout = setTimeout(async () => {\n this.sendLogsTimeout = null;\n const listOfLogs = this.listOfLogs;\n this.listOfLogs = [];\n const sids = Object.keys(this.sockets);\n for (let s = 0; s < sids.length; s++) {\n const error = await this._sendEvent({\n name: 'log',\n args: [listOfLogs],\n sid: sids[s],\n multi: true,\n });\n if (error) {\n this.adapter.log.error(`[REMOTE] cannot send \"log\": ${JSON.stringify(error)}`);\n }\n }\n }, COLLECT_LOGS_MS);\n }\n\n destroy(): void {\n if (this.gcInterval) {\n clearInterval(this.gcInterval);\n this.gcInterval = null;\n }\n if (this.sendLogsTimeout) {\n clearTimeout(this.sendLogsTimeout);\n this.sendLogsTimeout = null;\n }\n if (this.sendObjectsTimeout) {\n clearTimeout(this.sendObjectsTimeout);\n this.sendObjectsTimeout = null;\n }\n if (this.sendStatesTimeout) {\n clearTimeout(this.sendStatesTimeout);\n this.sendStatesTimeout = null;\n }\n AdminSocket.stopGB();\n this._unsubscribeAll();\n this.sockets = {};\n }\n\n _clearMemory(): void {\n const now = Date.now();\n const DAY = 36000000 * 3;\n Object.keys(this.sockets).forEach(sid => {\n if (now - this.sockets[sid].ts > DAY) {\n this._unsubscribeSocket(sid, 'stateChange');\n this._unsubscribeSocket(sid, 'objectChange');\n this._unsubscribeSocket(sid, 'log');\n delete this.sockets[sid];\n }\n });\n\n Object.keys(this.packets).forEach(id => {\n if (now - this.packets[id].ts > 120000) {\n delete this.packets[id];\n }\n });\n }\n\n _readAllObjects(): Promise<{ [id: string]: ioBroker.Object }> {\n return this.adapter.getObjectListAsync({ include_docs: true }).then(res => {\n const objects: { [id: string]: ioBroker.Object } = {};\n this.adapter.log.info('[REMOTE] received all objects');\n if (res?.rows) {\n for (let i = 0; i < res.rows.length; i++) {\n objects[res.rows[i].doc._id] = res.rows[i].doc;\n }\n }\n return objects;\n });\n }\n\n pattern2RegEx(pattern: string): string | null {\n if (!pattern || typeof pattern !== 'string') {\n return null;\n }\n if (pattern !== '*') {\n if (pattern[0] === '*' && pattern[pattern.length - 1] !== '*') {\n pattern += '$';\n }\n if (pattern[0] !== '*' && pattern[pattern.length - 1] === '*') {\n pattern = `^${pattern}`;\n }\n }\n pattern = pattern.replace(/\\./g, '\\\\.');\n pattern = pattern.replace(/\\*/g, '.*');\n pattern = pattern.replace(/\\[/g, '\\\\[');\n pattern = pattern.replace(/]/g, '\\\\]');\n pattern = pattern.replace(/\\(/g, '\\\\(');\n pattern = pattern.replace(/\\)/g, '\\\\)');\n return pattern;\n }\n\n _subscribe(sid: SessionID, type: SubscribeType, pattern: string): void {\n //console.log((socket._name || socket.id) + ' subscribe ' + pattern);\n const socket = this.sockets[sid];\n\n this.subscribes[type] ||= {};\n\n let s: { pattern: string; regex: RegExp }[] | undefined;\n if (socket) {\n socket._subscribe[type] ||= [];\n s = socket._subscribe[type];\n for (let i = 0; i < s.length; i++) {\n if (s[i].pattern === pattern) {\n return;\n }\n }\n }\n\n const p = this.pattern2RegEx(pattern);\n if (p === null) {\n return this.adapter.log.warn('[REMOTE] Empty or invalid pattern on subscribe!');\n }\n if (s) {\n s.push({ pattern, regex: new RegExp(p) });\n }\n\n if (this.subscribes[type][pattern] === undefined) {\n this.subscribes[type][pattern] = 1;\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe STATES: ${pattern}`);\n this.adapter.subscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe OBJECTS: ${pattern}`);\n this.adapter.subscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug('[REMOTE] Subscribe LOGS');\n void this.adapter.requireLog?.(true);\n }\n } else {\n this.subscribes[type][pattern]++;\n }\n }\n\n _showSubscribes(sid: SessionID, type: SubscribeType): void {\n const socket = this.sockets[sid];\n\n if (socket?._subscribe) {\n const s = socket._subscribe[type] || [];\n const ids = [];\n for (let i = 0; i < s.length; i++) {\n ids.push(s[i].pattern);\n }\n this.adapter.log.debug(`[REMOTE] Subscribes: ${ids.join(', ')}`);\n } else {\n this.adapter.log.debug('[REMOTE] Subscribes: no subscribes');\n }\n }\n\n _updateConnectedInfo(): void {\n if (this.infoTimeout) {\n clearTimeout(this.infoTimeout);\n this.infoTimeout = null;\n }\n\n // TODO\n // this.adapter.setState('info.connection', text, true);\n }\n\n _unsubscribe(sid: SessionID, type: SubscribeType, pattern?: string): void {\n const socket = this.sockets[sid];\n this.subscribes[type] ||= {};\n\n if (socket && typeof socket === 'object') {\n if (!socket._subscribe?.[type]) {\n return;\n }\n\n for (let i = socket._subscribe[type].length - 1; i >= 0; i--) {\n if (socket._subscribe[type][i].pattern === pattern) {\n // Remove pattern from global list\n if (this.subscribes[type][pattern] !== undefined) {\n this.subscribes[type][pattern]--;\n if (this.subscribes[type][pattern] <= 0) {\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe STATES: ${pattern}`);\n //console.log((socket._name || socket.id) + ' unsubscribeForeignStates ' + pattern);\n this.adapter.unsubscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe OBJECTS: ${pattern}`);\n //console.log((socket._name || socket.id) + ' unsubscribeForeignObjects ' + pattern);\n this.adapter.unsubscribeForeignObjects &&\n this.adapter.unsubscribeForeignObjects(pattern);\n } else if (type === 'log') {\n //console.log((socket._name || socket.id) + ' requireLog false');\n this.adapter.log.debug('[REMOTE] Unsubscribe LOGS');\n void this.adapter.requireLog?.(false);\n }\n delete this.subscribes[type][pattern];\n }\n }\n\n socket._subscribe[type].splice(i, 1);\n return;\n }\n }\n } else if (pattern) {\n // Remove pattern from global list\n if (this.subscribes[type][pattern] !== undefined) {\n this.subscribes[type][pattern]--;\n if (this.subscribes[type][pattern] <= 0) {\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe STATES: ${pattern}`);\n this.adapter.unsubscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe OBJECTS: ${pattern}`);\n this.adapter.unsubscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug('[REMOTE] Unsubscribe LOGS');\n void this.adapter.requireLog?.(false);\n }\n delete this.subscribes[type][pattern];\n }\n }\n }\n }\n\n _unsubscribeAll(): void {\n Object.keys(this.sockets).forEach(sid => {\n this._unsubscribe(sid, 'stateChange');\n this._unsubscribe(sid, 'objectChange');\n this._unsubscribe(sid, 'log');\n });\n }\n\n _unsubscribeSocket(sid: SessionID, type: SubscribeType): void {\n const socket = this.sockets[sid];\n\n if (!socket?._subscribe?.[type]) {\n return;\n }\n\n for (let i = 0; i < socket._subscribe[type].length; i++) {\n const pattern = socket._subscribe[type][i].pattern;\n if (this.subscribes[type][pattern] !== undefined) {\n this.subscribes[type][pattern]--;\n if (this.subscribes[type][pattern] <= 0) {\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe STATES: ${pattern}`);\n this.adapter.unsubscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe OBJECTS: ${pattern}`);\n this.adapter.unsubscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe LOGS: ${pattern}`);\n void this.adapter.requireLog?.(false);\n }\n delete this.subscribes[type][pattern];\n }\n }\n }\n }\n\n _subscribeSocket(sid: SessionID, type: SubscribeType): void {\n const socket = this.sockets[sid];\n\n if (!socket?._subscribe?.[type]) {\n return;\n }\n\n for (let i = 0; i < socket._subscribe[type].length; i++) {\n const pattern = socket._subscribe[type][i].pattern;\n if (this.subscribes[type][pattern] === undefined) {\n this.subscribes[type][pattern] = 1;\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe STATES: ${pattern}`);\n this.adapter.subscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe OBJECTS: ${pattern}`);\n this.adapter.subscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug('[REMOTE] Subscribe LOGS');\n void this.adapter.requireLog?.(true);\n }\n } else {\n this.subscribes[type][pattern]++;\n }\n }\n }\n\n _sendEvent(\n message: SOCKET_MESSAGE | SOCKET_CHANGE_MESSAGE,\n _originalMessage?: SOCKET_MESSAGE,\n ): Promise<string | undefined> {\n return axios\n .post('https://remote-events.iobroker.in/', message, {\n validateStatus: status => status === 200,\n timeout: 5000,\n })\n .then(() => undefined)\n .catch(error => {\n let errorMessage: any;\n if ((error as AxiosError).response) {\n errorMessage = (error as AxiosError).response!.data || (error as AxiosError).response!.status;\n } else {\n errorMessage = error.message?.toString();\n }\n\n this.adapter.log.warn(\n `[REMOTE] Cannot send status update to ${message.sid} (${JSON.stringify(_originalMessage)}): ${JSON.stringify(errorMessage)}`,\n );\n\n if (errorMessage.error === 'invalid connectionId') {\n if (this.sockets[message.sid]) {\n this.adapter.log.debug(`[REMOTE] delete connection id ${message.sid}`);\n delete this.sockets[message.sid];\n }\n errorMessage = false;\n } else {\n this.adapter.log.warn(\n `[REMOTE] Cannot send status update to \"${message.sid}\" (${JSON.stringify(_originalMessage)}): ${JSON.stringify(errorMessage)}`,\n );\n }\n\n return JSON.stringify(errorMessage);\n });\n }\n\n async _getStatesManyArgs(\n args: [string][],\n ): Promise<[error: string | null, states?: Record<string, ioBroker.State>][]> {\n const response: [error: string | null, states?: Record<string, ioBroker.State>][] = [];\n for (let a = 0; a < args.length; a++) {\n const id = args[a][0];\n try {\n const result: Record<string, ioBroker.State> = await this.adapter.getForeignStatesAsync(id || '*');\n response[a] = [null, result];\n if (result) {\n Object.keys(result).forEach(id => (this.statesCache[id] = JSON.stringify(result[id])));\n }\n } catch (error) {\n response[a] = [error];\n }\n }\n return response;\n }\n\n async _getStateManyArgs(\n args: [string][],\n ): Promise<[error: string | null, state?: ioBroker.State | null | undefined][]> {\n const response: [error: string | null, state?: ioBroker.State | null | undefined][] = [];\n for (let a = 0; a < args.length; a++) {\n const id = args[a][0];\n try {\n const result = await this.adapter.getForeignStateAsync(id || '*');\n response[a] = [null, result];\n this.statesCache[id] = JSON.stringify(result);\n } catch (error) {\n response[a] = [error];\n }\n }\n return response;\n }\n\n async _getObjectManyArgs(\n args: [string][],\n ): Promise<[error: string | null, state?: ioBroker.Object | null | undefined][]> {\n const response: [error: string | null, state?: ioBroker.Object | null | undefined][] = [];\n for (let a = 0; a < args.length; a++) {\n const id = args[a][0];\n try {\n const result = await this.adapter.getForeignObjectAsync(id || '*');\n response[a] = [null, result];\n } catch (error) {\n response[a] = [error];\n }\n }\n return response;\n }\n\n _subscribeManyArgs(sid: SessionID, args: [string | string[]][]): Promise<[error: string | null][]> {\n const result: [error: string | null][] = [];\n for (let a = 0; a < args.length; a++) {\n const pattern = args[a][0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._subscribe(sid, 'stateChange', pattern[p]);\n }\n } else {\n this._subscribe(sid, 'stateChange', pattern);\n }\n result.push([null]);\n }\n return Promise.resolve(result);\n }\n\n async _unsubscribeManyArgs(sid: SessionID, args: [string | string[]][]): Promise<[error: string | null][]> {\n const result: [error: string | null][] = [];\n for (let a = 0; a < args.length; a++) {\n const pattern = args[a][0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._unsubscribe(sid, 'stateChange', pattern[p]);\n }\n } else {\n this._unsubscribe(sid, 'stateChange', pattern);\n }\n result.push([null]);\n }\n return Promise.resolve(result);\n }\n\n uploadToServer(url: string, data: { file: string; mimeType: string }, raw?: boolean): Promise<boolean> {\n return axios\n .put(url, raw ? data.file : Buffer.from(data.file, 'base64'), {\n headers: {\n 'Content-Type': data.mimeType,\n },\n })\n .then(() => {\n return true;\n })\n .catch(e => {\n console.log(e);\n return false;\n });\n }\n\n readUrlFile(\n url: string,\n path: string,\n sid: SessionID,\n type: MESSAGE_TYPE,\n id: number,\n ): Promise<{ file: string; mimeType: string } | SOCKET_MESSAGE> {\n return axios(url + path, {\n responseType: 'arraybuffer',\n validateStatus: status => status === 200,\n timeout: 500,\n })\n .then(response => {\n // replace port\n if (path.endsWith('_socket/info.js')) {\n response.data = response.data.toString();\n // var socketUrl = \":8084\"; var socketSession = \"\"; window.sysLang = \"ru\"; window.socketForceWebSockets = false;\n // replace \":8084\"; => \"\";\n response.data = response.data.replace(/\":\\d+\";/, '\"\";');\n }\n\n return {\n file: Buffer.from(response.data).toString('base64'),\n mimeType: response.headers['content-type'],\n };\n })\n .catch(error => {\n this.adapter.log.warn(`[REMOTE] File ${url}${path} not found`);\n let errorMessage;\n if (error.response && error.response.status === 404) {\n errorMessage = 'Not exists';\n } else if (error.response && error.response.status === 401) {\n errorMessage = 'Not authorised';\n } else {\n if (error.response) {\n errorMessage = error.response.data || error.response.status;\n } else if (error.request) {\n errorMessage = 'No answer';\n } else {\n errorMessage = error.message;\n }\n }\n return { sid, d: [type, id, '', { error: errorMessage }] };\n });\n }\n\n _sendResponse(\n sid: SessionID,\n _type: MESSAGE_TYPE,\n id: number,\n name: string,\n args: any[],\n writeUrl?: string,\n readUrl?: string,\n ): Promise<SOCKET_MESSAGE> {\n let packed = deflateSync(JSON.stringify(args)).toString('base64');\n\n if (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n if (writeUrl) {\n if (args.length === 3) {\n const [error, file, mimeType] = args;\n if (!error) {\n return this.uploadToServer(writeUrl, { file, mimeType }, true).then(done => ({\n sid,\n d: [_type, id, name, done ? readUrl! : ['Cannot upload']],\n }));\n }\n } else if (args.length === 2) {\n const [error, result] = args;\n if (!error) {\n return this.uploadToServer(\n writeUrl,\n { file: JSON.stringify(result), mimeType: 'application/json' },\n true,\n ).then(done => ({ sid, d: [_type, id, name, done ? readUrl! : ['Cannot upload']] }));\n }\n } else if (args.length === 1) {\n const [result] = args;\n return this.uploadToServer(\n writeUrl,\n { file: JSON.stringify(result), mimeType: 'application/json' },\n true,\n ).then(done => ({ sid, d: [_type, id, name, done ? readUrl! : ['Cannot upload']] }));\n }\n }\n // too big message. Do not use iot for that and send directly to socket\n /*const packets = []\n while (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_IOT_MESSAGE_LENGTH);\n packed = packed.substring(MAX_IOT_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n const trunks = packets.map((trunk, i) =>\n sid: message.sid, i, l: packets.length, d: [_type, id, name, trunk]}));\n\n this.packets[id] = {ts: Date.now(), trunks};\n\n // start garbage collector\n this.gcInterval = this.gcInterval || setInterval(() => this._clearMemory(), 60000);\n\n return trunks;*/\n setImmediate(async () => {\n if (packed.length > MAX_POST_MESSAGE_LENGTH) {\n // too big message. Do not use iot for that and send directly to socket\n const packets: string[] = [];\n while (packed.length > MAX_POST_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_POST_MESSAGE_LENGTH);\n packed = packed.substring(MAX_POST_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n for (let i = 0; i < packets.length; i++) {\n const error = await this._sendEvent({\n sid,\n d: [_type, id, name, packets[i], packets.length, i],\n });\n if (error) {\n this.adapter.log.error(`[REMOTE] cannot send: ${JSON.stringify(error)}`);\n break;\n }\n }\n } else {\n await this._sendEvent({ sid, d: [_type, id, name, packed] });\n }\n });\n\n return Promise.resolve({ sid, d: [MESSAGE_TYPES.WAIT, id, name, [packed.length]] });\n }\n return Promise.resolve({ sid, d: [_type, id, name, packed] });\n }\n\n onCloudDisconnect(): void {\n // delete all sockets\n this.adapter.log.debug(`[REMOTE] Cloud disconnected`);\n if (!this.sockets) {\n return;\n }\n\n const sids = Object.keys(this.sockets);\n for (let s = 0; s < sids.length; s++) {\n this._unsubscribeSocket(sids[s], 'stateChange');\n this._unsubscribeSocket(sids[s], 'objectChange');\n this._unsubscribeSocket(sids[s], 'log');\n delete this.sockets[sids[s]];\n }\n }\n\n process(\n request: string | SOCKET_MESSAGE,\n serviceType: `remote${string}`,\n ): Promise<'___none___' | SOCKET_MESSAGE | SOCKET_TRUNK[]> {\n let message: SOCKET_MESSAGE | null;\n if (typeof request === 'string') {\n try {\n message = JSON.parse(request);\n } catch {\n this.adapter.log.error(`[REMOTE] Cannot parse request: ${request}`);\n message = null;\n }\n } else {\n message = request;\n }\n\n if (message) {\n const [_type, id, name, args, readUrl] = message.d;\n let promiseOne: Promise<any> | undefined; // answer will be created automatically (error, result)\n let promiseResult: Promise<SOCKET_MESSAGE | '___none___'> | undefined; // answer will be created by promise\n\n if (this.config.remote && _type === MESSAGE_TYPES.MISSING) {\n if (this.packets[id]) {\n const missing = (args as number[][])[0];\n this.adapter.log.warn(\n `[REMOTE] Request for existing trunks: ${id}, \"${name}\": ${JSON.stringify(missing)}`,\n );\n\n if (this.device) {\n setImmediate(async () => {\n try {\n for (let m = 0; m < missing.length; m++) {\n await new Promise<void>((resolve, reject) =>\n this.device!.publish(\n `response/${this.clientId}/${serviceType}`,\n JSON.stringify(this.packets[id].trunks[m]),\n { qos: 1 },\n error => {\n if (error) {\n reject(error);\n } else {\n resolve();\n }\n },\n ),\n );\n }\n } catch (err) {\n this.adapter.log.error(`[REMOTE] Cannot send packet: ${err}`);\n }\n });\n }\n } else {\n this.adapter.log.warn(`[REMOTE] Request for non existing trunks: ${id}, \"${name}\"`);\n }\n promiseResult = Promise.resolve(NONE);\n } else if (this.config.remote && _type === MESSAGE_TYPES.SENDING_DONE) {\n this.adapter.log.debug(`[REMOTE] Packet received: ${id}, \"${name}\"`);\n delete this.packets[id];\n promiseResult = Promise.resolve(NONE);\n } else if (_type === MESSAGE_TYPES.HTML) {\n let promiseFile: Promise<SOCKET_MESSAGE | { file: string; mimeType: string }>;\n\n if (!this.config.remote) {\n return Promise.resolve({ sid: message.sid, d: [_type, id, '', ['Not enabled']] });\n } else if (name === 'listOfPrograms' || name === '/listOfPrograms') {\n promiseFile = AdminSocket.getListOfAllAdapters(this.adapter)\n .then(result => {\n const packed = deflateSync(JSON.stringify([null, result])).toString('base64');\n return { sid: message.sid, d: [_type, id, '', packed] } as SOCKET_MESSAGE;\n })\n .catch(\n error =>\n ({\n sid: message.sid,\n d: [_type, id, '', [error.toString()]],\n }) as SOCKET_MESSAGE,\n );\n } else if (name === 'vendorPrefix' || name === '/vendorPrefix') {\n return Promise.resolve({ sid: message.sid, d: [_type, id, '', [null, this.vendorPrefix]] });\n } else if (name.startsWith('/adapter')) {\n if (this.config.remoteAdminInstance) {\n if (this.adminUrl) {\n promiseFile = this.readUrlFile(this.adminUrl, name, message.sid, _type, id);\n } else {\n promiseFile = Promise.resolve({\n sid: message.sid,\n d: [_type, id, '', { error: 'Not exists' }],\n });\n }\n } else {\n promiseFile = Promise.resolve({\n sid: message.sid,\n d: [_type, id, '', { error: 'Not exists' }],\n });\n }\n } else {\n const path = name.split('?')[0];\n const parts = path.split('/');\n parts.shift(); // remove leading /\n const _adapter = parts.shift() || '';\n this.adapter.log.debug(`[REMOTE] HTML: ${path}`);\n\n // html must be returned only by iot channel, as lambda must process the answer\n promiseFile = this.adapter\n .readFileAsync(_adapter, parts.join('/'))\n .then(data => {\n data.file = Buffer.from(data.file).toString('base64');\n return data as { file: string; mimeType: string };\n })\n .catch(() => {\n if (this.webUrl) {\n // try to read from server\n return this.readUrlFile(this.webUrl, path, message.sid, _type, id);\n }\n return {\n sid: message.sid,\n d: [_type, id, '', { error: 'Not exists' }],\n };\n });\n }\n\n return promiseFile.then(\n (\n data: SOCKET_MESSAGE | { file: string; mimeType: string },\n ): Promise<SOCKET_MESSAGE | SOCKET_TRUNK[]> => {\n // if error\n if ((data as SOCKET_MESSAGE).sid) {\n return Promise.resolve(data as SOCKET_MESSAGE);\n }\n const dataFile = data as { file: string; mimeType: string };\n let packed = deflateSync(JSON.stringify(data)).toString('base64');\n if (\n typeof args === 'string' &&\n args?.startsWith('https:') &&\n packed.length > MAX_IOT_MESSAGE_LENGTH\n ) {\n // upload file to temp server\n return this.uploadToServer(args, dataFile).then(done => ({\n sid: message.sid,\n d: [_type, id, '', done ? '_$%URL' : 'Cannot upload'],\n }));\n }\n\n if (dataFile.file.length > MAX_FILE_SIZE) {\n // file too big\n this.adapter.log.warn(\n `[REMOTE] Requested file ${name} is too big (${Math.round(dataFile.file.length / 1000)}Kb). Max length is ${MAX_FILE_SIZE / 1024}Kb`,\n );\n return Promise.resolve({\n sid: message.sid,\n d: [\n _type,\n id,\n '',\n {\n error: `File is too big: ${Math.round(dataFile.file.length / 1000)}Kb, max ${MAX_FILE_SIZE / 1024}Kb`,\n },\n ],\n });\n }\n\n if (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n const packets: string[] = [];\n while (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_IOT_MESSAGE_LENGTH);\n packed = packed.substring(MAX_IOT_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n const trunks: SOCKET_TRUNK[] = packets.map((trunk, i) => ({\n sid: message.sid,\n i,\n l: packets.length,\n d: [_type, id, '', trunk],\n }));\n\n this.packets[id] = { ts: Date.now(), trunks };\n\n // start garbage collector\n this.gcInterval = this.gcInterval || setInterval(() => this._clearMemory(), 60000);\n\n return Promise.resolve(trunks);\n }\n return Promise.resolve({ sid: message.sid, d: [_type, id, '', packed] });\n },\n );\n }\n\n if (!this.config.remote) {\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, ['Not enabled']] });\n }\n let isNew = false;\n if (this.sockets) {\n if (!this.sockets[message.sid]) {\n this.adapter.log.debug(`[REMOTE] +++++ CONNECT ${message.sid}`);\n this.sockets[message.sid] = {\n _subscribe: {\n stateChange: [],\n objectChange: [],\n log: [],\n },\n ts: Date.now(),\n };\n isNew = true;\n } else {\n this.sockets[message.sid].ts = Date.now();\n }\n }\n\n if (promiseResult) {\n // this answer will be processed at the very end of the function\n } else if (_type === MESSAGE_TYPES.COMBINED_CALLBACK || _type === MESSAGE_TYPES.COMBINED_MESSAGE) {\n let promiseMany: Promise<[error: string | null, result?: any][]> | undefined;\n if (name === 'getStates') {\n promiseMany = this._getStatesManyArgs(args as [string][]);\n } else if (name === 'getState') {\n promiseMany = this._getStateManyArgs(args as [string][]);\n } else if (name === 'getObject') {\n promiseMany = this._getObjectManyArgs(args as [string][]);\n } else if (name === 'subscribe' || name === 'subscribeStates') {\n promiseMany = this._subscribeManyArgs(message.sid, args as [string | string[]][]);\n } else if (name === 'unsubscribe' || name === 'unsubscribeStates') {\n promiseMany = this._unsubscribeManyArgs(message.sid, args as [string | string[]][]);\n } else if (name === 'ppng') {\n // ping\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [0, isNew ? 0 : 1]] }); // 1 is OK, 0 is not OK\n } else {\n // error\n this.adapter.log.error(`[REMOTE] Received unknown multiple request: ${name}`);\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, ['Unknown command']] });\n }\n if (promiseMany) {\n promiseResult = promiseMany\n .then(result => this._sendResponse(message.sid, _type, id, name, result))\n /* let packed = zlib.deflateSync(JSON.stringify(result)).toString('base64');\n\n if (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n setImmediate(async () => {\n if (packed.length > MAX_POST_MESSAGE_LENGTH) {\n // too big message. Do not use iot for that and send directly to socket\n const packets = []\n while (packed.length > MAX_POST_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_POST_MESSAGE_LENGTH);\n packed = packed.substring(MAX_POST_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n for (let i = 0; i < packets.length; i++) {\n const error = await this._sendEvent({sid: message.sid, d: [_type, id, name, packets[i], packets.length, i]});\n if (error) {\n this.adapter.log.error('[REMOTE] cannot send: ' + JSON.stringify(error));\n break;\n }\n }\n } else {\n await this._sendEvent({sid: message.sid, d: [_type, id, name, packed]});\n }\n });\n return {sid: message.sid, d: [MESSAGE_TYPES.WAIT, id, name, [packed.length]]};\n } else {\n return {sid: message.sid, d: [_type, id, name, packed]};\n }\n })*/\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n }\n } else if (this.handlers[name]) {\n const argsArray = args as any[];\n if (!this.handlers[name].args) {\n promiseOne = this.handlers[name].f();\n } else if (this.handlers[name].args === 1) {\n promiseOne = this.handlers[name].f(argsArray[0]);\n } else if (this.handlers[name].args === 2) {\n promiseOne = this.handlers[name].f(argsArray[0], argsArray[1]);\n } else if (this.handlers[name].args === 3) {\n promiseOne = this.handlers[name].f(argsArray[0], argsArray[1], argsArray[2]);\n } else if (this.handlers[name].args === 4) {\n promiseOne = this.handlers[name].f(argsArray[0], argsArray[1], argsArray[2], argsArray[3]);\n } else if (this.handlers[name].args === 5) {\n promiseOne = this.handlers[name].f(\n argsArray[0],\n argsArray[1],\n argsArray[2],\n argsArray[3],\n argsArray[4],\n );\n } else if (this.handlers[name].args === 6) {\n promiseOne = this.handlers[name].f(\n argsArray[0],\n argsArray[1],\n argsArray[2],\n argsArray[3],\n argsArray[4],\n argsArray[5],\n );\n } else {\n this.adapter.log.warn('[REMOTE] Unsupported number of arguments');\n }\n } else if (name === 'ppng') {\n // ping\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null, !isNew]] });\n } else if (name === 'name') {\n const socket = this.sockets[message.sid];\n if (socket.name === undefined) {\n socket.name = name;\n this.adapter.log.info(`[REMOTE] socket ${message.sid} connected with name \"${name}\"`);\n } else if (socket.name !== name) {\n this.adapter.log.warn(\n `[REMOTE] socket ${message.sid} changed socket name from ${socket.name} to ${name}`,\n );\n socket.name = name;\n }\n\n // start garbage collector\n this.gcInterval = this.gcInterval || setInterval(() => this._clearMemory(), 60000);\n\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, []] });\n } else if (name === 'authenticate') {\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [true, false]] });\n } else if (name === 'getObjects') {\n promiseOne = this._readAllObjects();\n } else if (name === 'getHostByIp') {\n promiseResult = AdminSocket.getHostByIp(this.adapter, (args as [string])[0]).then(result => ({\n sid: message.sid,\n d: [_type, id, name, [result.ip, result.obj]],\n }));\n } else if (name === 'getStates') {\n promiseOne = this.adapter.getForeignStatesAsync((args as [string])[0] || '*');\n } else if (name === 'requireLog') {\n const isEnabled = (args as [string])[0];\n if (isEnabled) {\n this._subscribe(message.sid, 'log', 'dummy');\n } else {\n this._unsubscribe(message.sid, 'log', 'dummy');\n }\n\n if (this.adapter.log.level === 'debug') {\n this._showSubscribes(message.sid, 'log');\n }\n\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'DCT') {\n // disconnect\n const socket = this.sockets[message.sid];\n this.adapter.log.debug(`[REMOTE] ---- DISCONNECT ${message.sid}`);\n if (socket) {\n this._unsubscribeSocket(message.sid, 'stateChange');\n this._unsubscribeSocket(message.sid, 'objectChange');\n this._unsubscribeSocket(message.sid, 'log');\n delete this.sockets[message.sid];\n }\n } else if (name === 'getVersion') {\n promiseResult = Promise.resolve({\n sid: message.sid,\n d: [_type, id, name, [null, this.adminObj?.common.version, 'admin']],\n });\n } else if (name === 'subscribe' || name === 'subscribeStates') {\n const pattern = (args as [string | string[]])[0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._subscribe(message.sid, 'stateChange', pattern[p]);\n }\n } else {\n this._subscribe(message.sid, 'stateChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'stateChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'unsubscribe' || name === 'unsubscribeStates') {\n const pattern = (args as [string | string[]])[0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._unsubscribe(message.sid, 'stateChange', pattern[p]);\n }\n } else {\n this._unsubscribe(message.sid, 'stateChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'stateChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'subscribeObjects') {\n const pattern = (args as [string | string[]])?.[0] || '*';\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._subscribe(message.sid, 'objectChange', pattern[p]);\n }\n } else {\n this._subscribe(message.sid, 'objectChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'objectChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'unsubscribeObjects') {\n const pattern = (args as [string | string[]])[0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._unsubscribe(message.sid, 'objectChange', pattern[p]);\n }\n } else {\n this._unsubscribe(message.sid, 'objectChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'objectChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'authEnabled') {\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [false, 'admin']] });\n } else if (name === 'readFile') {\n const adapter = (args as [id: string, filePath: string])[0];\n const fileName = (args as [id: string, filePath: string])[1];\n promiseResult = this.adapter\n .readFileAsync(adapter, fileName)\n .then(data =>\n this._sendResponse(\n message.sid,\n _type,\n id,\n name,\n [null, data.file, data.mimeType],\n message.wu,\n message.ru,\n ),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'readFile64') {\n const adapter = (args as [id: string, filePath: string])[0];\n const fileName = (args as [id: string, filePath: string])[1];\n promiseResult = this.adapter\n .readFileAsync(adapter, fileName)\n .then(data => {\n let data64: string | undefined;\n if (data.mimeType) {\n try {\n if (\n data.mimeType === 'application/json' ||\n data.mimeType === 'application/json5' ||\n fileName.toLowerCase().endsWith('.json5')\n ) {\n data64 = Buffer.from(encodeURIComponent(data.mimeType)).toString('base64');\n } else if (data.mimeType) {\n data64 = Buffer.from(data.mimeType).toString('base64');\n }\n } catch (error) {\n this.adapter.log.error(`[readFile64] Cannot convert data: ${error.toString()}`);\n }\n }\n\n return this._sendResponse(\n message.sid,\n _type,\n id,\n name,\n [null, data64, data.mimeType],\n message.wu,\n message.ru,\n );\n })\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'writeFile' || name === 'writeFile64') {\n const [adr, fileName, data64, options] = args as [\n adapterId: string,\n fileName: string,\n data64: string,\n options?: any,\n ];\n if (readUrl) {\n promiseOne = axios(readUrl as string, {\n responseType: 'arraybuffer',\n validateStatus: status => status === 200,\n timeout: 15000,\n }).then(response =>\n this.adapter.writeFileAsync(adr, fileName, Buffer.from(response.data), options),\n );\n } else if (name === 'writeFile') {\n this.adapter.log.debug('writeFile deprecated. Please use writeFile64');\n promiseOne = this.adapter.writeFileAsync(adr, fileName, data64, options);\n } else if (name === 'writeFile64') {\n const buffer = Buffer.from(data64, 'base64');\n promiseOne = this.adapter.writeFileAsync(adr, fileName, buffer, options);\n }\n } else if (name === 'getHistory') {\n const _id = (args as [id: string, otions: ioBroker.GetHistoryOptions])[0];\n const options = (args as [id: string, otions: ioBroker.GetHistoryOptions])[1];\n promiseResult = this.adapter\n .getHistoryAsync(_id, options)\n .then(data =>\n this._sendResponse(\n message.sid,\n _type,\n id,\n name,\n [null, data.result, data.step, data.sessionId],\n message.wu,\n message.ru,\n ),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'getEasyMode') {\n promiseOne = AdminSocket.getEasyMode(this.adapter, this.adminObj);\n } else if (name === 'getAdapterInstances') {\n promiseOne = AdminSocket.getAdapterInstances(this.adapter, (args as [string])[0]);\n } else if (name === 'getCurrentInstance') {\n promiseOne = Promise.resolve(this.config.remoteAdminInstance);\n } else if (name === 'checkFeatureSupported') {\n promiseOne = Promise.resolve(\n this.adapter.supportsFeature?.(\n (\n args as [\n | 'ALIAS'\n | 'ALIAS_SEPARATE_READ_WRITE_ID'\n | 'ADAPTER_GETPORT_BIND'\n | 'ADAPTER_DEL_OBJECT_RECURSIVE'\n | 'ADAPTER_SET_OBJECT_SETS_DEFAULT_VALUE'\n | 'ADAPTER_AUTO_DECRYPT_NATIVE'\n | 'PLUGINS'\n | 'CONTROLLER_NPM_AUTO_REBUILD'\n | 'CONTROLLER_READWRITE_BASE_SETTINGS'\n | 'CONTROLLER_MULTI_REPO'\n | 'CONTROLLER_LICENSE_MANAGER'\n | 'CONTROLLER_OS_PACKAGE_UPGRADE'\n | 'DEL_INSTANCE_CUSTOM'\n | 'CUSTOM_FULL_VIEW'\n | 'ADAPTER_GET_OBJECTS_BY_ARRAY'\n | 'CONTROLLER_UI_UPGRADE'\n | 'ADAPTER_WEBSERVER_UPGRADE',\n ]\n )[0],\n ),\n );\n } else if (name === 'getAdapterName') {\n promiseOne = Promise.resolve('admin');\n } else if (name === 'decrypt') {\n if (this.secret) {\n promiseOne = Promise.resolve(this.adapter.decrypt(this.secret, (args as [string])[0]));\n } else {\n promiseOne = this.adapter.getForeignObjectAsync(\n 'system.config',\n (err: Error | null | undefined, obj: ioBroker.SystemConfigObject): string => {\n if (obj?.native?.secret) {\n this.secret = obj.native.secret;\n return this.adapter.decrypt(this.secret, (args as [string])[0]);\n }\n this.adapter.log.error(`No system.config found: ${err}`);\n throw new Error('No system.config found');\n },\n );\n }\n } else if (name === 'encrypt') {\n if (this.secret) {\n promiseOne = Promise.resolve(this.adapter.encrypt(this.secret, (args as [string])[0]));\n } else {\n promiseOne = this.adapter.getForeignObjectAsync(\n 'system.config',\n (err: Error | null | undefined, obj: ioBroker.SystemConfigObject): string => {\n if (obj?.native?.secret) {\n this.secret = obj.native.secret;\n return this.adapter.encrypt(this.secret, (args as [string])[0]);\n }\n this.adapter.log.error(`No system.config found: ${err}`);\n throw new Error('No system.config found');\n },\n );\n }\n } else if (name === 'getIsEasyModeStrict') {\n promiseOne = AdminSocket.getIsEasyModeStrict(this.adapter, this.adminObj);\n } else if (name === 'getAdapters') {\n promiseOne = AdminSocket.getAdapters(this.adapter, (args as [string])[0]);\n } else if (name === 'updateLicenses') {\n promiseOne = AdminSocket.updateLicenses(\n this.adapter,\n (args as [admin: string, password: string])[0],\n (args as [admin: string, password: string])[1],\n this.adminObj,\n );\n } else if (name === 'getCompactInstances') {\n promiseOne = AdminSocket.getCompactInstances(this.adapter);\n } else if (name === 'getCompactSystemRepositories') {\n promiseOne = AdminSocket.getCompactSystemRepositories(this.adapter);\n } else if (name === 'getCompactAdapters') {\n promiseOne = AdminSocket.getCompactAdapters(this.adapter);\n } else if (name === 'getCompactInstalled') {\n promiseResult = AdminSocket.getCompactInstalled(\n this.adapter,\n (args as [hostName: string])[0] || this.adminObj?.common.host || this.adapter.common!.host,\n ).then(data => ({ sid: message.sid, d: [_type, id, name, [data]] }));\n } else if (name === 'getCompactSystemConfig') {\n promiseOne = AdminSocket.getCompactSystemConfig(this.adapter);\n } else if (name === 'getCompactRepository') {\n promiseResult = AdminSocket.getCompactRepository(\n this.adapter,\n (args as [hostName: string])[0] || this.adminObj?.common.host || this.adapter.common!.host,\n ).then(data => ({ sid: message.sid, d: [_type, id, name, [data]] }));\n } else if (name === 'getCompactHosts') {\n promiseOne = AdminSocket.getCompactHosts(this.adapter);\n } else if (name === 'readLogs') {\n promiseOne = AdminSocket.readLogs(\n this.adapter,\n (args as [hostName: string])[0] || this.adminObj?.common.host || this.adapter.common!.host,\n );\n } else if (name === 'eventsThreshold') {\n promiseOne = Promise.resolve(NONE);\n } else if (name === 'getRatings') {\n promiseOne = AdminSocket.getRatings(\n this.adapter,\n (args as [forceUpdate?: boolean, autoUpdate?: boolean])[0],\n (args as [forceUpdate?: boolean, autoUpdate?: boolean])[1],\n );\n } else if (name === 'getUserPermissions') {\n this.adapter.log.error(`[REMOTE] getUserPermissions not implemented!!!!!!!!!!!!!!!!!!!!!`);\n } else if (name === 'listPermissions') {\n promiseResult = AdminSocket.listPermissions(this.adapter)\n .then(commandsPermissions =>\n this._sendResponse(message.sid, _type, id, name, [commandsPermissions]),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'sendToHost') {\n const [host, command, msg] = args as [host: string, command: string, message: any];\n this.adapter.log.debug(`[REMOTE] SEND_TO_HOST: ${command}`);\n // check if the host is alive\n promiseResult = AdminSocket.sendToHost(this.adapter, host, command, msg)\n .then(data => this._sendResponse(message.sid, _type, id, name, [data], message.wu, message.ru))\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'sendTo') {\n const [adapterInstance, command, message] = args as [instance: string, command: string, message: any];\n promiseResult = AdminSocket.sendTo(this.adapter, adapterInstance, command, message)\n .then(data => this._sendResponse(message.sid, _type, id, name, [data], message.wu, message.ru))\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'getAllObjects') {\n promiseOne = AdminSocket.getAllObjects(this.adapter);\n }\n\n // MESSAGE is the only one-way message and no answer is expected\n if (_type === MESSAGE_TYPES.MESSAGE || _type === MESSAGE_TYPES.COMBINED_MESSAGE) {\n promiseResult = promiseOne ? promiseOne.then(() => NONE) : Promise.resolve(NONE);\n } else if (!promiseResult && promiseOne) {\n promiseResult = promiseOne\n .then(result =>\n this._sendResponse(message.sid, _type, id, name, [null, result], message.wu, message.ru),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n }\n\n if (!promiseResult) {\n this.adapter.log.warn(`[REMOTE] Received unknown command: ${name}`);\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, ['Unknown command']] });\n }\n\n return promiseResult.then(result => {\n if (result !== NONE && result.d && result.d[0] !== MESSAGE_TYPES.WAIT) {\n setImmediate(\n async (_result, _message) => await this._sendEvent(_result, _message),\n result,\n message,\n );\n }\n\n return NONE;\n });\n }\n return Promise.reject(new Error('Null message'));\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/lib/remote.ts"],"names":[],"mappings":"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","sourcesContent":["import axios, { type AxiosError } from 'axios';\nimport { deflateSync } from 'node:zlib';\nimport AdminSocket from './adminCommonSocket';\nimport type { IotAdapterConfig } from './types';\nimport type { device as DeviceModule } from 'aws-iot-device-sdk';\nimport type IotAdapter from '../main';\n\ntype MESSAGE_TYPE = number;\nconst MESSAGE_TYPES: Record<string, MESSAGE_TYPE> = {\n MESSAGE: 0,\n PING: 1,\n PONG: 2,\n CALLBACK: 3,\n READY: 4,\n WAIT: 5,\n SENDING_DONE: 6,\n MISSING: 7,\n TIMEOUT: 8,\n HTML: 9,\n COMBINED_CALLBACK: 10,\n COMBINED_MESSAGE: 11,\n};\n\nconst MAX_IOT_MESSAGE_LENGTH = 127 * 1024;\nconst MAX_POST_MESSAGE_LENGTH = 127 * 1024;\nconst MAX_FILE_SIZE = 4 * 1024 * 1024;\n\nconst COLLECT_OBJS_MS = 400;\nconst COLLECT_STATES_MS = 400;\nconst COLLECT_LOGS_MS = 800;\n\nconst NONE = '___none___';\n\ntype SessionID = string;\ntype SubscribeType = 'stateChange' | 'objectChange' | 'log';\ntype Socket = {\n _subscribe: {\n stateChange: { pattern: string; regex: RegExp }[];\n objectChange: { pattern: string; regex: RegExp }[];\n log: { pattern: string; regex: RegExp }[];\n };\n ts: number;\n name?: string;\n};\n\ntype SOCKET_PAYLOAD = [\n type: MESSAGE_TYPE,\n id: number,\n functionName: string,\n args: any[] | string | { error: string },\n readUrlOrTotalMultiPackageLength?: string | number,\n numberOfPacketInMultiPackage?: number,\n];\nexport type SOCKET_MESSAGE = {\n sid: SessionID;\n d: SOCKET_PAYLOAD;\n wu?: string;\n ru?: string;\n};\nexport type SOCKET_CHANGE_MESSAGE = {\n name: SubscribeType;\n args: string | [ioBroker.LogMessage[]] | [string[], (ioBroker.Object | null | undefined)[]];\n sid: SessionID;\n multi?: boolean;\n};\n\nexport type SOCKET_TRUNK = {\n sid: string;\n i: number;\n l: number;\n d: SOCKET_PAYLOAD;\n};\n\nexport default class RemoteAccess {\n private readonly adapter: IotAdapter;\n private device: DeviceModule | null = null;\n private gcInterval: NodeJS.Timeout | null = null;\n private name = {};\n private objects = {};\n private readonly packets: {\n [id: string]: {\n ts: number;\n trunks: SOCKET_TRUNK[];\n };\n } = {};\n private readonly statesCache: { [stateId: string]: string } = {};\n private listOfLogs: ioBroker.LogMessage[] = [];\n private listOfStates: { ids: string[]; states: (ioBroker.State | null | undefined)[] } = { ids: [], states: [] };\n private listOfObjects: { ids: string[]; objs: (ioBroker.Object | null | undefined)[] } = { ids: [], objs: [] };\n private readonly clientId: string;\n private readonly config: IotAdapterConfig;\n private readonly collectStatesMs: number;\n private readonly collectObjectsMs: number;\n private readonly collectLogsMs: number;\n private readonly handlers: { [funcName: string]: { f: (...args: any[]) => Promise<any>; args: number } };\n private subscribes: {\n stateChange: { [pattern: string]: number };\n objectChange: { [pattern: string]: number };\n log: { [pattern: string]: number };\n } = { stateChange: {}, objectChange: {}, log: {} };\n private sockets: { [socketId: SessionID]: Socket } = {};\n private vendorPrefix = '';\n private localAdmin: string | null = null;\n private webObj: ioBroker.InstanceObject | null = null;\n private webUrl: string = '';\n private adminObj: ioBroker.InstanceObject | null = null;\n private adminUrl: string = '';\n private lang: ioBroker.Languages = 'en';\n private sendObjectsTimeout: NodeJS.Timeout | null = null;\n private sendLogsTimeout: NodeJS.Timeout | null = null;\n private sendStatesTimeout: NodeJS.Timeout | null = null;\n private infoTimeout: NodeJS.Timeout | null = null;\n private secret: string = '';\n\n constructor(adapter: IotAdapter, clientId: string) {\n this.adapter = adapter;\n this.config = adapter.config;\n this.clientId = clientId;\n this.collectStatesMs =\n this.config.collectStatesMs === undefined\n ? COLLECT_STATES_MS\n : parseInt(this.config.collectStatesMs as string, 10);\n this.collectObjectsMs =\n this.config.collectObjectsMs === undefined\n ? COLLECT_OBJS_MS\n : parseInt(this.config.collectObjectsMs as string, 10);\n this.collectLogsMs =\n this.config.collectLogsMs === undefined\n ? COLLECT_LOGS_MS\n : parseInt(this.config.collectLogsMs as string, 10);\n\n this.handlers = {\n getObject: { f: this.adapter.getForeignObjectAsync.bind(this.adapter), args: 1 },\n setObject: { f: this.adapter.setForeignObjectAsync.bind(this.adapter), args: 2 },\n getState: { f: this.adapter.getForeignStateAsync.bind(this.adapter), args: 1 },\n setState: { f: this.adapter.setForeignStateAsync.bind(this.adapter), args: 2 },\n delState: { f: this.adapter.delForeignStateAsync.bind(this.adapter), args: 2 },\n getObjectView: { f: this.adapter.getObjectViewAsync.bind(this.adapter), args: 4 },\n delObject: { f: this.adapter.delForeignObjectAsync.bind(this.adapter), args: 2 },\n delObjects: { f: this.adapter.delForeignObjectAsync.bind(this.adapter), args: 2 },\n extendObject: { f: this.adapter.extendForeignObjectAsync.bind(this.adapter), args: 2 },\n getForeignStates: { f: this.adapter.getForeignStatesAsync.bind(this.adapter), args: 1 },\n getForeignObjects: { f: this.adapter.getForeignObjectsAsync.bind(this.adapter), args: 2 },\n fileExists: { f: this.adapter.fileExistsAsync.bind(this.adapter), args: 2 },\n chownFile: { f: this.adapter.chownFileAsync.bind(this.adapter), args: 3 },\n chmodFile: { f: this.adapter.chmodFileAsync.bind(this.adapter), args: 3 },\n deleteFolder: { f: this.adapter.unlinkAsync.bind(this.adapter), args: 2 },\n deleteFile: { f: this.adapter.unlinkAsync.bind(this.adapter), args: 2 },\n mkdir: { f: this.adapter.mkdirAsync.bind(this.adapter), args: 2 },\n renameFile: { f: this.adapter.renameAsync.bind(this.adapter), args: 3 },\n readDir: { f: this.adapter.readDirAsync.bind(this.adapter), args: 2 },\n changePassword: { f: this.adapter.setPasswordAsync.bind(this.adapter), args: 2 },\n };\n\n if (!this.config.remote) {\n return;\n }\n\n if (this.config.remoteAdminInstance) {\n try {\n this.localAdmin = require\n .resolve('iobroker.admin')\n .replace(/\\\\/g, '/')\n .replace(/main\\.js$/, 'www-react');\n } catch {\n this.localAdmin = null;\n this.adapter.log.warn('[REMOTE] Cannot read admin files while iobroker.admin was not found');\n }\n void this.adapter.getForeignObjectAsync(`system.adapter.${this.config.remoteAdminInstance}`).then(obj => {\n this.adminObj = obj || null;\n if (obj?.native && !obj.native.auth) {\n this.adminUrl = `${obj.native.secure ? 'https:' : 'http:'}//localhost:${obj.native.port}`;\n }\n });\n }\n if (this.config.remoteWebInstance) {\n void this.adapter.getForeignObjectAsync(`system.adapter.${this.config.remoteWebInstance}`).then(obj => {\n this.webObj = obj || null;\n if (obj?.native && !obj.native.auth) {\n this.webUrl = `${obj.native.secure ? 'https:' : 'http:'}//localhost:${obj.native.port}`;\n }\n });\n }\n\n void this.adapter.getForeignObjectAsync('system.meta.uuid').then(obj => {\n if (obj?.native) {\n this.vendorPrefix = obj.native.uuid.length > 36 ? obj.native.uuid.substring(0, 2) : '';\n }\n });\n }\n\n setLanguage(_lang: ioBroker.Languages): void {\n this.lang = _lang || 'de';\n }\n\n registerDevice(device: DeviceModule): void {\n this.device = device;\n }\n\n async _sendCachedStates(): Promise<void> {\n const sids = Object.keys(this.sockets);\n\n const listOfStates = this.listOfStates;\n // clear cache\n this.listOfStates = { ids: [], states: [] };\n\n if (sids.length) {\n this.adapter.log.debug(\n `Send to ${sids.length} sockets: ${listOfStates.ids.map((id, i) => `${id}: ${listOfStates.states[i]?.val}`).join(', ')}`,\n );\n\n // pack the data\n const data = JSON.stringify([listOfStates.ids, listOfStates.states]);\n const args = deflateSync(data).toString('base64');\n\n for (let s = 0; s < sids.length; s++) {\n const error = await this._sendEvent({ name: 'stateChange', args, sid: sids[s], multi: true });\n if (error) {\n this.adapter.log.warn(`[REMOTE] cannot send \"stateChange\": ${JSON.stringify(error)}`);\n }\n }\n }\n }\n\n updateState(id: string, state: ioBroker.State | null | undefined): void {\n if (!this.config.remote) {\n return;\n }\n const cache = JSON.stringify(state);\n\n if (this.statesCache[id] && this.statesCache[id] !== cache) {\n if (this.config.debug) {\n this.adapter.log.debug(`[REMOTE] send stateChange \"${id}\": ${JSON.stringify(state)}`);\n }\n\n this.statesCache[id] = cache;\n\n this.listOfStates.ids.push(id);\n this.listOfStates.states.push(JSON.parse(JSON.stringify(state)));\n\n // do not wait if the list will be too long\n if (this.listOfStates.ids.length > 70) {\n if (this.sendObjectsTimeout) {\n clearTimeout(this.sendObjectsTimeout);\n this.sendObjectsTimeout = null;\n }\n this._sendCachedStates().catch(e => this.adapter.log.error(`[REMOTE] Cannot send cached states: ${e}`));\n } else {\n this.sendObjectsTimeout ||= setTimeout(() => {\n this.sendObjectsTimeout = null;\n this._sendCachedStates().catch(e =>\n this.adapter.log.error(`[REMOTE] Cannot send cached states: ${e}`),\n );\n }, this.collectStatesMs);\n }\n } else {\n // this.adapter.log.debug(`[REMOTE] ignore stateChange \"${id}\": ${JSON.stringify(state)}`);\n }\n }\n\n updateObject(id: string, obj: ioBroker.Object | null | undefined): void {\n if (!this.config.remote) {\n return;\n }\n this.listOfObjects.ids.push(id);\n this.listOfObjects.objs.push(JSON.parse(JSON.stringify(obj)));\n\n if (this.sendObjectsTimeout) {\n clearTimeout(this.sendObjectsTimeout);\n }\n\n this.sendObjectsTimeout = setTimeout(async () => {\n this.sendObjectsTimeout = null;\n const listOfObjects = this.listOfObjects;\n this.listOfObjects = { ids: [], objs: [] };\n const sids = Object.keys(this.sockets);\n\n for (let s = 0; s < sids.length; s++) {\n const error = await this._sendEvent({\n name: 'objectChange',\n args: [listOfObjects.ids, listOfObjects.objs],\n sid: sids[s],\n multi: true,\n });\n if (error) {\n this.adapter.log.warn(`[REMOTE] cannot send \"objectChange\": ${JSON.stringify(error)}`);\n }\n }\n }, COLLECT_OBJS_MS);\n }\n\n onLog(obj: ioBroker.LogMessage): void {\n if (!this.config.remote) {\n return;\n }\n this.listOfLogs.push(obj);\n\n if (this.sendLogsTimeout) {\n clearTimeout(this.sendLogsTimeout);\n }\n\n this.sendLogsTimeout = setTimeout(async () => {\n this.sendLogsTimeout = null;\n const listOfLogs = this.listOfLogs;\n this.listOfLogs = [];\n const sids = Object.keys(this.sockets);\n for (let s = 0; s < sids.length; s++) {\n const error = await this._sendEvent({\n name: 'log',\n args: [listOfLogs],\n sid: sids[s],\n multi: true,\n });\n if (error) {\n this.adapter.log.error(`[REMOTE] cannot send \"log\": ${JSON.stringify(error)}`);\n }\n }\n }, COLLECT_LOGS_MS);\n }\n\n destroy(): void {\n if (this.gcInterval) {\n clearInterval(this.gcInterval);\n this.gcInterval = null;\n }\n if (this.sendLogsTimeout) {\n clearTimeout(this.sendLogsTimeout);\n this.sendLogsTimeout = null;\n }\n if (this.sendObjectsTimeout) {\n clearTimeout(this.sendObjectsTimeout);\n this.sendObjectsTimeout = null;\n }\n if (this.sendStatesTimeout) {\n clearTimeout(this.sendStatesTimeout);\n this.sendStatesTimeout = null;\n }\n AdminSocket.stopGB();\n this._unsubscribeAll();\n this.sockets = {};\n }\n\n _clearMemory(): void {\n const now = Date.now();\n const DAY = 36000000 * 3;\n Object.keys(this.sockets).forEach(sid => {\n if (now - this.sockets[sid].ts > DAY) {\n this._unsubscribeSocket(sid, 'stateChange');\n this._unsubscribeSocket(sid, 'objectChange');\n this._unsubscribeSocket(sid, 'log');\n delete this.sockets[sid];\n }\n });\n\n Object.keys(this.packets).forEach(id => {\n if (now - this.packets[id].ts > 120000) {\n delete this.packets[id];\n }\n });\n }\n\n _readAllObjects(): Promise<{ [id: string]: ioBroker.Object }> {\n return this.adapter.getObjectListAsync({ include_docs: true }).then(res => {\n const objects: { [id: string]: ioBroker.Object } = {};\n this.adapter.log.info('[REMOTE] received all objects');\n if (res?.rows) {\n for (let i = 0; i < res.rows.length; i++) {\n objects[res.rows[i].doc._id] = res.rows[i].doc;\n }\n }\n return objects;\n });\n }\n\n pattern2RegEx(pattern: string): string | null {\n if (!pattern || typeof pattern !== 'string') {\n return null;\n }\n if (pattern !== '*') {\n if (pattern[0] === '*' && pattern[pattern.length - 1] !== '*') {\n pattern += '$';\n }\n if (pattern[0] !== '*' && pattern[pattern.length - 1] === '*') {\n pattern = `^${pattern}`;\n }\n }\n pattern = pattern.replace(/\\./g, '\\\\.');\n pattern = pattern.replace(/\\*/g, '.*');\n pattern = pattern.replace(/\\[/g, '\\\\[');\n pattern = pattern.replace(/]/g, '\\\\]');\n pattern = pattern.replace(/\\(/g, '\\\\(');\n pattern = pattern.replace(/\\)/g, '\\\\)');\n return pattern;\n }\n\n _subscribe(sid: SessionID, type: SubscribeType, pattern: string): void {\n //console.log((socket._name || socket.id) + ' subscribe ' + pattern);\n const socket = this.sockets[sid];\n\n this.subscribes[type] ||= {};\n\n let s: { pattern: string; regex: RegExp }[] | undefined;\n if (socket) {\n socket._subscribe[type] ||= [];\n s = socket._subscribe[type];\n for (let i = 0; i < s.length; i++) {\n if (s[i].pattern === pattern) {\n return;\n }\n }\n }\n\n const p = this.pattern2RegEx(pattern);\n if (p === null) {\n return this.adapter.log.warn('[REMOTE] Empty or invalid pattern on subscribe!');\n }\n if (s) {\n s.push({ pattern, regex: new RegExp(p) });\n }\n\n if (this.subscribes[type][pattern] === undefined) {\n this.subscribes[type][pattern] = 1;\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe STATES: ${pattern}`);\n this.adapter.subscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe OBJECTS: ${pattern}`);\n this.adapter.subscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug('[REMOTE] Subscribe LOGS');\n void this.adapter.requireLog?.(true);\n }\n } else {\n this.subscribes[type][pattern]++;\n }\n }\n\n _showSubscribes(sid: SessionID, type: SubscribeType): void {\n const socket = this.sockets[sid];\n\n if (socket?._subscribe) {\n const s = socket._subscribe[type] || [];\n const ids = [];\n for (let i = 0; i < s.length; i++) {\n ids.push(s[i].pattern);\n }\n this.adapter.log.debug(`[REMOTE] Subscribes: ${ids.join(', ')}`);\n } else {\n this.adapter.log.debug('[REMOTE] Subscribes: no subscribes');\n }\n }\n\n _updateConnectedInfo(): void {\n if (this.infoTimeout) {\n clearTimeout(this.infoTimeout);\n this.infoTimeout = null;\n }\n\n // TODO\n // this.adapter.setState('info.connection', text, true);\n }\n\n _unsubscribe(sid: SessionID, type: SubscribeType, pattern?: string): void {\n const socket = this.sockets[sid];\n this.subscribes[type] ||= {};\n\n if (socket && typeof socket === 'object') {\n if (!socket._subscribe?.[type]) {\n return;\n }\n\n for (let i = socket._subscribe[type].length - 1; i >= 0; i--) {\n if (socket._subscribe[type][i].pattern === pattern) {\n // Remove pattern from global list\n if (this.subscribes[type][pattern] !== undefined) {\n this.subscribes[type][pattern]--;\n if (this.subscribes[type][pattern] <= 0) {\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe STATES: ${pattern}`);\n //console.log((socket._name || socket.id) + ' unsubscribeForeignStates ' + pattern);\n this.adapter.unsubscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe OBJECTS: ${pattern}`);\n //console.log((socket._name || socket.id) + ' unsubscribeForeignObjects ' + pattern);\n this.adapter.unsubscribeForeignObjects &&\n this.adapter.unsubscribeForeignObjects(pattern);\n } else if (type === 'log') {\n //console.log((socket._name || socket.id) + ' requireLog false');\n this.adapter.log.debug('[REMOTE] Unsubscribe LOGS');\n void this.adapter.requireLog?.(false);\n }\n delete this.subscribes[type][pattern];\n }\n }\n\n socket._subscribe[type].splice(i, 1);\n return;\n }\n }\n } else if (pattern) {\n // Remove pattern from global list\n if (this.subscribes[type][pattern] !== undefined) {\n this.subscribes[type][pattern]--;\n if (this.subscribes[type][pattern] <= 0) {\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe STATES: ${pattern}`);\n this.adapter.unsubscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe OBJECTS: ${pattern}`);\n this.adapter.unsubscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug('[REMOTE] Unsubscribe LOGS');\n void this.adapter.requireLog?.(false);\n }\n delete this.subscribes[type][pattern];\n }\n }\n }\n }\n\n _unsubscribeAll(): void {\n Object.keys(this.sockets).forEach(sid => {\n this._unsubscribe(sid, 'stateChange');\n this._unsubscribe(sid, 'objectChange');\n this._unsubscribe(sid, 'log');\n });\n }\n\n _unsubscribeSocket(sid: SessionID, type: SubscribeType): void {\n const socket = this.sockets[sid];\n\n if (!socket?._subscribe?.[type]) {\n return;\n }\n\n for (let i = 0; i < socket._subscribe[type].length; i++) {\n const pattern = socket._subscribe[type][i].pattern;\n if (this.subscribes[type][pattern] !== undefined) {\n this.subscribes[type][pattern]--;\n if (this.subscribes[type][pattern] <= 0) {\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe STATES: ${pattern}`);\n this.adapter.unsubscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe OBJECTS: ${pattern}`);\n this.adapter.unsubscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug(`[REMOTE] Unsubscribe LOGS: ${pattern}`);\n void this.adapter.requireLog?.(false);\n }\n delete this.subscribes[type][pattern];\n }\n }\n }\n }\n\n _subscribeSocket(sid: SessionID, type: SubscribeType): void {\n const socket = this.sockets[sid];\n\n if (!socket?._subscribe?.[type]) {\n return;\n }\n\n for (let i = 0; i < socket._subscribe[type].length; i++) {\n const pattern = socket._subscribe[type][i].pattern;\n if (this.subscribes[type][pattern] === undefined) {\n this.subscribes[type][pattern] = 1;\n if (type === 'stateChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe STATES: ${pattern}`);\n this.adapter.subscribeForeignStates(pattern);\n } else if (type === 'objectChange') {\n this.adapter.log.debug(`[REMOTE] Subscribe OBJECTS: ${pattern}`);\n this.adapter.subscribeForeignObjects?.(pattern);\n } else if (type === 'log') {\n this.adapter.log.debug('[REMOTE] Subscribe LOGS');\n void this.adapter.requireLog?.(true);\n }\n } else {\n this.subscribes[type][pattern]++;\n }\n }\n }\n\n _sendEvent(\n message: SOCKET_MESSAGE | SOCKET_CHANGE_MESSAGE,\n _originalMessage?: SOCKET_MESSAGE,\n ): Promise<string | undefined> {\n return axios\n .post('https://remote-events.iobroker.in/', message, {\n validateStatus: status => status === 200,\n timeout: 5000,\n })\n .then(() => undefined)\n .catch(error => {\n let errorMessage: any;\n if ((error as AxiosError).response) {\n errorMessage = (error as AxiosError).response!.data || (error as AxiosError).response!.status;\n } else {\n errorMessage = error.message?.toString();\n }\n\n this.adapter.log.warn(\n `[REMOTE] Cannot send status update to ${message.sid} (${JSON.stringify(_originalMessage)}): ${JSON.stringify(errorMessage)}`,\n );\n\n if (errorMessage.error === 'invalid connectionId') {\n if (this.sockets[message.sid]) {\n this.adapter.log.debug(`[REMOTE] delete connection id ${message.sid}`);\n delete this.sockets[message.sid];\n }\n errorMessage = false;\n } else {\n this.adapter.log.warn(\n `[REMOTE] Cannot send status update to \"${message.sid}\" (${JSON.stringify(_originalMessage)}): ${JSON.stringify(errorMessage)}`,\n );\n }\n\n return JSON.stringify(errorMessage);\n });\n }\n\n async _getStatesManyArgs(\n args: [string][],\n ): Promise<[error: string | null, states?: Record<string, ioBroker.State>][]> {\n const response: [error: string | null, states?: Record<string, ioBroker.State>][] = [];\n for (let a = 0; a < args.length; a++) {\n const id = args[a][0];\n try {\n const result: Record<string, ioBroker.State> = await this.adapter.getForeignStatesAsync(id || '*');\n response[a] = [null, result];\n if (result) {\n Object.keys(result).forEach(id => (this.statesCache[id] = JSON.stringify(result[id])));\n }\n } catch (error) {\n response[a] = [error];\n }\n }\n return response;\n }\n\n async _getStateManyArgs(\n args: [string][],\n ): Promise<[error: string | null, state?: ioBroker.State | null | undefined][]> {\n const response: [error: string | null, state?: ioBroker.State | null | undefined][] = [];\n for (let a = 0; a < args.length; a++) {\n const id = args[a][0];\n try {\n const result = await this.adapter.getForeignStateAsync(id || '*');\n response[a] = [null, result];\n this.statesCache[id] = JSON.stringify(result);\n } catch (error) {\n response[a] = [error];\n }\n }\n return response;\n }\n\n async _getObjectManyArgs(\n args: [string][],\n ): Promise<[error: string | null, state?: ioBroker.Object | null | undefined][]> {\n const response: [error: string | null, state?: ioBroker.Object | null | undefined][] = [];\n for (let a = 0; a < args.length; a++) {\n const id = args[a][0];\n try {\n const result = await this.adapter.getForeignObjectAsync(id || '*');\n response[a] = [null, result];\n } catch (error) {\n response[a] = [error];\n }\n }\n return response;\n }\n\n _subscribeManyArgs(sid: SessionID, args: [string | string[]][]): Promise<[error: string | null][]> {\n const result: [error: string | null][] = [];\n for (let a = 0; a < args.length; a++) {\n const pattern = args[a][0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._subscribe(sid, 'stateChange', pattern[p]);\n }\n } else {\n this._subscribe(sid, 'stateChange', pattern);\n }\n result.push([null]);\n }\n return Promise.resolve(result);\n }\n\n async _unsubscribeManyArgs(sid: SessionID, args: [string | string[]][]): Promise<[error: string | null][]> {\n const result: [error: string | null][] = [];\n for (let a = 0; a < args.length; a++) {\n const pattern = args[a][0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._unsubscribe(sid, 'stateChange', pattern[p]);\n }\n } else {\n this._unsubscribe(sid, 'stateChange', pattern);\n }\n result.push([null]);\n }\n return Promise.resolve(result);\n }\n\n uploadToServer(url: string, data: { file: string; mimeType: string }, raw?: boolean): Promise<boolean> {\n return axios\n .put(url, raw ? data.file : Buffer.from(data.file, 'base64'), {\n headers: {\n 'Content-Type': data.mimeType,\n },\n })\n .then(() => {\n return true;\n })\n .catch(e => {\n console.log(e);\n return false;\n });\n }\n\n readUrlFile(\n url: string,\n path: string,\n sid: SessionID,\n type: MESSAGE_TYPE,\n id: number,\n ): Promise<{ file: string; mimeType: string } | SOCKET_MESSAGE> {\n return axios(url + path, {\n responseType: 'arraybuffer',\n validateStatus: status => status === 200,\n timeout: 500,\n })\n .then(response => {\n // replace port\n if (path.endsWith('_socket/info.js')) {\n response.data = response.data.toString();\n // var socketUrl = \":8084\"; var socketSession = \"\"; window.sysLang = \"ru\"; window.socketForceWebSockets = false;\n // replace \":8084\"; => \"\";\n response.data = response.data.replace(/\":\\d+\";/, '\"\";');\n }\n\n return {\n file: Buffer.from(response.data).toString('base64'),\n mimeType: (response.headers['content-type'] as string) || 'text/plain',\n };\n })\n .catch(error => {\n this.adapter.log.warn(`[REMOTE] File ${url}${path} not found`);\n let errorMessage;\n if (error.response && error.response.status === 404) {\n errorMessage = 'Not exists';\n } else if (error.response && error.response.status === 401) {\n errorMessage = 'Not authorised';\n } else {\n if (error.response) {\n errorMessage = error.response.data || error.response.status;\n } else if (error.request) {\n errorMessage = 'No answer';\n } else {\n errorMessage = error.message;\n }\n }\n return { sid, d: [type, id, '', { error: errorMessage }] };\n });\n }\n\n _sendResponse(\n sid: SessionID,\n _type: MESSAGE_TYPE,\n id: number,\n name: string,\n args: any[],\n writeUrl?: string,\n readUrl?: string,\n ): Promise<SOCKET_MESSAGE> {\n let packed = deflateSync(JSON.stringify(args)).toString('base64');\n\n if (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n if (writeUrl) {\n if (args.length === 3) {\n const [error, file, mimeType] = args;\n if (!error) {\n return this.uploadToServer(writeUrl, { file, mimeType }, true).then(done => ({\n sid,\n d: [_type, id, name, done ? readUrl! : ['Cannot upload']],\n }));\n }\n } else if (args.length === 2) {\n const [error, result] = args;\n if (!error) {\n return this.uploadToServer(\n writeUrl,\n { file: JSON.stringify(result), mimeType: 'application/json' },\n true,\n ).then(done => ({ sid, d: [_type, id, name, done ? readUrl! : ['Cannot upload']] }));\n }\n } else if (args.length === 1) {\n const [result] = args;\n return this.uploadToServer(\n writeUrl,\n { file: JSON.stringify(result), mimeType: 'application/json' },\n true,\n ).then(done => ({ sid, d: [_type, id, name, done ? readUrl! : ['Cannot upload']] }));\n }\n }\n // too big message. Do not use iot for that and send directly to socket\n /*const packets = []\n while (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_IOT_MESSAGE_LENGTH);\n packed = packed.substring(MAX_IOT_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n const trunks = packets.map((trunk, i) =>\n sid: message.sid, i, l: packets.length, d: [_type, id, name, trunk]}));\n\n this.packets[id] = {ts: Date.now(), trunks};\n\n // start garbage collector\n this.gcInterval = this.gcInterval || setInterval(() => this._clearMemory(), 60000);\n\n return trunks;*/\n setImmediate(async () => {\n if (packed.length > MAX_POST_MESSAGE_LENGTH) {\n // too big message. Do not use iot for that and send directly to socket\n const packets: string[] = [];\n while (packed.length > MAX_POST_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_POST_MESSAGE_LENGTH);\n packed = packed.substring(MAX_POST_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n for (let i = 0; i < packets.length; i++) {\n const error = await this._sendEvent({\n sid,\n d: [_type, id, name, packets[i], packets.length, i],\n });\n if (error) {\n this.adapter.log.error(`[REMOTE] cannot send: ${JSON.stringify(error)}`);\n break;\n }\n }\n } else {\n await this._sendEvent({ sid, d: [_type, id, name, packed] });\n }\n });\n\n return Promise.resolve({ sid, d: [MESSAGE_TYPES.WAIT, id, name, [packed.length]] });\n }\n return Promise.resolve({ sid, d: [_type, id, name, packed] });\n }\n\n onCloudDisconnect(): void {\n // delete all sockets\n this.adapter.log.debug(`[REMOTE] Cloud disconnected`);\n if (!this.sockets) {\n return;\n }\n\n const sids = Object.keys(this.sockets);\n for (let s = 0; s < sids.length; s++) {\n this._unsubscribeSocket(sids[s], 'stateChange');\n this._unsubscribeSocket(sids[s], 'objectChange');\n this._unsubscribeSocket(sids[s], 'log');\n delete this.sockets[sids[s]];\n }\n }\n\n process(\n request: string | SOCKET_MESSAGE,\n serviceType: `remote${string}`,\n ): Promise<'___none___' | SOCKET_MESSAGE | SOCKET_TRUNK[]> {\n let message: SOCKET_MESSAGE | null;\n if (typeof request === 'string') {\n try {\n message = JSON.parse(request);\n } catch {\n this.adapter.log.error(`[REMOTE] Cannot parse request: ${request}`);\n message = null;\n }\n } else {\n message = request;\n }\n\n if (message) {\n const [_type, id, name, args, readUrl] = message.d;\n let promiseOne: Promise<any> | undefined; // answer will be created automatically (error, result)\n let promiseResult: Promise<SOCKET_MESSAGE | '___none___'> | undefined; // answer will be created by promise\n\n if (this.config.remote && _type === MESSAGE_TYPES.MISSING) {\n if (this.packets[id]) {\n const missing = (args as number[][])[0];\n this.adapter.log.warn(\n `[REMOTE] Request for existing trunks: ${id}, \"${name}\": ${JSON.stringify(missing)}`,\n );\n\n if (this.device) {\n setImmediate(async () => {\n try {\n for (let m = 0; m < missing.length; m++) {\n await new Promise<void>((resolve, reject) =>\n this.device!.publish(\n `response/${this.clientId}/${serviceType}`,\n JSON.stringify(this.packets[id].trunks[m]),\n { qos: 1 },\n error => {\n if (error) {\n reject(error);\n } else {\n resolve();\n }\n },\n ),\n );\n }\n } catch (err) {\n this.adapter.log.error(`[REMOTE] Cannot send packet: ${err}`);\n }\n });\n }\n } else {\n this.adapter.log.warn(`[REMOTE] Request for non existing trunks: ${id}, \"${name}\"`);\n }\n promiseResult = Promise.resolve(NONE);\n } else if (this.config.remote && _type === MESSAGE_TYPES.SENDING_DONE) {\n this.adapter.log.debug(`[REMOTE] Packet received: ${id}, \"${name}\"`);\n delete this.packets[id];\n promiseResult = Promise.resolve(NONE);\n } else if (_type === MESSAGE_TYPES.HTML) {\n let promiseFile: Promise<SOCKET_MESSAGE | { file: string; mimeType: string }>;\n\n if (!this.config.remote) {\n return Promise.resolve({ sid: message.sid, d: [_type, id, '', ['Not enabled']] });\n } else if (name === 'listOfPrograms' || name === '/listOfPrograms') {\n promiseFile = AdminSocket.getListOfAllAdapters(this.adapter)\n .then(result => {\n const packed = deflateSync(JSON.stringify([null, result])).toString('base64');\n return { sid: message.sid, d: [_type, id, '', packed] } as SOCKET_MESSAGE;\n })\n .catch(\n error =>\n ({\n sid: message.sid,\n d: [_type, id, '', [error.toString()]],\n }) as SOCKET_MESSAGE,\n );\n } else if (name === 'vendorPrefix' || name === '/vendorPrefix') {\n return Promise.resolve({ sid: message.sid, d: [_type, id, '', [null, this.vendorPrefix]] });\n } else if (name.startsWith('/adapter')) {\n if (this.config.remoteAdminInstance) {\n if (this.adminUrl) {\n promiseFile = this.readUrlFile(this.adminUrl, name, message.sid, _type, id);\n } else {\n promiseFile = Promise.resolve({\n sid: message.sid,\n d: [_type, id, '', { error: 'Not exists' }],\n });\n }\n } else {\n promiseFile = Promise.resolve({\n sid: message.sid,\n d: [_type, id, '', { error: 'Not exists' }],\n });\n }\n } else {\n const path = name.split('?')[0];\n const parts = path.split('/');\n parts.shift(); // remove leading /\n const _adapter = parts.shift() || '';\n this.adapter.log.debug(`[REMOTE] HTML: ${path}`);\n\n // html must be returned only by iot channel, as lambda must process the answer\n promiseFile = this.adapter\n .readFileAsync(_adapter, parts.join('/'))\n .then(data => {\n data.file = Buffer.from(data.file).toString('base64');\n return data as { file: string; mimeType: string };\n })\n .catch(() => {\n if (this.webUrl) {\n // try to read from server\n return this.readUrlFile(this.webUrl, path, message.sid, _type, id);\n }\n return {\n sid: message.sid,\n d: [_type, id, '', { error: 'Not exists' }],\n };\n });\n }\n\n return promiseFile.then(\n (\n data: SOCKET_MESSAGE | { file: string; mimeType: string },\n ): Promise<SOCKET_MESSAGE | SOCKET_TRUNK[]> => {\n // if error\n if ((data as SOCKET_MESSAGE).sid) {\n return Promise.resolve(data as SOCKET_MESSAGE);\n }\n const dataFile = data as { file: string; mimeType: string };\n let packed = deflateSync(JSON.stringify(data)).toString('base64');\n if (\n typeof args === 'string' &&\n args?.startsWith('https:') &&\n packed.length > MAX_IOT_MESSAGE_LENGTH\n ) {\n // upload file to temp server\n return this.uploadToServer(args, dataFile).then(done => ({\n sid: message.sid,\n d: [_type, id, '', done ? '_$%URL' : 'Cannot upload'],\n }));\n }\n\n if (dataFile.file.length > MAX_FILE_SIZE) {\n // file too big\n this.adapter.log.warn(\n `[REMOTE] Requested file ${name} is too big (${Math.round(dataFile.file.length / 1000)}Kb). Max length is ${MAX_FILE_SIZE / 1024}Kb`,\n );\n return Promise.resolve({\n sid: message.sid,\n d: [\n _type,\n id,\n '',\n {\n error: `File is too big: ${Math.round(dataFile.file.length / 1000)}Kb, max ${MAX_FILE_SIZE / 1024}Kb`,\n },\n ],\n });\n }\n\n if (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n const packets: string[] = [];\n while (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_IOT_MESSAGE_LENGTH);\n packed = packed.substring(MAX_IOT_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n const trunks: SOCKET_TRUNK[] = packets.map((trunk, i) => ({\n sid: message.sid,\n i,\n l: packets.length,\n d: [_type, id, '', trunk],\n }));\n\n this.packets[id] = { ts: Date.now(), trunks };\n\n // start garbage collector\n this.gcInterval = this.gcInterval || setInterval(() => this._clearMemory(), 60000);\n\n return Promise.resolve(trunks);\n }\n return Promise.resolve({ sid: message.sid, d: [_type, id, '', packed] });\n },\n );\n }\n\n if (!this.config.remote) {\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, ['Not enabled']] });\n }\n let isNew = false;\n if (this.sockets) {\n if (!this.sockets[message.sid]) {\n this.adapter.log.debug(`[REMOTE] +++++ CONNECT ${message.sid}`);\n this.sockets[message.sid] = {\n _subscribe: {\n stateChange: [],\n objectChange: [],\n log: [],\n },\n ts: Date.now(),\n };\n isNew = true;\n } else {\n this.sockets[message.sid].ts = Date.now();\n }\n }\n\n if (promiseResult) {\n // this answer will be processed at the very end of the function\n } else if (_type === MESSAGE_TYPES.COMBINED_CALLBACK || _type === MESSAGE_TYPES.COMBINED_MESSAGE) {\n let promiseMany: Promise<[error: string | null, result?: any][]> | undefined;\n if (name === 'getStates') {\n promiseMany = this._getStatesManyArgs(args as [string][]);\n } else if (name === 'getState') {\n promiseMany = this._getStateManyArgs(args as [string][]);\n } else if (name === 'getObject') {\n promiseMany = this._getObjectManyArgs(args as [string][]);\n } else if (name === 'subscribe' || name === 'subscribeStates') {\n promiseMany = this._subscribeManyArgs(message.sid, args as [string | string[]][]);\n } else if (name === 'unsubscribe' || name === 'unsubscribeStates') {\n promiseMany = this._unsubscribeManyArgs(message.sid, args as [string | string[]][]);\n } else if (name === 'ppng') {\n // ping\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [0, isNew ? 0 : 1]] }); // 1 is OK, 0 is not OK\n } else {\n // error\n this.adapter.log.error(`[REMOTE] Received unknown multiple request: ${name}`);\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, ['Unknown command']] });\n }\n if (promiseMany) {\n promiseResult = promiseMany\n .then(result => this._sendResponse(message.sid, _type, id, name, result))\n /* let packed = zlib.deflateSync(JSON.stringify(result)).toString('base64');\n\n if (packed.length > MAX_IOT_MESSAGE_LENGTH) {\n setImmediate(async () => {\n if (packed.length > MAX_POST_MESSAGE_LENGTH) {\n // too big message. Do not use iot for that and send directly to socket\n const packets = []\n while (packed.length > MAX_POST_MESSAGE_LENGTH) {\n const trunk = packed.substring(0, MAX_POST_MESSAGE_LENGTH);\n packed = packed.substring(MAX_POST_MESSAGE_LENGTH);\n packets.push(trunk);\n }\n if (packed.length) {\n packets.push(packed);\n }\n\n for (let i = 0; i < packets.length; i++) {\n const error = await this._sendEvent({sid: message.sid, d: [_type, id, name, packets[i], packets.length, i]});\n if (error) {\n this.adapter.log.error('[REMOTE] cannot send: ' + JSON.stringify(error));\n break;\n }\n }\n } else {\n await this._sendEvent({sid: message.sid, d: [_type, id, name, packed]});\n }\n });\n return {sid: message.sid, d: [MESSAGE_TYPES.WAIT, id, name, [packed.length]]};\n } else {\n return {sid: message.sid, d: [_type, id, name, packed]};\n }\n })*/\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n }\n } else if (this.handlers[name]) {\n const argsArray = args as any[];\n if (!this.handlers[name].args) {\n promiseOne = this.handlers[name].f();\n } else if (this.handlers[name].args === 1) {\n promiseOne = this.handlers[name].f(argsArray[0]);\n } else if (this.handlers[name].args === 2) {\n promiseOne = this.handlers[name].f(argsArray[0], argsArray[1]);\n } else if (this.handlers[name].args === 3) {\n promiseOne = this.handlers[name].f(argsArray[0], argsArray[1], argsArray[2]);\n } else if (this.handlers[name].args === 4) {\n promiseOne = this.handlers[name].f(argsArray[0], argsArray[1], argsArray[2], argsArray[3]);\n } else if (this.handlers[name].args === 5) {\n promiseOne = this.handlers[name].f(\n argsArray[0],\n argsArray[1],\n argsArray[2],\n argsArray[3],\n argsArray[4],\n );\n } else if (this.handlers[name].args === 6) {\n promiseOne = this.handlers[name].f(\n argsArray[0],\n argsArray[1],\n argsArray[2],\n argsArray[3],\n argsArray[4],\n argsArray[5],\n );\n } else {\n this.adapter.log.warn('[REMOTE] Unsupported number of arguments');\n }\n } else if (name === 'ppng') {\n // ping\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null, !isNew]] });\n } else if (name === 'name') {\n const socket = this.sockets[message.sid];\n if (socket.name === undefined) {\n socket.name = name;\n this.adapter.log.info(`[REMOTE] socket ${message.sid} connected with name \"${name}\"`);\n } else if (socket.name !== name) {\n this.adapter.log.warn(\n `[REMOTE] socket ${message.sid} changed socket name from ${socket.name} to ${name}`,\n );\n socket.name = name;\n }\n\n // start garbage collector\n this.gcInterval = this.gcInterval || setInterval(() => this._clearMemory(), 60000);\n\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, []] });\n } else if (name === 'authenticate') {\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [true, false]] });\n } else if (name === 'getObjects') {\n promiseOne = this._readAllObjects();\n } else if (name === 'getHostByIp') {\n promiseResult = AdminSocket.getHostByIp(this.adapter, (args as [string])[0]).then(result => ({\n sid: message.sid,\n d: [_type, id, name, [result.ip, result.obj]],\n }));\n } else if (name === 'getStates') {\n promiseOne = this.adapter.getForeignStatesAsync((args as [string])[0] || '*');\n } else if (name === 'requireLog') {\n const isEnabled = (args as [string])[0];\n if (isEnabled) {\n this._subscribe(message.sid, 'log', 'dummy');\n } else {\n this._unsubscribe(message.sid, 'log', 'dummy');\n }\n\n if (this.adapter.log.level === 'debug') {\n this._showSubscribes(message.sid, 'log');\n }\n\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'DCT') {\n // disconnect\n const socket = this.sockets[message.sid];\n this.adapter.log.debug(`[REMOTE] ---- DISCONNECT ${message.sid}`);\n if (socket) {\n this._unsubscribeSocket(message.sid, 'stateChange');\n this._unsubscribeSocket(message.sid, 'objectChange');\n this._unsubscribeSocket(message.sid, 'log');\n delete this.sockets[message.sid];\n }\n } else if (name === 'getVersion') {\n promiseResult = Promise.resolve({\n sid: message.sid,\n d: [_type, id, name, [null, this.adminObj?.common.version, 'admin']],\n });\n } else if (name === 'subscribe' || name === 'subscribeStates') {\n const pattern = (args as [string | string[]])[0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._subscribe(message.sid, 'stateChange', pattern[p]);\n }\n } else {\n this._subscribe(message.sid, 'stateChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'stateChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'unsubscribe' || name === 'unsubscribeStates') {\n const pattern = (args as [string | string[]])[0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._unsubscribe(message.sid, 'stateChange', pattern[p]);\n }\n } else {\n this._unsubscribe(message.sid, 'stateChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'stateChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'subscribeObjects') {\n const pattern = (args as [string | string[]])?.[0] || '*';\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._subscribe(message.sid, 'objectChange', pattern[p]);\n }\n } else {\n this._subscribe(message.sid, 'objectChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'objectChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'unsubscribeObjects') {\n const pattern = (args as [string | string[]])[0];\n if (Array.isArray(pattern)) {\n for (let p = 0; p < pattern.length; p++) {\n this._unsubscribe(message.sid, 'objectChange', pattern[p]);\n }\n } else {\n this._unsubscribe(message.sid, 'objectChange', pattern);\n }\n\n this.adapter.log.level === 'debug' && this._showSubscribes(message.sid, 'objectChange');\n promiseOne = Promise.resolve({ sid: message.sid, d: [_type, id, name, [null]] });\n } else if (name === 'authEnabled') {\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, [false, 'admin']] });\n } else if (name === 'readFile') {\n const adapter = (args as [id: string, filePath: string])[0];\n const fileName = (args as [id: string, filePath: string])[1];\n promiseResult = this.adapter\n .readFileAsync(adapter, fileName)\n .then(data =>\n this._sendResponse(\n message.sid,\n _type,\n id,\n name,\n [null, data.file, data.mimeType],\n message.wu,\n message.ru,\n ),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'readFile64') {\n const adapter = (args as [id: string, filePath: string])[0];\n const fileName = (args as [id: string, filePath: string])[1];\n promiseResult = this.adapter\n .readFileAsync(adapter, fileName)\n .then(data => {\n let data64: string | undefined;\n if (data.mimeType) {\n try {\n if (\n data.mimeType === 'application/json' ||\n data.mimeType === 'application/json5' ||\n fileName.toLowerCase().endsWith('.json5')\n ) {\n data64 = Buffer.from(encodeURIComponent(data.mimeType)).toString('base64');\n } else if (data.mimeType) {\n data64 = Buffer.from(data.mimeType).toString('base64');\n }\n } catch (error) {\n this.adapter.log.error(`[readFile64] Cannot convert data: ${error.toString()}`);\n }\n }\n\n return this._sendResponse(\n message.sid,\n _type,\n id,\n name,\n [null, data64, data.mimeType],\n message.wu,\n message.ru,\n );\n })\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'writeFile' || name === 'writeFile64') {\n const [adr, fileName, data64, options] = args as [\n adapterId: string,\n fileName: string,\n data64: string,\n options?: any,\n ];\n if (readUrl) {\n promiseOne = axios(readUrl as string, {\n responseType: 'arraybuffer',\n validateStatus: status => status === 200,\n timeout: 15000,\n }).then(response =>\n this.adapter.writeFileAsync(adr, fileName, Buffer.from(response.data), options),\n );\n } else if (name === 'writeFile') {\n this.adapter.log.debug('writeFile deprecated. Please use writeFile64');\n promiseOne = this.adapter.writeFileAsync(adr, fileName, data64, options);\n } else if (name === 'writeFile64') {\n const buffer = Buffer.from(data64, 'base64');\n promiseOne = this.adapter.writeFileAsync(adr, fileName, buffer, options);\n }\n } else if (name === 'getHistory') {\n const _id = (args as [id: string, otions: ioBroker.GetHistoryOptions])[0];\n const options = (args as [id: string, otions: ioBroker.GetHistoryOptions])[1];\n promiseResult = this.adapter\n .getHistoryAsync(_id, options)\n .then(data =>\n this._sendResponse(\n message.sid,\n _type,\n id,\n name,\n [null, data.result, data.step, data.sessionId],\n message.wu,\n message.ru,\n ),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'getEasyMode') {\n promiseOne = AdminSocket.getEasyMode(this.adapter, this.adminObj);\n } else if (name === 'getAdapterInstances') {\n promiseOne = AdminSocket.getAdapterInstances(this.adapter, (args as [string])[0]);\n } else if (name === 'getCurrentInstance') {\n promiseOne = Promise.resolve(this.config.remoteAdminInstance);\n } else if (name === 'checkFeatureSupported') {\n promiseOne = Promise.resolve(\n this.adapter.supportsFeature?.(\n (\n args as [\n | 'ALIAS'\n | 'ALIAS_SEPARATE_READ_WRITE_ID'\n | 'ADAPTER_GETPORT_BIND'\n | 'ADAPTER_DEL_OBJECT_RECURSIVE'\n | 'ADAPTER_SET_OBJECT_SETS_DEFAULT_VALUE'\n | 'ADAPTER_AUTO_DECRYPT_NATIVE'\n | 'PLUGINS'\n | 'CONTROLLER_NPM_AUTO_REBUILD'\n | 'CONTROLLER_READWRITE_BASE_SETTINGS'\n | 'CONTROLLER_MULTI_REPO'\n | 'CONTROLLER_LICENSE_MANAGER'\n | 'CONTROLLER_OS_PACKAGE_UPGRADE'\n | 'DEL_INSTANCE_CUSTOM'\n | 'CUSTOM_FULL_VIEW'\n | 'ADAPTER_GET_OBJECTS_BY_ARRAY'\n | 'CONTROLLER_UI_UPGRADE'\n | 'ADAPTER_WEBSERVER_UPGRADE',\n ]\n )[0],\n ),\n );\n } else if (name === 'getAdapterName') {\n promiseOne = Promise.resolve('admin');\n } else if (name === 'decrypt') {\n if (this.secret) {\n promiseOne = Promise.resolve(this.adapter.decrypt(this.secret, (args as [string])[0]));\n } else {\n promiseOne = this.adapter.getForeignObjectAsync(\n 'system.config',\n (err: Error | null | undefined, obj: ioBroker.SystemConfigObject): string => {\n if (obj?.native?.secret) {\n this.secret = obj.native.secret;\n return this.adapter.decrypt(this.secret, (args as [string])[0]);\n }\n this.adapter.log.error(`No system.config found: ${err}`);\n throw new Error('No system.config found');\n },\n );\n }\n } else if (name === 'encrypt') {\n if (this.secret) {\n promiseOne = Promise.resolve(this.adapter.encrypt(this.secret, (args as [string])[0]));\n } else {\n promiseOne = this.adapter.getForeignObjectAsync(\n 'system.config',\n (err: Error | null | undefined, obj: ioBroker.SystemConfigObject): string => {\n if (obj?.native?.secret) {\n this.secret = obj.native.secret;\n return this.adapter.encrypt(this.secret, (args as [string])[0]);\n }\n this.adapter.log.error(`No system.config found: ${err}`);\n throw new Error('No system.config found');\n },\n );\n }\n } else if (name === 'getIsEasyModeStrict') {\n promiseOne = AdminSocket.getIsEasyModeStrict(this.adapter, this.adminObj);\n } else if (name === 'getAdapters') {\n promiseOne = AdminSocket.getAdapters(this.adapter, (args as [string])[0]);\n } else if (name === 'updateLicenses') {\n promiseOne = AdminSocket.updateLicenses(\n this.adapter,\n (args as [admin: string, password: string])[0],\n (args as [admin: string, password: string])[1],\n this.adminObj,\n );\n } else if (name === 'getCompactInstances') {\n promiseOne = AdminSocket.getCompactInstances(this.adapter);\n } else if (name === 'getCompactSystemRepositories') {\n promiseOne = AdminSocket.getCompactSystemRepositories(this.adapter);\n } else if (name === 'getCompactAdapters') {\n promiseOne = AdminSocket.getCompactAdapters(this.adapter);\n } else if (name === 'getCompactInstalled') {\n promiseResult = AdminSocket.getCompactInstalled(\n this.adapter,\n (args as [hostName: string])[0] || this.adminObj?.common.host || this.adapter.common!.host,\n ).then(data => ({ sid: message.sid, d: [_type, id, name, [data]] }));\n } else if (name === 'getCompactSystemConfig') {\n promiseOne = AdminSocket.getCompactSystemConfig(this.adapter);\n } else if (name === 'getCompactRepository') {\n promiseResult = AdminSocket.getCompactRepository(\n this.adapter,\n (args as [hostName: string])[0] || this.adminObj?.common.host || this.adapter.common!.host,\n ).then(data => ({ sid: message.sid, d: [_type, id, name, [data]] }));\n } else if (name === 'getCompactHosts') {\n promiseOne = AdminSocket.getCompactHosts(this.adapter);\n } else if (name === 'readLogs') {\n promiseOne = AdminSocket.readLogs(\n this.adapter,\n (args as [hostName: string])[0] || this.adminObj?.common.host || this.adapter.common!.host,\n );\n } else if (name === 'eventsThreshold') {\n promiseOne = Promise.resolve(NONE);\n } else if (name === 'getRatings') {\n promiseOne = AdminSocket.getRatings(\n this.adapter,\n (args as [forceUpdate?: boolean, autoUpdate?: boolean])[0],\n (args as [forceUpdate?: boolean, autoUpdate?: boolean])[1],\n );\n } else if (name === 'getUserPermissions') {\n this.adapter.log.error(`[REMOTE] getUserPermissions not implemented!!!!!!!!!!!!!!!!!!!!!`);\n } else if (name === 'listPermissions') {\n promiseResult = AdminSocket.listPermissions(this.adapter)\n .then(commandsPermissions =>\n this._sendResponse(message.sid, _type, id, name, [commandsPermissions]),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'sendToHost') {\n const [host, command, msg] = args as [host: string, command: string, message: any];\n this.adapter.log.debug(`[REMOTE] SEND_TO_HOST: ${command}`);\n // check if the host is alive\n promiseResult = AdminSocket.sendToHost(this.adapter, host, command, msg)\n .then(data => this._sendResponse(message.sid, _type, id, name, [data], message.wu, message.ru))\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'sendTo') {\n const [adapterInstance, command, message] = args as [instance: string, command: string, message: any];\n promiseResult = AdminSocket.sendTo(this.adapter, adapterInstance, command, message)\n .then(data => this._sendResponse(message.sid, _type, id, name, [data], message.wu, message.ru))\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n } else if (name === 'getAllObjects') {\n promiseOne = AdminSocket.getAllObjects(this.adapter);\n }\n\n // MESSAGE is the only one-way message and no answer is expected\n if (_type === MESSAGE_TYPES.MESSAGE || _type === MESSAGE_TYPES.COMBINED_MESSAGE) {\n promiseResult = promiseOne ? promiseOne.then(() => NONE) : Promise.resolve(NONE);\n } else if (!promiseResult && promiseOne) {\n promiseResult = promiseOne\n .then(result =>\n this._sendResponse(message.sid, _type, id, name, [null, result], message.wu, message.ru),\n )\n .catch(error => ({ sid: message.sid, d: [_type, id, name, [error]] }) as SOCKET_MESSAGE);\n }\n\n if (!promiseResult) {\n this.adapter.log.warn(`[REMOTE] Received unknown command: ${name}`);\n promiseResult = Promise.resolve({ sid: message.sid, d: [_type, id, name, ['Unknown command']] });\n }\n\n return promiseResult.then(result => {\n if (result !== NONE && result.d && result.d[0] !== MESSAGE_TYPES.WAIT) {\n setImmediate(\n async (_result, _message) => await this._sendEvent(_result, _message),\n result,\n message,\n );\n }\n\n return NONE;\n });\n }\n return Promise.reject(new Error('Null message'));\n }\n}\n"]}
|