@iobroker/adapter-react-v5 3.1.33 → 3.1.35
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/Components/404.js +0 -23
- package/Components/404.js.map +1 -1
- package/Components/ColorPicker.js +6 -37
- package/Components/ColorPicker.js.map +1 -1
- package/Components/ComplexCron.js +10 -84
- package/Components/ComplexCron.js.map +1 -1
- package/Components/CustomModal.js +29 -54
- package/Components/CustomModal.js.map +1 -1
- package/Components/FileBrowser.js +15 -265
- package/Components/FileBrowser.js.map +1 -1
- package/Components/FileViewer.js +7 -68
- package/Components/FileViewer.js.map +1 -1
- package/Components/Icon.d.ts +1 -1
- package/Components/Icon.js +2 -42
- package/Components/Icon.js.map +1 -1
- package/Components/IconPicker.js +6 -28
- package/Components/IconPicker.js.map +1 -1
- package/Components/IconSelector.js +3 -55
- package/Components/IconSelector.js.map +1 -1
- package/Components/Image.js +1 -38
- package/Components/Image.js.map +1 -1
- package/Components/JsonConfigComponent/ChipInput.js +66 -197
- package/Components/JsonConfigComponent/ChipInput.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigAlive.js +0 -31
- package/Components/JsonConfigComponent/ConfigAlive.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigAutocomplete.js +6 -39
- package/Components/JsonConfigComponent/ConfigAutocomplete.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigAutocompleteSendTo.js +6 -52
- package/Components/JsonConfigComponent/ConfigAutocompleteSendTo.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCRON.js +5 -39
- package/Components/JsonConfigComponent/ConfigCRON.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCertificateSelect.js +4 -42
- package/Components/JsonConfigComponent/ConfigCertificateSelect.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCheckbox.js +0 -28
- package/Components/JsonConfigComponent/ConfigCheckbox.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigChip.js +4 -33
- package/Components/JsonConfigComponent/ConfigChip.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigColor.js +0 -34
- package/Components/JsonConfigComponent/ConfigColor.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCoordinates.js +0 -33
- package/Components/JsonConfigComponent/ConfigCoordinates.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCustom.js +14 -73
- package/Components/JsonConfigComponent/ConfigCustom.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigDatePicker.js +0 -25
- package/Components/JsonConfigComponent/ConfigDatePicker.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigFile.js +0 -46
- package/Components/JsonConfigComponent/ConfigFile.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigFileSelector.js +7 -126
- package/Components/JsonConfigComponent/ConfigFileSelector.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigFunc.js +0 -34
- package/Components/JsonConfigComponent/ConfigFunc.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigGeneric.js +15 -110
- package/Components/JsonConfigComponent/ConfigGeneric.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigIP.js +2 -35
- package/Components/JsonConfigComponent/ConfigIP.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigImageUpload.js +4 -44
- package/Components/JsonConfigComponent/ConfigImageUpload.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigInstanceSelect.js +1 -59
- package/Components/JsonConfigComponent/ConfigInstanceSelect.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigJsonEditor.js +7 -40
- package/Components/JsonConfigComponent/ConfigJsonEditor.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigLanguage.js +2 -42
- package/Components/JsonConfigComponent/ConfigLanguage.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigNumber.js +2 -45
- package/Components/JsonConfigComponent/ConfigNumber.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigObjectId.js +6 -40
- package/Components/JsonConfigComponent/ConfigObjectId.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigPanel.js +7 -91
- package/Components/JsonConfigComponent/ConfigPanel.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigPassword.js +0 -42
- package/Components/JsonConfigComponent/ConfigPassword.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigPattern.js +0 -25
- package/Components/JsonConfigComponent/ConfigPattern.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigRoom.js +0 -34
- package/Components/JsonConfigComponent/ConfigRoom.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSelect.js +4 -34
- package/Components/JsonConfigComponent/ConfigSelect.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSelectSendTo.js +11 -67
- package/Components/JsonConfigComponent/ConfigSelectSendTo.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSendto.js +8 -91
- package/Components/JsonConfigComponent/ConfigSendto.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSetState.js +0 -55
- package/Components/JsonConfigComponent/ConfigSetState.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSlider.js +0 -28
- package/Components/JsonConfigComponent/ConfigSlider.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigStaticDivider.js +0 -21
- package/Components/JsonConfigComponent/ConfigStaticDivider.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigStaticHeader.js +0 -24
- package/Components/JsonConfigComponent/ConfigStaticHeader.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigStaticImage.js +0 -23
- package/Components/JsonConfigComponent/ConfigStaticImage.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigStaticText.js +0 -31
- package/Components/JsonConfigComponent/ConfigStaticText.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTable.js +13 -105
- package/Components/JsonConfigComponent/ConfigTable.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTabs.js +2 -35
- package/Components/JsonConfigComponent/ConfigTabs.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigText.js +0 -34
- package/Components/JsonConfigComponent/ConfigText.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTextSendTo.js +0 -37
- package/Components/JsonConfigComponent/ConfigTextSendTo.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTimePicker.js +0 -25
- package/Components/JsonConfigComponent/ConfigTimePicker.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTopic.js +0 -29
- package/Components/JsonConfigComponent/ConfigTopic.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigUser.js +2 -40
- package/Components/JsonConfigComponent/ConfigUser.js.map +1 -1
- package/Components/JsonConfigComponent/index.js +5 -81
- package/Components/JsonConfigComponent/index.js.map +1 -1
- package/Components/Loader.js +2 -20
- package/Components/Loader.js.map +1 -1
- package/Components/Loaders/PT.js +2 -20
- package/Components/Loaders/PT.js.map +1 -1
- package/Components/Loaders/Vendor.js +2 -21
- package/Components/Loaders/Vendor.js.map +1 -1
- package/Components/Logo.js +6 -39
- package/Components/Logo.js.map +1 -1
- package/Components/MDUtils.js +3 -27
- package/Components/MDUtils.js.map +1 -1
- package/Components/ObjectBrowser.d.ts +1 -1
- package/Components/ObjectBrowser.js +206 -794
- package/Components/ObjectBrowser.js.map +1 -1
- package/Components/Router.js +7 -31
- package/Components/Router.js.map +1 -1
- package/Components/SaveCloseButtons.js +2 -32
- package/Components/SaveCloseButtons.js.map +1 -1
- package/Components/Schedule.js +29 -251
- package/Components/Schedule.js.map +1 -1
- package/Components/SelectWithIcon.d.ts +1 -1
- package/Components/SelectWithIcon.js +0 -48
- package/Components/SelectWithIcon.js.map +1 -1
- package/Components/SimpleCron/cron2text.js +45 -91
- package/Components/SimpleCron/cron2text.js.map +1 -1
- package/Components/SimpleCron/cronText.js +0 -6
- package/Components/SimpleCron/cronText.js.map +1 -1
- package/Components/SimpleCron/index.js +19 -102
- package/Components/SimpleCron/index.js.map +1 -1
- package/Components/SimpleCron/jquery.cron.locale.js +44 -24
- package/Components/SimpleCron/jquery.cron.locale.js.map +1 -1
- package/Components/TabContainer.js +2 -23
- package/Components/TabContainer.js.map +1 -1
- package/Components/TabContent.js +2 -22
- package/Components/TabContent.js.map +1 -1
- package/Components/TabHeader.js +1 -17
- package/Components/TabHeader.js.map +1 -1
- package/Components/TableResize.js +6 -51
- package/Components/TableResize.js.map +1 -1
- package/Components/TextWithIcon.js +0 -20
- package/Components/TextWithIcon.js.map +1 -1
- package/Components/ToggleThemeMenu.js +5 -13
- package/Components/ToggleThemeMenu.js.map +1 -1
- package/Components/TreeTable.js +4 -121
- package/Components/TreeTable.js.map +1 -1
- package/Components/UploadImage.js +17 -60
- package/Components/UploadImage.js.map +1 -1
- package/Components/Utils.js +87 -263
- package/Components/Utils.js.map +1 -1
- package/Components/copy-to-clipboard.js +16 -38
- package/Components/copy-to-clipboard.js.map +1 -1
- package/Components/withWidth.js +2 -10
- package/Components/withWidth.js.map +1 -1
- package/Connection.d.ts +1 -0
- package/Connection.js +156 -527
- package/Connection.js.map +1 -1
- package/Dialogs/ComplexCron.js +0 -34
- package/Dialogs/ComplexCron.js.map +1 -1
- package/Dialogs/Confirm.js +1 -39
- package/Dialogs/Confirm.js.map +1 -1
- package/Dialogs/Cron.js +1 -37
- package/Dialogs/Cron.js.map +1 -1
- package/Dialogs/Error.d.ts +1 -1
- package/Dialogs/Error.js +2 -29
- package/Dialogs/Error.js.map +1 -1
- package/Dialogs/FileSelect.js +2 -36
- package/Dialogs/FileSelect.js.map +1 -1
- package/Dialogs/Message.js +2 -27
- package/Dialogs/Message.js.map +1 -1
- package/Dialogs/SelectID.d.ts +1 -1
- package/Dialogs/SelectID.js +3 -40
- package/Dialogs/SelectID.js.map +1 -1
- package/Dialogs/SimpleCron.js +1 -33
- package/Dialogs/SimpleCron.js.map +1 -1
- package/Dialogs/TextInput.js +2 -34
- package/Dialogs/TextInput.js.map +1 -1
- package/GenericApp.js +54 -150
- package/GenericApp.js.map +1 -1
- package/Prompt.js +0 -2
- package/Prompt.js.map +1 -1
- package/README.md +11 -4
- package/Theme.js +7 -22
- package/Theme.js.map +1 -1
- package/i18n.d.ts +2 -0
- package/i18n.js +14 -25
- package/i18n.js.map +1 -1
- package/icons/IconAdapter.d.ts +2 -2
- package/icons/IconAdapter.js +2 -6
- package/icons/IconAdapter.js.map +1 -1
- package/icons/IconAlias.d.ts +2 -2
- package/icons/IconAlias.js +2 -6
- package/icons/IconAlias.js.map +1 -1
- package/icons/IconChannel.d.ts +2 -2
- package/icons/IconChannel.js +2 -6
- package/icons/IconChannel.js.map +1 -1
- package/icons/IconClearFilter.d.ts +2 -2
- package/icons/IconClearFilter.js +0 -5
- package/icons/IconClearFilter.js.map +1 -1
- package/icons/IconClosed.d.ts +2 -2
- package/icons/IconClosed.js +0 -5
- package/icons/IconClosed.js.map +1 -1
- package/icons/IconCopy.d.ts +2 -2
- package/icons/IconCopy.js +0 -5
- package/icons/IconCopy.js.map +1 -1
- package/icons/IconDevice.d.ts +2 -2
- package/icons/IconDevice.js +0 -5
- package/icons/IconDevice.js.map +1 -1
- package/icons/IconDocument.d.ts +2 -2
- package/icons/IconDocument.js +0 -5
- package/icons/IconDocument.js.map +1 -1
- package/icons/IconDocumentReadOnly.d.ts +2 -2
- package/icons/IconDocumentReadOnly.js +0 -5
- package/icons/IconDocumentReadOnly.js.map +1 -1
- package/icons/IconExpert.d.ts +2 -2
- package/icons/IconExpert.js +0 -5
- package/icons/IconExpert.js.map +1 -1
- package/icons/IconFx.d.ts +2 -2
- package/icons/IconFx.js +0 -5
- package/icons/IconFx.js.map +1 -1
- package/icons/IconInstance.d.ts +2 -2
- package/icons/IconInstance.js +0 -5
- package/icons/IconInstance.js.map +1 -1
- package/icons/IconLogout.d.ts +2 -2
- package/icons/IconLogout.js +0 -5
- package/icons/IconLogout.js.map +1 -1
- package/icons/IconNoIcon.d.ts +2 -2
- package/icons/IconNoIcon.js +0 -5
- package/icons/IconNoIcon.js.map +1 -1
- package/icons/IconOpen.d.ts +2 -2
- package/icons/IconOpen.js +0 -5
- package/icons/IconOpen.js.map +1 -1
- package/icons/IconState.d.ts +2 -2
- package/icons/IconState.js +0 -6
- package/icons/IconState.js.map +1 -1
- package/package.json +15 -15
package/Connection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Connection.js","names":["PROGRESS","CONNECTING","CONNECTED","OBJECTS_LOADED","READY","PERMISSION_ERROR","NOT_CONNECTED","TIMEOUT_FOR_ADMIN4","ERRORS","fixAdminUI","obj","common","adminUI","noConfig","config","jsonConfig","materialize","jsonCustom","custom","supportCustoms","materializeTab","adminTab","tab","console","debug","_id","replace","JSON","stringify","Connection","props","protocol","window","location","host","hostname","autoSubscribes","autoSubscribeLog","port","isWeb","ioTimeout","Math","max","cmdTimeout","doNotLoadAllObjects","undefined","doNotLoadACL","states","objects","acl","firstConnect","waitForRestart","systemLang","connected","_waitForFirstConnection","Promise","resolve","_waitForFirstConnectionResolve","statesSubscribes","objectsSubscribes","onProgress","onError","err","error","loaded","loadTimer","loadCounter","admin5only","onConnectionHandlers","onLogHandlers","_promises","log","text","warn","info","silly","startSocket","io","registerSocketOnLoad","scriptLoadCounter","setTimeout","alert","_socket","path","pathname","socketUrl","parts","split","includes","pos","lastIndexOf","substring","length","pop","join","endsWith","url","connect","query","name","timeout","on","noTimeout","getVersion","then","version","major","minor","patch","v","parseInt","_authTimer","onPreConnect","emit","isOk","isSecure","reload","_subscribe","forEach","cb","subscribed","authenticate","message","onLog","_err","toString","operation","type","id","objectChange","state","stateChange","onCmdStdoutHandler","onCmdStderrHandler","exitCode","onCmdExitHandler","clearTimeout","onConnect","_getUserPermissions","vendorPrefix","getCompactSystemConfig","getSystemConfig","data","systemConfig","language","navigator","userLanguage","onLanguage","getObjects","onReady","e","search","hash","binary","reg","indexOf","RegExp","cbs","push","getBinaryState","base64","Object","keys","splice","oldObj","changed","_rev","test","onObjectChange","task","hasOwnProperty","disableProgressUpdate","reject","res","STATES_LOADED","val","ack","update","isEnable","isEnabled","maintenance","parse","from","user","ts","adapter","getObjectView","items","map","instances","adapters","objs","oldId","newId","setObject","delObject","_renameGroups","newName","getGroups","groups","groupsToRename","filter","group","startsWith","find","instance","command","result","handler","_enum","startkey","endkey","_res","i","rows","value","start","end","cert","getObject","certs","certificates","c","_cert","toLowerCase","m","t","trim","linesNumber","lines","files","fileName","btoa","Uint8Array","reduce","byte","String","fromCharCode","oldName","folderName","hosts","doc","item","users","timeoutMs","args","repo","installed","cmd","cmdId","feature","features","checkFeatureSupported","typeOfDiag","pattern","options","values","stepIgnore","sessionId","password","address","ipOrHostName","ip","IPs4","family","IPs6","hardware","networkInterfaces","eth","num","encryptedText","serverName","match","webName","filename","entries","exists","category","notifications","isStrict","controller","AbortController","abort","fetch","signal","json","ratings","currentInstance","namespace","compactAdapters","compactInstances","installedCompact","getCompactSystemRepositories","repoCompact","systemConfigCommon","hostsCompact","uuid","level","adapterName","PropTypes","func"],"sources":["Connection.js"],"sourcesContent":["/**\n * Copyright 2020-2022, bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport PropTypes from 'prop-types';\n\n/** Possible progress states. */\nexport const PROGRESS = {\n /** The socket is connecting. */\n CONNECTING: 0,\n /** The socket is successfully connected. */\n CONNECTED: 1,\n /** All objects are loaded. */\n OBJECTS_LOADED: 2,\n /** The socket is ready for use. */\n READY: 3\n};\n\nconst PERMISSION_ERROR = 'permissionError';\nconst NOT_CONNECTED = 'notConnectedError';\nconst TIMEOUT_FOR_ADMIN4 = 1300;\n\nexport const ERRORS = {\n PERMISSION_ERROR,\n NOT_CONNECTED\n};\n\nfunction fixAdminUI(obj) {\n if (obj && obj.common && !obj.common.adminUI) {\n if (obj.common.noConfig) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'none';\n } else if (obj.common.jsonConfig) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'json';\n } else if (obj.common.materialize) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'materialize';\n } else {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'html';\n }\n\n if (obj.common.jsonCustom) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.custom = 'json';\n } else if (obj.common.supportCustoms) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.custom = 'json';\n }\n\n if (obj.common.materializeTab && obj.common.adminTab) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.tab = 'materialize';\n } else if (obj.common.adminTab) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.tab = 'html';\n }\n\n obj.common.adminUI && console.debug(`Please add to \"${obj._id.replace(/\\.\\d+$/, '')}\" common.adminUI=${JSON.stringify(obj.common.adminUI)}`);\n }\n return obj;\n}\n\nclass Connection {\n /**\n * @param {import('./types').ConnectionProps} props\n */\n constructor(props) {\n props = props || { protocol: window.location.protocol, host: window.location.hostname };\n this.props = props;\n\n this.autoSubscribes = this.props.autoSubscribes || [];\n this.autoSubscribeLog = this.props.autoSubscribeLog;\n\n this.props.protocol = this.props.protocol || window.location.protocol;\n this.props.host = this.props.host || window.location.hostname;\n this.props.port = this.props.port || (window.location.port === '3000' ? (Connection.isWeb() ? 8082 : 8081) : window.location.port);\n this.props.ioTimeout = Math.max(this.props.ioTimeout || 20000, 20000);\n this.props.cmdTimeout = Math.max(this.props.cmdTimeout || 5000, 5000);\n\n // breaking change. Do not load all objects by default is true\n this.doNotLoadAllObjects = this.props.doNotLoadAllObjects === undefined ? true : this.props.doNotLoadAllObjects;\n this.doNotLoadACL = this.props.doNotLoadACL === undefined ? true : this.props.doNotLoadACL;\n\n /** @type {Record<string, ioBroker.State>} */\n this.states = {};\n this.objects = null;\n this.acl = null;\n this.firstConnect = true;\n this.waitForRestart = false;\n /** @type {ioBroker.Languages} */\n this.systemLang = 'en';\n this.connected = false;\n this._waitForFirstConnection = new Promise(resolve => { this._waitForFirstConnectionResolve = resolve });\n\n /** @type {Record<string, { reg: RegExp; cbs: ioBroker.StateChangeHandler[]}>} */\n this.statesSubscribes = {}; // subscribe for states\n\n /** @type {Record<string, { reg: RegExp; cbs: import('./types').ObjectChangeHandler[]}>} */\n this.objectsSubscribes = {}; // subscribe for objects\n this.onProgress = this.props.onProgress || function () { };\n this.onError = this.props.onError || function (err) { console.error(err); };\n this.loaded = false;\n this.loadTimer = null;\n this.loadCounter = 0;\n this.admin5only = this.props.admin5only || false;\n\n /** @type {((connected: boolean) => void)[]} */\n this.onConnectionHandlers = [];\n /** @type {((message: string) => void)[]} */\n this.onLogHandlers = [];\n\n /** @type {Record<string, Promise<any>>} */\n this._promises = {};\n\n this.log.error = text => this.log(text, 'error');\n this.log.warn = text => this.log(text, 'warn');\n this.log.info = text => this.log(text, 'info');\n this.log.debug = text => this.log(text, 'debug');\n this.log.silly = text => this.log(text, 'silly');\n\n this.startSocket();\n }\n\n /**\n * Checks if this connection is running in a web adapter and not in an admin.\n * @returns {boolean} True if running in a web adapter or in a socketio adapter.\n */\n static isWeb() {\n return window.adapterName === 'material' ||\n window.adapterName === 'vis' ||\n window.adapterName === 'echarts-show' ||\n window.socketUrl !== undefined;\n }\n\n /**\n * Starts the socket.io connection.\n * @returns {void}\n */\n startSocket() {\n // if socket io is not yet loaded\n if (typeof window.io === 'undefined') {\n // if in index.html the onLoad function not defined\n if (typeof window.registerSocketOnLoad !== 'function') {\n // poll if loaded\n this.scriptLoadCounter = this.scriptLoadCounter || 0;\n this.scriptLoadCounter++;\n\n if (this.scriptLoadCounter < 30) {\n // wait till the script loaded\n setTimeout(() => this.startSocket(), 100);\n return;\n } else {\n window.alert('Cannot load socket.io.js!');\n }\n } else {\n // register on load\n window.registerSocketOnLoad(() => this.startSocket());\n }\n return;\n } else {\n // socket was initialized, do not repeat\n if (this._socket) {\n return;\n }\n }\n\n let host = this.props.host;\n let port = this.props.port;\n let protocol = this.props.protocol.replace(':', '');\n let path = window.location.pathname;\n\n if (\n window.location.hostname === 'iobroker.net' ||\n window.location.hostname === 'iobroker.pro'\n ) {\n path = '';\n } else {\n // if web adapter, socket io could be on other port or even host\n if (window.socketUrl) {\n let parts = window.socketUrl.split(':');\n host = parts[0] || host;\n port = parts[1] || port;\n if (host.includes('://')) {\n parts = host.split('://');\n protocol = parts[0];\n host = parts[1];\n }\n }\n // get current path\n const pos = path.lastIndexOf('/');\n if (pos !== -1) {\n path = path.substring(0, pos + 1);\n }\n\n if (Connection.isWeb()) {\n // remove one level, like echarts, vis, .... We have here: '/echarts/'\n const parts = path.split('/');\n if (parts.length > 2) {\n parts.pop();\n parts.pop();\n path = parts.join('/');\n if (!path.endsWith('/')) {\n path += '/';\n }\n }\n }\n }\n\n const url = port ? `${protocol}://${host}:${port}${path}` : `${protocol}://${host}${path}`;\n\n this._socket = window.io.connect(\n url,\n {\n path: path.endsWith('/') ? path + 'socket.io' : path + '/socket.io',\n query: 'ws=true',\n name: this.props.name,\n timeout: this.props.ioTimeout\n }\n );\n\n this._socket.on('connect', noTimeout => {\n // If the user is not admin it takes some time to install the handlers, because all rights must be checked\n if (noTimeout !== true) {\n setTimeout(() =>\n this.getVersion()\n .then(info => {\n const [major, minor, patch] = info.version.split('.');\n const v = parseInt(major, 10) * 10000 + parseInt(minor, 10) * 100 + parseInt(patch, 10);\n if (v < 40102) {\n this._authTimer = null;\n // possible this is old version of admin\n this.onPreConnect(false, false);\n } else {\n this._socket.emit('authenticate', (isOk, isSecure) => this.onPreConnect(isOk, isSecure));\n }\n }), 500);\n } else {\n // iobroker websocket waits, till all handlers are installed\n this._socket.emit('authenticate', (isOk, isSecure) => this.onPreConnect(isOk, isSecure));\n }\n });\n\n this._socket.on('reconnect', () => {\n this.onProgress(PROGRESS.READY);\n this.connected = true;\n\n if (this.waitForRestart) {\n window.location.reload(false);\n } else {\n this._subscribe(true);\n this.onConnectionHandlers.forEach(cb => cb(true));\n }\n });\n\n this._socket.on('disconnect', () => {\n this.connected = false;\n this.subscribed = false;\n this.onProgress(PROGRESS.CONNECTING);\n this.onConnectionHandlers.forEach(cb => cb(false));\n });\n\n this._socket.on('reauthenticate', () =>\n this.authenticate());\n\n this._socket.on('log', message => {\n this.props.onLog && this.props.onLog(message);\n this.onLogHandlers.forEach(cb => cb(message));\n });\n\n this._socket.on('error', err => {\n let _err = err || '';\n if (typeof _err.toString !== 'function') {\n _err = JSON.stringify(_err);\n console.error(`Received strange error: ${_err}`);\n }\n _err = _err.toString();\n if (_err.includes('User not authorized')) {\n this.authenticate();\n } else {\n window.alert(`Socket Error: ${err}`);\n }\n });\n\n this._socket.on('connect_error', err =>\n console.error(`Connect error: ${err}`));\n\n this._socket.on('permissionError', err =>\n this.onError({ message: 'no permission', operation: err.operation, type: err.type, id: (err.id || '') }));\n\n this._socket.on('objectChange', (id, obj) =>\n setTimeout(() => this.objectChange(id, obj), 0));\n\n this._socket.on('stateChange', (id, state) =>\n setTimeout(() => this.stateChange(id, state), 0));\n\n this._socket.on('cmdStdout', (id, text) =>\n this.onCmdStdoutHandler && this.onCmdStdoutHandler(id, text));\n\n this._socket.on('cmdStderr', (id, text) =>\n this.onCmdStderrHandler && this.onCmdStderrHandler(id, text));\n\n this._socket.on('cmdExit', (id, exitCode) =>\n this.onCmdExitHandler && this.onCmdExitHandler(id, exitCode));\n }\n\n /**\n * Called internally.\n * @private\n * @param {boolean} isOk\n * @param {boolean} isSecure\n */\n onPreConnect(isOk, isSecure) {\n if (this._authTimer) {\n clearTimeout(this._authTimer);\n this._authTimer = null;\n }\n\n this.connected = true;\n this.isSecure = isSecure;\n\n if (this.waitForRestart) {\n window.location.reload(false);\n } else {\n if (this.firstConnect) {\n // retry strategy\n this.loadTimer = setTimeout(() => {\n this.loadTimer = null;\n this.loadCounter++;\n if (this.loadCounter < 10) {\n this.onConnect();\n }\n }, 1000);\n\n if (!this.loaded) {\n this.onConnect();\n }\n } else {\n this.onProgress(PROGRESS.READY);\n }\n\n this._subscribe(true);\n this.onConnectionHandlers.forEach(cb => cb(true));\n }\n\n if (this._waitForFirstConnectionResolve) {\n this._waitForFirstConnectionResolve();\n this._waitForFirstConnectionResolve = null;\n }\n }\n\n /**\n * Checks if the socket is connected.\n * @returns {boolean} true if connected.\n */\n isConnected() {\n return this.connected;\n }\n\n /**\n * Checks if the socket is connected.\n * @returns {Promise<void>} Promise resolves if once connected.\n */\n waitForFirstConnection() {\n return this._waitForFirstConnection;\n }\n\n /**\n * Called internally.\n * @private\n */\n _getUserPermissions(cb) {\n if (this.doNotLoadACL) {\n return cb && cb();\n } else {\n this._socket.emit('getUserPermissions', cb);\n }\n }\n\n /**\n * Called internally.\n * @private\n */\n onConnect() {\n this._getUserPermissions((err, acl) => {\n if (err) {\n return this.onError('Cannot read user permissions: ' + err);\n } else\n if (!this.doNotLoadACL) {\n if (this.loaded) {\n return;\n }\n this.loaded = true;\n clearTimeout(this.loadTimer);\n this.loadTimer = null;\n\n this.onProgress(PROGRESS.CONNECTED);\n this.firstConnect = false;\n\n this.acl = acl;\n }\n\n // Read system configuration\n return (this.admin5only && !window.vendorPrefix ? this.getCompactSystemConfig() : this.getSystemConfig())\n .then(data => {\n if (this.doNotLoadACL) {\n if (this.loaded) {\n return undefined;\n }\n this.loaded = true;\n clearTimeout(this.loadTimer);\n this.loadTimer = null;\n\n this.onProgress(PROGRESS.CONNECTED);\n this.firstConnect = false;\n }\n\n this.systemConfig = data;\n if (this.systemConfig && this.systemConfig.common) {\n this.systemLang = this.systemConfig.common.language;\n } else {\n this.systemLang = window.navigator.userLanguage || window.navigator.language;\n\n if (this.systemLang !== 'en' && this.systemLang !== 'de' && this.systemLang !== 'ru') {\n this.systemConfig.common.language = 'en';\n this.systemLang = 'en';\n }\n }\n\n this.props.onLanguage && this.props.onLanguage(this.systemLang);\n\n if (!this.doNotLoadAllObjects) {\n return this.getObjects()\n .then(() => {\n this.onProgress(PROGRESS.READY);\n this.props.onReady && this.props.onReady(this.objects);\n });\n } else {\n this.objects = this.admin5only ? {} : { 'system.config': data };\n this.onProgress(PROGRESS.READY);\n this.props.onReady && this.props.onReady(this.objects);\n }\n return undefined;\n })\n .catch(e => this.onError('Cannot read system config: ' + e));\n });\n }\n\n /**\n * Called internally.\n * @private\n */\n authenticate() {\n if (window.location.search.includes('&href=')) {\n window.location = `${window.location.protocol}//${window.location.host}${window.location.pathname}${window.location.search}${window.location.hash}`;\n } else {\n window.location = `${window.location.protocol}//${window.location.host}${window.location.pathname}?login&href=${window.location.search}${window.location.hash}`;\n }\n }\n\n /**\n * Subscribe to changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n /**\n * Subscribe to changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {boolean} binary Set to true if the given state is binary and requires Base64 decoding.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n subscribeState(id, binary, cb) {\n if (typeof binary === 'function') {\n cb = binary;\n binary = false;\n }\n\n if (!this.statesSubscribes[id]) {\n let reg = id\n .replace(/\\./g, '\\\\.')\n .replace(/\\*/g, '.*')\n .replace(/\\(/g, '\\\\(')\n .replace(/\\)/g, '\\\\)')\n .replace(/\\+/g, '\\\\+')\n .replace(/\\[/g, '\\\\[');\n\n if (reg.indexOf('*') === -1) {\n reg += '$';\n }\n this.statesSubscribes[id] = { reg: new RegExp(reg), cbs: [] };\n this.statesSubscribes[id].cbs.push(cb);\n if (this.connected) {\n this._socket.emit('subscribe', id);\n }\n } else {\n !this.statesSubscribes[id].cbs.includes(cb) && this.statesSubscribes[id].cbs.push(cb);\n }\n if (typeof cb === 'function' && this.connected) {\n if (binary) {\n this.getBinaryState(id)\n .then(base64 => cb(id, base64))\n .catch(e => console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(e)}`));\n } else {\n if (Connection.isWeb()) {\n this._socket.emit('getStates', id, (err, states) => {\n err && console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(err)}`);\n states && Object.keys(states).forEach(id => cb(id, states[id]));\n });\n } else {\n this._socket.emit('getForeignStates', id, (err, states) => {\n err && console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(err)}`);\n states && Object.keys(states).forEach(id => cb(id, states[id]));\n });\n }\n }\n }\n }\n\n /**\n * Unsubscribes all callbacks from changes of the given state.\n * @param {string} id The ioBroker state ID.\n */\n /**\n * Unsubscribes the given callback from changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n unsubscribeState(id, cb) {\n if (this.statesSubscribes[id]) {\n if (cb) {\n const pos = this.statesSubscribes[id].cbs.indexOf(cb);\n pos !== -1 && this.statesSubscribes[id].cbs.splice(pos, 1);\n } else {\n this.statesSubscribes[id].cbs = [];\n }\n\n if (!this.statesSubscribes[id].cbs || !this.statesSubscribes[id].cbs.length) {\n delete this.statesSubscribes[id];\n this.connected && this._socket.emit('unsubscribe', id);\n }\n }\n }\n\n /**\n * Subscribe to changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @param {import('./types').ObjectChangeHandler} cb The callback.\n * @returns {Promise<void>}\n */\n subscribeObject(id, cb) {\n if (!this.objectsSubscribes[id]) {\n let reg = id.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*');\n if (!reg.includes('*')) {\n reg += '$';\n }\n this.objectsSubscribes[id] = { reg: new RegExp(reg), cbs: [] };\n this.objectsSubscribes[id].cbs.push(cb);\n this.connected && this._socket.emit('subscribeObjects', id);\n } else {\n !this.objectsSubscribes[id].cbs.includes(cb) && this.objectsSubscribes[id].cbs.push(cb);\n }\n return Promise.resolve();\n }\n\n /**\n * Unsubscribes all callbacks from changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @returns {Promise<void>}\n */\n /**\n * Unsubscribes the given callback from changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @param {import('./types').ObjectChangeHandler} cb The callback.\n * @returns {Promise<void>}\n */\n unsubscribeObject(id, cb) {\n if (this.objectsSubscribes[id]) {\n if (cb) {\n const pos = this.objectsSubscribes[id].cbs.indexOf(cb);\n pos !== -1 && this.objectsSubscribes[id].cbs.splice(pos, 1);\n } else {\n this.objectsSubscribes[id].cbs = [];\n }\n\n if (this.connected && (!this.objectsSubscribes[id].cbs || !this.objectsSubscribes[id].cbs.length)) {\n delete this.objectsSubscribes[id];\n this.connected && this._socket.emit('unsubscribeObjects', id);\n }\n }\n return Promise.resolve();\n }\n\n /**\n * Called internally.\n * @private\n * @param {string} id\n * @param {ioBroker.Object | null | undefined} obj\n */\n objectChange(id, obj) {\n // update main.objects cache\n if (!this.objects) {\n return;\n }\n\n /** @type {import(\"./types\").OldObject} */\n let oldObj;\n\n let changed = false;\n if (obj) {\n if (obj._rev && this.objects[id]) {\n this.objects[id]._rev = obj._rev;\n }\n\n if (this.objects[id]) {\n oldObj = { _id: id, type: this.objects[id].type };\n }\n\n if (!this.objects[id] || JSON.stringify(this.objects[id]) !== JSON.stringify(obj)) {\n this.objects[id] = obj;\n changed = true;\n }\n } else if (this.objects[id]) {\n oldObj = { _id: id, type: this.objects[id].type };\n delete this.objects[id];\n changed = true;\n }\n\n Object.keys(this.objectsSubscribes).forEach(_id => {\n if (_id === id || this.objectsSubscribes[_id].reg.test(id)) {\n //@ts-ignore\n this.objectsSubscribes[_id].cbs.forEach(cb => cb(id, obj, oldObj));\n }\n });\n\n if (changed && this.props.onObjectChange) {\n this.props.onObjectChange(id, obj);\n }\n }\n\n /**\n * Called internally.\n * @private\n * @param {string} id\n * @param {ioBroker.State | null | undefined} state\n */\n stateChange(id, state) {\n for (const task in this.statesSubscribes) {\n if (this.statesSubscribes.hasOwnProperty(task) && this.statesSubscribes[task].reg.test(id)) {\n this.statesSubscribes[task].cbs.forEach(cb => cb(id, state));\n }\n }\n }\n\n /**\n * Gets all states.\n * @param {boolean} disableProgressUpdate don't call onProgress() when done\n * @returns {Promise<Record<string, ioBroker.State>>}\n */\n getStates(disableProgressUpdate) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getStates', (err, res) => {\n this.states = res;\n //@ts-ignore\n !disableProgressUpdate && this.onProgress(PROGRESS.STATES_LOADED);\n return err ? reject(err) : resolve(this.states);\n }));\n }\n\n /**\n * Gets the given state.\n * @param {string} id The state ID.\n * @returns {Promise<ioBroker.State | null | undefined>}\n */\n getState(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getState', id, (err, state) => err ? reject(err) : resolve(state)));\n }\n\n /**\n * Gets the given binary state.\n * @param {string} id The state ID.\n * @returns {Promise<Buffer | undefined>}\n */\n getBinaryState(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n // the data will come in base64\n return new Promise((resolve, reject) =>\n this._socket.emit('getBinaryState', id, (err, state) => err ? reject(err) : resolve(state)));\n }\n\n /**\n * Sets the given binary state.\n * @param {string} id The state ID.\n * @param {string} base64 The Base64 encoded binary data.\n * @returns {Promise<void>}\n */\n setBinaryState(id, base64) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n // the data will come in base64\n return new Promise((resolve, reject) =>\n this._socket.emit('setBinaryState', id, base64, err => err ? reject(err) : resolve()));\n }\n\n /**\n * Sets the given state value.\n * @param {string} id The state ID.\n * @param {string | number | boolean | ioBroker.State | ioBroker.SettableState | null} val The state value.\n * @param {boolean | null} ack Acknowledge flag\n * @returns {Promise<void>}\n */\n setState(id, val, ack) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (typeof ack === 'boolean') {\n val = { val, ack };\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('setState', id, val, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Gets all objects.\n * @param {(objects?: Record<string, ioBroker.Object>) => void} update Callback that is executed when all objects are retrieved.\n * @returns {void}\n */\n /**\n * Gets all objects.\n * @param {boolean} update Set to true to retrieve all objects from the server (instead of using the local cache).\n * @param {boolean} disableProgressUpdate don't call onProgress() when done\n * @returns {Promise<Record<string, ioBroker.Object>> | undefined}\n */\n getObjects(update, disableProgressUpdate) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n } else {\n return new Promise((resolve, reject) => {\n if (!update && this.objects) {\n return resolve(this.objects);\n }\n\n this._socket.emit(Connection.isWeb() ? 'getObjects' : 'getAllObjects', (err, res) => {\n this.objects = res;\n disableProgressUpdate && this.onProgress(PROGRESS.OBJECTS_LOADED);\n err ? reject(err) : resolve(this.objects);\n });\n });\n }\n }\n\n /**\n * Called internally.\n * @private\n * @param {boolean} isEnable\n */\n _subscribe(isEnable) {\n if (isEnable && !this.subscribed) {\n this.subscribed = true;\n this.autoSubscribes.forEach(id => this._socket.emit('subscribeObjects', id));\n // re subscribe objects\n Object.keys(this.objectsSubscribes).forEach(id => this._socket.emit('subscribeObjects', id));\n // re-subscribe logs\n this.autoSubscribeLog && this._socket.emit('requireLog', true);\n // re subscribe states\n Object.keys(this.statesSubscribes).forEach(id => this._socket.emit('subscribe', id));\n } else if (!isEnable && this.subscribed) {\n this.subscribed = false;\n // un-subscribe objects\n this.autoSubscribes.forEach(id => this._socket.emit('unsubscribeObjects', id));\n Object.keys(this.objectsSubscribes).forEach(id => this._socket.emit('unsubscribeObjects', id));\n // un-subscribe logs\n this.autoSubscribeLog && this._socket.emit('requireLog', false);\n\n // un-subscribe states\n Object.keys(this.statesSubscribes).forEach(id => this._socket.emit('unsubscribe', id));\n }\n }\n\n /**\n * Requests log updates.\n * @param {boolean} isEnabled Set to true to get logs.\n * @returns {Promise<void>}\n */\n requireLog(isEnabled) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('requireLog', isEnabled, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Deletes the given object.\n * @param {string} id The object ID.\n * @param {boolean} maintenance Force deletion of non conform IDs.\n * @returns {Promise<void>}\n */\n delObject(id, maintenance) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('delObject', id, { maintenance: !!maintenance }, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Deletes the given object and all its children.\n * @param {string} id The object ID.\n * @param {boolean} maintenance Force deletion of non conform IDs.\n * @returns {Promise<void>}\n */\n delObjects(id, maintenance) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('delObjects', id, {maintenance: !!maintenance}, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Sets the object.\n * @param {string} id The object ID.\n * @param {ioBroker.SettableObject} obj The object.\n * @returns {Promise<void>}\n */\n setObject(id, obj) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!obj) {\n return Promise.reject('Null object is not allowed');\n }\n\n obj = JSON.parse(JSON.stringify(obj));\n\n if (obj.hasOwnProperty('from')) {\n delete obj.from;\n }\n if (obj.hasOwnProperty('user')) {\n delete obj.user;\n }\n if (obj.hasOwnProperty('ts')) {\n delete obj.ts;\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('setObject', id, obj, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Gets the object with the given id from the server.\n * @param {string} id The object ID.\n * @returns {ioBroker.GetObjectPromise} The object.\n */\n getObject(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getObject', id, (err, obj) =>\n err ? reject(err) : resolve(obj)));\n }\n\n /**\n * Get all adapter instances.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n /**\n * Get all instances of the given adapter.\n * @param {string} adapter The name of the adapter.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getAdapterInstances(adapter, update) {\n if (typeof adapter === 'boolean') {\n update = adapter;\n adapter = '';\n }\n adapter = adapter || '';\n\n if (!update && this._promises['instances_' + adapter]) {\n return this._promises['instances_' + adapter];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['instances_' + adapter] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n timeout = null;\n this.getObjectView(\n `system.adapter.${adapter ? adapter + '.' : ''}`,\n `system.adapter.${adapter ? adapter + '.' : ''}\\u9999`,\n 'instance'\n )\n .then(items => resolve(Object.keys(items).map(id => fixAdminUI(items[id]))))\n .catch(e => reject(e));\n }, TIMEOUT_FOR_ADMIN4);\n\n this._socket.emit('getAdapterInstances', adapter, (err, instances) => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n return err ? reject(err) : resolve(instances);\n }\n });\n });\n\n return this._promises['instances_' + adapter];\n }\n\n /**\n * Get all adapters.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n /**\n * Get adapters with the given name.\n * @param {string} adapter The name of the adapter.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getAdapters(adapter, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (typeof adapter === 'boolean') {\n update = adapter;\n adapter = '';\n }\n\n adapter = adapter || '';\n\n if (!update && this._promises['adapter_' + adapter]) {\n return this._promises['adapter_' + adapter];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['adapter_' + adapter] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n timeout = null;\n this.getObjectView(\n `system.adapter.${adapter}.`,\n `system.adapter.${adapter}.\\u9999`,\n 'adapter'\n )\n .then(items => resolve(Object.keys(items).map(id => fixAdminUI(items[id]))))\n .catch(e => reject(e));\n }, TIMEOUT_FOR_ADMIN4);\n\n this._socket.emit('getAdapters', adapter, (err, adapters) => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n return err ? reject(err) : resolve(adapters);\n }\n });\n });\n\n return this._promises['adapter_' + adapter];\n }\n\n /**\n * Called internally.\n * @private\n * @param {any[]} objs\n * @param {(err?: any) => void} cb\n */\n _renameGroups(objs, cb) {\n if (!objs || !objs.length) {\n cb && cb();\n } else {\n let obj = objs.pop();\n let oldId = obj._id;\n obj._id = obj.newId;\n delete obj.newId;\n\n this.setObject(obj._id, obj)\n .then(() => this.delObject(oldId))\n .then(() => setTimeout(() => this._renameGroups(objs, cb), 0))\n .catch(err => cb && cb(err));\n }\n }\n\n /**\n * Rename a group.\n * @param {string} id The id.\n * @param {string} newId The new id.\n * @param {string | { [lang in ioBroker.Languages]?: string; }} newName The new name.\n */\n renameGroup(id, newId, newName) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n return this.getGroups(true)\n .then(groups => {\n if (groups.length) {\n // find all elements\n const groupsToRename = groups\n .filter(group => group._id.startsWith(id + '.'));\n\n groupsToRename.forEach(group => group.newId = newId + group._id.substring(id.length));\n\n return new Promise((resolve, reject) =>\n this._renameGroups(groupsToRename, err => err ? reject(err) : resolve()))\n .then(() => {\n const obj = groups.find(group => group._id === id);\n\n if (obj) {\n obj._id = newId;\n if (newName !== undefined) {\n obj.common = obj.common || {};\n obj.common.name = newName;\n }\n\n return this.setObject(obj._id, obj)\n .then(() => this.delObject(id));\n }\n });\n }\n });\n }\n\n /**\n * Sends a message to a specific instance or all instances of some specific adapter.\n * @param {string} instance The instance to send this message to.\n * @param {string} [command] Command name of the target instance.\n * @param {ioBroker.MessagePayload} [data] The message data to send.\n * @returns {Promise<ioBroker.Message | undefined>}\n */\n sendTo(instance, command, data) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendTo', instance, command, data, result =>\n resolve(result)));\n }\n\n /**\n * Extend an object and create it if it might not exist.\n * @param {string} id The id.\n * @param {ioBroker.PartialObject} obj The object.\n */\n extendObject(id, obj) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n obj = JSON.parse(JSON.stringify(obj));\n\n if (obj.hasOwnProperty('from')) {\n delete obj.from;\n }\n if (obj.hasOwnProperty('user')) {\n delete obj.user;\n }\n if (obj.hasOwnProperty('ts')) {\n delete obj.ts;\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('extendObject', id, obj, err => err ? reject(err) : resolve()));\n }\n\n /**\n * Register a handler for log messages.\n * @param {(message: string) => void} handler The handler.\n */\n registerLogHandler(handler) {\n !this.onLogHandlers.includes(handler) && this.onLogHandlers.push(handler);\n }\n\n /**\n * Unregister a handler for log messages.\n * @param {(message: string) => void} handler The handler.\n */\n unregisterLogHandler(handler) {\n const pos = this.onLogHandlers.indexOf(handler);\n pos !== -1 && this.onLogHandlers.splice(pos, 1);\n }\n\n /**\n * Register a handler for the connection state.\n * @param {(connected: boolean) => void} handler The handler.\n */\n registerConnectionHandler(handler) {\n !this.onConnectionHandlers.includes(handler) && this.onConnectionHandlers.push(handler);\n }\n\n /**\n * Unregister a handler for the connection state.\n * @param {(connected: boolean) => void} handler The handler.\n */\n unregisterConnectionHandler(handler) {\n const pos = this.onConnectionHandlers.indexOf(handler);\n pos !== -1 && this.onConnectionHandlers.splice(pos, 1);\n }\n\n /**\n * Set the handler for standard output of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n registerCmdStdoutHandler(handler) {\n this.onCmdStdoutHandler = handler;\n }\n\n /**\n * Unset the handler for standard output of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n unregisterCmdStdoutHandler(handler) {\n this.onCmdStdoutHandler = null;\n }\n\n /**\n * Set the handler for standard error of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n registerCmdStderrHandler(handler) {\n this.onCmdStderrHandler = handler;\n }\n\n /**\n * Unset the handler for standard error of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n unregisterCmdStderrHandler(handler) {\n this.onCmdStderrHandler = null;\n }\n\n /**\n * Set the handler for exit of a command.\n * @param {(id: string, exitCode: number) => void} handler The handler.\n */\n registerCmdExitHandler(handler) {\n this.onCmdExitHandler = handler;\n }\n\n /**\n * Unset the handler for exit of a command.\n * @param {(id: string, exitCode: number) => void} handler The handler.\n */\n unregisterCmdExitHandler(handler) {\n this.onCmdExitHandler = null;\n }\n\n /**\n * Get all enums with the given name.\n * @param {string} [_enum] The name of the enum\n * @param {boolean} [update] Force update.\n * @returns {Promise<Record<string, ioBroker.Object>>}\n */\n getEnums(_enum, update) {\n if (!update && this._promises['enums_' + (_enum || 'all')]) {\n return this._promises['enums_' + (_enum || 'all')];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['enums_' + (_enum || 'all')] = new Promise((resolve, reject) => {\n this._socket.emit('getObjectView', 'system', 'enum', { startkey: 'enum.' + (_enum || ''), endkey: 'enum.' + (_enum ? (_enum + '.') : '') + '\\u9999' }, (err, res) => {\n if (!err && res) {\n const _res = {};\n for (let i = 0; i < res.rows.length; i++) {\n if (_enum && res.rows[i].id === 'enum.' + _enum) {\n continue;\n }\n _res[res.rows[i].id] = res.rows[i].value;\n }\n resolve(_res);\n } else {\n reject(err);\n }\n });\n });\n\n return this._promises['enums_' + (_enum || 'all')];\n }\n\n /**\n * Query a predefined object view.\n * @param {string} start The start ID.\n * @param {string} end The end ID.\n * @param {string} type The type of object.\n * @returns {Promise<Record<string, ioBroker.Object>>}\n */\n getObjectView(start, end, type) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n start = start || '';\n end = end || '\\u9999';\n\n return new Promise((resolve, reject) => {\n this._socket.emit('getObjectView', 'system', type, { startkey: start, endkey: end }, (err, res) => {\n if (!err) {\n const _res = {};\n if (res && res.rows) {\n for (let i = 0; i < res.rows.length; i++) {\n _res[res.rows[i].id] = res.rows[i].value;\n }\n }\n resolve(_res);\n } else {\n reject(err);\n }\n });\n });\n }\n\n /**\n * Get the stored certificates.\n * @param {boolean} [update] Force update.\n * @returns {Promise<{name: string; type: 'public' | 'private' | 'chained'}[]>}\n */\n getCertificates(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (this._promises.cert && !update) {\n return this._promises.cert;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.cert = this.getObject('system.certificates')\n .then(res => {\n const certs = [];\n if (res && res.native && res.native.certificates) {\n Object.keys(res.native.certificates).forEach(c => {\n const cert = res.native.certificates[c];\n if (!cert) {\n return;\n }\n const _cert = {\n name: c,\n type: ''\n };\n // If it is filename, it could be everything\n if (cert.length < 700 && (cert.indexOf('/') !== -1 || cert.indexOf('\\\\') !== -1)) {\n if (c.toLowerCase().includes('private')) {\n _cert.type = 'private';\n } else if (cert.toLowerCase().includes('private')) {\n _cert.type = 'private';\n } else if (c.toLowerCase().includes('public')) {\n _cert.type = 'public';\n } else if (cert.toLowerCase().includes('public')) {\n _cert.type = 'public';\n }\n certs.push(_cert);\n } else {\n _cert.type = (cert.substring(0, '-----BEGIN RSA PRIVATE KEY'.length) === '-----BEGIN RSA PRIVATE KEY' || cert.substring(0, '-----BEGIN PRIVATE KEY'.length) === '-----BEGIN PRIVATE KEY') ? 'private' : 'public';\n\n if (_cert.type === 'public') {\n const m = cert.split('-----END CERTIFICATE-----');\n if (m.filter(t => t.replace(/\\r\\n|\\r|\\n/, '').trim()).length > 1) {\n _cert.type = 'chained';\n }\n }\n\n certs.push(_cert);\n }\n });\n }\n return certs;\n });\n\n return this._promises.cert;\n }\n\n /**\n * Get the logs from a host (only for admin connection).\n * @param {string} host\n * @param {number} [linesNumber]\n * @returns {Promise<string[]>}\n */\n getLogs(host, linesNumber) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'getLogs', linesNumber || 200, lines =>\n resolve(lines)));\n }\n\n /**\n * Get the log files (only for admin connection).\n * @returns {Promise<string[]>}\n */\n getLogsFiles(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('readLogs', host, (err, files) =>\n err ? reject(err) : resolve(files)));\n }\n\n /**\n * Delete the logs from a host (only for admin connection).\n * @param {string} host\n * @returns {Promise<void>}\n */\n delLogs(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('sendToHost', host, 'delLogs', null, error =>\n error ? reject(error) : resolve()));\n }\n\n /**\n * Read the meta items.\n * @returns {Promise<ioBroker.Object[]>}\n */\n readMetaItems() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getObjectView', 'system', 'meta', { startkey: '', endkey: '\\u9999' }, (err, objs) =>\n err ? reject(err) : resolve(objs.rows && objs.rows.map(obj => obj.value))));\n }\n\n /**\n * Read the directory of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The directory name.\n * @returns {Promise<ioBroker.ReadDirResult[]>}\n */\n readDir(adapter, fileName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('readDir', adapter, fileName, (err, files) =>\n err ? reject(err) : resolve(files)));\n }\n\n /**\n * Read a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @param {boolean} base64 If it must be a base64 format\n * @returns {Promise<string>}\n */\n readFile(adapter, fileName, base64) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n if (!base64) {\n this._socket.emit('readFile', adapter, fileName, (err, data, type) => {\n //@ts-ignore\n err ? reject(err) : resolve({data, type});\n });\n } else {\n this._socket.emit('readFile64', adapter, fileName, base64, (err, data) =>\n err ? reject(err) : resolve(data));\n }\n });\n }\n\n /**\n * Write a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @param {Buffer | string} data The data (if it's a Buffer, it will be converted to Base64).\n * @returns {Promise<void>}\n */\n writeFile64(adapter, fileName, data) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n if (typeof data === 'string') {\n this._socket.emit('writeFile', adapter, fileName, data, err =>\n err ? reject(err) : resolve());\n } else {\n const base64 = btoa(\n new Uint8Array(data)\n .reduce((data, byte) => data + String.fromCharCode(byte), '')\n );\n\n this._socket.emit('writeFile64', adapter, fileName, base64, err =>\n err ? reject(err) : resolve());\n }\n });\n }\n\n /**\n * Rename a file or folder of an adapter.\n *\n * All files in folder will be renamed too.\n * @param {string} adapter The adapter name.\n * @param {string} oldName The file name of the file to be renamed.\n * @param {string} newName The new file name.\n * @returns {Promise<void>}\n */\n rename(adapter, oldName, newName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('rename', adapter, oldName, newName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Delete a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @returns {Promise<void>}\n */\n deleteFile(adapter, fileName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('unlink', adapter, fileName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Delete a folder of an adapter.\n * All files in folder will be deleted.\n * @param {string} adapter The adapter name.\n * @param {string} folderName The folder name.\n * @returns {Promise<void>}\n */\n deleteFolder(adapter, folderName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('deleteFolder', adapter, folderName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Get the list of all hosts.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getHosts(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.hosts) {\n return this._promises.hosts;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.hosts = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'host',\n {startkey: 'system.host.', endkey: 'system.host.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.hosts;\n }\n\n /**\n * Get the list of all users.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getUsers(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.users) {\n return this._promises.users;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.users = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'user',\n {startkey: 'system.user.', endkey: 'system.user.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.users;\n }\n\n /**\n * Get the list of all groups.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getGroups(update) {\n if (!update && this._promises.groups) {\n return this._promises.groups;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.groups = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'group',\n {startkey: 'system.group.', endkey: 'system.group.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.groups;\n }\n\n /**\n * Get the host information.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] optional read timeout.\n * @returns {Promise<any>}\n */\n getHostInfo(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n if (!update && this._promises['hostInfo' + host]) {\n return this._promises['hostInfo' + host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['hostInfo' + host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getHostInfo timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getHostInfo', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getHostInfo\"');\n } else if (!data) {\n reject('Cannot read \"getHostInfo\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises['hostInfo' + host];\n }\n\n /**\n * Get the host information (short version).\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] optional read timeout.\n * @returns {Promise<any>}\n */\n getHostInfoShort(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n if (!update && this._promises['hostInfoShort' + host]) {\n return this._promises['hostInfoShort' + host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['hostInfoShort' + host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('hostInfoShort timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getHostInfoShort', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getHostInfoShort\"');\n } else if (!data) {\n reject('Cannot read \"getHostInfoShort\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises['hostInfoShort' + host];\n }\n\n /**\n * Get the repository.\n * @param {string} host\n * @param {any} [args]\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] timeout in ms.\n * @returns {Promise<any>}\n */\n getRepository(host, args, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.repo) {\n return this._promises.repo;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.repo = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getRepository timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getRepository', args, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getRepository\"');\n } else if (!data) {\n reject('Cannot read \"getRepository\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.repo;\n }\n\n /**\n * Get the installed.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [cmdTimeout] timeout in ms (optional)\n * @returns {Promise<any>}\n */\n getInstalled(host, update, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n this._promises.installed = this._promises.installed || {};\n\n if (!update && this._promises.installed[host]) {\n return this._promises.installed[host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.installed[host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getInstalled timeout');\n }\n }, cmdTimeout || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getInstalled', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getInstalled\"');\n } else if (!data) {\n reject('Cannot read \"getInstalled\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.installed[host];\n }\n\n /**\n * Execute a command on a host.\n * @param {string} host The host name.\n * @param {string} cmd The command.\n * @param {string} cmdId The command ID.\n * @param {number} cmdTimeout Timeout of command in ms\n * @returns {Promise<void>}\n */\n cmdExec(host, cmd, cmdId, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith(host)) {\n host += 'system.host.' + host;\n }\n\n return new Promise((resolve, reject) => {\n let timeout = cmdTimeout && setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('cmdExec timeout');\n }\n }, cmdTimeout);\n\n this._socket.emit('cmdExec', host, cmdId, cmd, null, err => {\n if (!cmdTimeout || timeout) {\n timeout && clearTimeout(timeout);\n timeout = null;\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n }\n });\n });\n }\n\n /**\n * Checks if a given feature is supported.\n * @param {string} feature The feature to check.\n * @param {boolean} [update] Force update.\n * @returns {Promise<any>}\n */\n checkFeatureSupported(feature, update) {\n if (!update && this._promises['supportedFeatures_' + feature]) {\n return this._promises['supportedFeatures_' + feature];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['supportedFeatures_' + feature] = new Promise((resolve, reject) =>\n this._socket.emit('checkFeatureSupported', feature, (err, features) => {\n err ? reject(err) : resolve(features)\n }));\n\n return this._promises['supportedFeatures_' + feature];\n }\n\n /**\n * Read the base settings of a given host.\n * @param {string} host\n * @returns {Promise<any>}\n */\n readBaseSettings(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return this.checkFeatureSupported('CONTROLLER_READWRITE_BASE_SETTINGS')\n .then(result => {\n if (result) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('readBaseSettings timeout');\n }\n }, this.props.cmdTimeout);\n\n if (host.startsWith('system.host.')) {\n host = host.replace(/^system\\.host\\./, '');\n }\n\n this._socket.emit('sendToHost', host, 'readBaseSettings', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n\n if (data === PERMISSION_ERROR) {\n reject('May not read \"BaseSettings\"');\n } else if (!data) {\n reject('Cannot read \"BaseSettings\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n } else {\n return Promise.reject('Not supported');\n }\n });\n }\n\n /**\n * Write the base settings of a given host.\n * @param {string} host\n * @param {any} config\n * @returns {Promise<any>}\n */\n writeBaseSettings(host, config) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return this.checkFeatureSupported('CONTROLLER_READWRITE_BASE_SETTINGS')\n .then(result => {\n if (result) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('writeBaseSettings timeout');\n }\n }, this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'writeBaseSettings', config, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n\n if (data === PERMISSION_ERROR) {\n reject('May not write \"BaseSettings\"');\n } else if (!data) {\n reject('Cannot write \"BaseSettings\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n } else {\n return Promise.reject('Not supported');\n }\n })\n }\n\n /**\n * Send command to restart the iobroker on host\n * @param {string} host\n * @returns {Promise<any>}\n */\n restartController(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) => {\n this._socket.emit('sendToHost', host, 'restartController', null, error => {\n error ? reject(error) : resolve(true);\n });\n });\n }\n\n /**\n * Read statistics information from host\n * @param {string} host\n * @param {string} typeOfDiag one of none, normal, no-city, extended\n * @returns {Promise<any>}\n */\n getDiagData(host, typeOfDiag) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise(resolve => {\n this._socket.emit('sendToHost', host, 'getDiagData', typeOfDiag, result =>\n resolve(result));\n });\n }\n\n /**\n * Read all states (which might not belong to this adapter) which match the given pattern.\n * @param {string} pattern\n * @returns {ioBroker.GetStatesPromise}\n */\n getForeignStates(pattern) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n if (Connection.isWeb()) {\n return new Promise((resolve, reject) =>\n this._socket.emit('getStates', pattern || '*', (err, states) =>\n err ? reject(err) : resolve(states)));\n } else {\n return new Promise((resolve, reject) =>\n this._socket.emit('getForeignStates', pattern || '*', (err, states) =>\n err ? reject(err) : resolve(states)));\n }\n }\n\n /**\n * Get foreign objects by pattern, by specific type and resolve their enums.\n * @param {string} pattern\n * @param {string} [type]\n * @returns {ioBroker.GetObjectsPromise}\n */\n getForeignObjects(pattern, type) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getForeignObjects', pattern || '*', type, (err, states) =>\n err ? reject(err) : resolve(states)));\n }\n\n /**\n * Gets the system configuration.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.OtherObject>}\n */\n getSystemConfig(update) {\n if (!update && this._promises.systemConfig) {\n return this._promises.systemConfig;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.systemConfig = this.getObject('system.config')\n .then(systemConfig => {\n //@ts-ignore\n systemConfig = systemConfig || {};\n //@ts-ignore\n systemConfig.common = systemConfig.common || {};\n //@ts-ignore\n systemConfig.native = systemConfig.native || {};\n return systemConfig;\n });\n\n return this._promises.systemConfig;\n }\n\n /**\n * Sets the system configuration.\n * @param {ioBroker.SettableObjectWorker<ioBroker.OtherObject>} obj\n * @returns {Promise<ioBroker.SettableObjectWorker<ioBroker.OtherObject>>}\n */\n setSystemConfig(obj) {\n return this.setObject('system.config', obj)\n .then(() => this._promises.systemConfig = Promise.resolve(obj));\n }\n\n /**\n * Get the raw socket.io socket.\n * @returns {any}\n */\n getRawSocket() {\n return this._socket;\n }\n\n /**\n * Get the history of a given state.\n * @param {string} id\n * @param {ioBroker.GetHistoryOptions} options\n * @returns {Promise<ioBroker.GetHistoryResult>}\n */\n getHistory(id, options) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getHistory', id, options, (err, values) =>\n err ? reject(err) : resolve(values)));\n }\n\n /**\n * Get the history of a given state.\n * @param {string} id\n * @param {ioBroker.GetHistoryOptions} options\n * @returns {Promise<{values: ioBroker.GetHistoryResult; sesionId: string; stepIgnore: number}>}\n */\n getHistoryEx(id, options) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getHistory', id, options, (err, values, stepIgnore, sessionId) =>\n err ? reject(err) : resolve({ values, sessionId, stepIgnore })));\n }\n\n /**\n * Change the password of the given user.\n * @param {string} user\n * @param {string} password\n * @returns {Promise<void>}\n */\n changePassword(user, password) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('changePassword', user, password, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Get the IP addresses of the given host.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @returns {Promise<string[]>}\n */\n getIpAddresses(host, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host = 'system.host.' + host;\n }\n\n if (!update && this._promises['IPs_' + host]) {\n return this._promises['IPs_' + host];\n }\n this._promises['IPs_' + host] = this.getObject(host)\n .then(obj => obj && obj.common ? obj.common.address || [] : []);\n\n return this._promises['IPs_' + host];\n }\n\n /**\n * Get the IP addresses with interface names of the given host or find host by IP.\n * @param {string} ipOrHostName\n * @param {boolean} [update] Force update.\n * @returns {Promise<any[<name, address, family>]>}\n */\n getHostByIp(ipOrHostName, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (ipOrHostName.startsWith('system.host.')) {\n ipOrHostName = ipOrHostName.replace(/^system\\.host\\./, '');\n }\n\n if (!update && this._promises['rIPs_' + ipOrHostName]) {\n return this._promises['rIPs_' + ipOrHostName];\n }\n this._promises['rIPs_' + ipOrHostName] = new Promise(resolve =>\n this._socket.emit('getHostByIp', ipOrHostName, (ip, host) => {\n const IPs4 = [{name: '[IPv4] 0.0.0.0 - Listen on all IPs', address: '0.0.0.0', family: 'ipv4'}];\n const IPs6 = [{name: '[IPv6] :: - Listen on all IPs', address: '::', family: 'ipv6'}];\n if (host?.native?.hardware?.networkInterfaces) {\n for (const eth in host.native.hardware.networkInterfaces) {\n if (!host.native.hardware.networkInterfaces.hasOwnProperty(eth)) {\n continue;\n }\n for (let num = 0; num < host.native.hardware.networkInterfaces[eth].length; num++) {\n if (host.native.hardware.networkInterfaces[eth][num].family !== 'IPv6') {\n IPs4.push({name: `[${host.native.hardware.networkInterfaces[eth][num].family}] ${host.native.hardware.networkInterfaces[eth][num].address} - ${eth}`, address: host.native.hardware.networkInterfaces[eth][num].address, family: 'ipv4'});\n } else {\n IPs6.push({name: `[${host.native.hardware.networkInterfaces[eth][num].family}] ${host.native.hardware.networkInterfaces[eth][num].address} - ${eth}`, address: host.native.hardware.networkInterfaces[eth][num].address, family: 'ipv6'});\n }\n }\n }\n }\n for (let i = 0; i < IPs6.length; i++) {\n IPs4.push(IPs6[i]);\n }\n resolve(IPs4);\n }));\n\n return this._promises['rIPs_' + ipOrHostName];\n }\n\n /**\n * Encrypt a text\n * @param {string} text\n * @returns {Promise<string>}\n */\n encrypt(text) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('encrypt', text, (err, text) =>\n err ? reject(err) : resolve(text)));\n }\n\n /**\n * Decrypt a text\n * @param {string} encryptedText\n * @returns {Promise<string>}\n */\n decrypt(encryptedText) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('decrypt', encryptedText, (err, text) =>\n err ? reject(err) : resolve(text)));\n }\n\n /**\n * Gets the version.\n * @returns {Promise<{version: string; serverName: string}>}\n */\n getVersion(update) {\n if (update && this._promises.version) {\n this._promises.version = null;\n }\n\n this._promises.version = this._promises.version || new Promise((resolve, reject) =>\n this._socket.emit('getVersion', (err, version, serverName) => {\n // support of old socket.io\n if (err && !version && typeof err === 'string' && err.match(/\\d+\\.\\d+\\.\\d+/)) {\n resolve({ version: err, serverName: 'socketio' });\n } else {\n return err ? reject(err) : resolve({ version, serverName });\n }\n }));\n\n return this._promises.version;\n }\n\n /**\n * Gets the web server name.\n * @returns {Promise<string>}\n */\n getWebServerName() {\n this._promises.webName = this._promises.webName || new Promise((resolve, reject) =>\n this._socket.emit('getAdapterName', (err, name) =>\n err ? reject(err) : resolve(name)));\n\n return this._promises.webName;\n }\n\n /**\n * Gets the admin version.\n * @deprecated use getVersion()\n * @returns {Promise<{version: string; serverName: string}>}\n */\n getAdminVersion() {\n console.log('Deprecated: use getVersion');\n return this.getVersion();\n }\n\n /**\n * Change access rights for file\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @param {object} [options] like {mode: 0x644}\n * @returns {Promise<{entries: array}>}\n */\n chmodFile(adapter, filename, options) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('chmodFile', adapter, filename, options, (err, entries, id) =>\n err ? reject(err) : resolve({entries, id})));\n }\n\n /**\n * Change owner or/and owner group for file\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @param {object} [options] like {owner: 'newOwner', ownerGroup: 'newGroup'}\n * @returns {Promise<{entries: array}>}\n */\n chownFile(adapter, filename, options) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('chownFile', adapter, filename, options, (err, entries, id) =>\n err ? reject(err) : resolve({entries, id})));\n }\n\n /**\n * Check if the file exists\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @returns {Promise<boolean>}\n */\n fileExists(adapter, filename) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('fileExists', adapter, filename, (err, exists) =>\n err ? reject(err) : resolve(exists)));\n }\n\n /**\n * Get the alarm notifications from a host (only for admin connection).\n * @param {string} host\n * @param {string} [category] - optional\n * @returns {Promise<any>}\n */\n getNotifications(host, category) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'getNotifications', { category }, notifications =>\n resolve(notifications)));\n }\n\n /**\n * Clear the alarm notifications on a host (only for admin connection).\n * @param {string} host\n * @param {string} [category] - optional\n * @returns {Promise<any>}\n */\n clearNotifications(host, category) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'clearNotifications', {category}, notifications =>\n resolve(notifications)));\n }\n\n /**\n * Read if only easy mode is allowed (only for admin connection).\n * @returns {Promise<boolean>}\n */\n getIsEasyModeStrict() {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getIsEasyModeStrict', (error, isStrict) =>\n error ? reject(error) : resolve(isStrict)));\n }\n\n /**\n * Read easy mode configuration (only for admin connection).\n * @returns {Promise<any>}\n */\n getEasyMode() {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getEasyMode', (error, config) =>\n error ? reject(error) : resolve(config)));\n }\n\n /**\n * Read current user\n * @returns {Promise<string>}\n */\n getCurrentUser() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise(resolve =>\n this._socket.emit('authEnabled', (isSecure, user) =>\n resolve(user)));\n }\n\n getCurrentSession(cmdTimeout) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) => {\n const controller = new AbortController();\n\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n controller.abort();\n reject('getCurrentSession timeout');\n }\n }, cmdTimeout || 5000);\n\n return fetch('./session', { signal: controller.signal })\n .then(res => res.json())\n .then(json => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(json);\n }\n })\n .catch(e =>\n reject('getCurrentSession: ' + e));\n });\n }\n\n /**\n * Read adapter ratings\n * @returns {Promise<any>}\n */\n getRatings(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getRatings', update, (err, ratings) =>\n err ? reject(err) : resolve(ratings)));\n }\n\n /**\n * Read current web, socketio or admin namespace, like admin.0\n * @returns {Promise<string>}\n */\n getCurrentInstance() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.currentInstance = this._promises.currentInstance ||\n new Promise((resolve, reject) =>\n this._socket.emit('getCurrentInstance', (err, namespace) =>\n err ? reject(err) : resolve(namespace)));\n\n return this._promises.currentInstance;\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactAdapters(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.compactAdapters) {\n return this._promises.compactAdapters;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n this._promises.compactAdapters = new Promise((resolve, reject) =>\n this._socket.emit('getCompactAdapters', (err, adapters) =>\n err ? reject(err) : resolve(adapters)));\n\n return this._promises.compactAdapters;\n }\n\n getAdaptersResetCache(adapter) {\n adapter = adapter || '';\n this._promises.compactAdapters = null;\n this._promises['adapter_' + adapter] = null;\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactInstances(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.compactInstances) {\n return this._promises.compactInstances;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.compactInstances = new Promise((resolve, reject) =>\n this._socket.emit('getCompactInstances', (err, instances) =>\n err ? reject(err) : resolve(instances)));\n\n return this._promises.compactInstances;\n }\n\n getAdapternInstancesResetCache(adapter) {\n adapter = adapter || '';\n this._promises.compactInstances = null;\n this._promises['instances_' + adapter] = null;\n }\n\n // returns very optimized information for adapters to minimize connection load\n // reads only version of installed adapter\n getCompactInstalled(host, update, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n this._promises.installedCompact = this._promises.installedCompact || {};\n\n if (!update && this._promises.installedCompact[host]) {\n return this._promises.installedCompact[host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.installedCompact[host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getCompactInstalled timeout');\n }\n }, cmdTimeout || this.props.cmdTimeout);\n\n this._socket.emit('getCompactInstalled', host, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getCompactInstalled\"');\n } else if (!data) {\n reject('Cannot read \"getCompactInstalled\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.installedCompact[host];\n }\n\n // returns very optimized information for adapters to minimize connection load\n // reads only version of installed adapter\n getCompactSystemRepositories(update, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n this._promises.installedCompact = this._promises.installedCompact || {};\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.getCompactSystemRepositories = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getCompactSystemRepositories timeout');\n }\n }, cmdTimeout || this.props.cmdTimeout);\n\n this._socket.emit('getCompactSystemRepositories', data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getCompactSystemRepositories\"');\n } else if (!data) {\n reject('Cannot read \"getCompactSystemRepositories\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.getCompactSystemRepositories;\n }\n\n getInstalledResetCache(host) {\n if (this._promises.installedCompact) {\n this._promises.installedCompact[host] = null;\n }\n if (this._promises.installed) {\n this._promises.installed[host] = null;\n }\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactSystemConfig(update) {\n if (!update && this._promises.systemConfigCommon) {\n return this._promises.systemConfigCommon;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.systemConfigCommon = new Promise((resolve, reject) =>\n this._socket.emit('getCompactSystemConfig', (err, systemConfig) =>\n err ? reject(err) : resolve(systemConfig)));\n\n return this._promises.systemConfigCommon;\n }\n\n /**\n * Get the repository in compact form (only version and icon).\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] timeout in ms.\n * @returns {Promise<any>}\n */\n getCompactRepository(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!update && this._promises.repoCompact) {\n return this._promises.repoCompact;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.repoCompact = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getCompactRepository timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('getCompactRepository', host, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getCompactRepository\"');\n } else if (!data) {\n reject('Cannot read \"getCompactRepository\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.repoCompact;\n }\n\n getInstalledResetCache(host) {\n this._promises.repoCompact = null;\n this._promises.repo = null;\n }\n\n /**\n * Get the list of all hosts in compact form (only _id, common.name, common.icon, common.color, native.hardware.networkInterfaces)\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getCompactHosts(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.hostsCompact) {\n return this._promises.hostsCompact;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.hostsCompact = new Promise((resolve, reject) =>\n this._socket.emit('getCompactHosts', (err, hosts) =>\n err ? reject(err) : resolve(hosts)));\n\n return this._promises.hostsCompact;\n }\n\n /**\n * Get uuid\n * @returns {Promise<ioBroker.Object[]>}\n */\n getUuid() {\n if (this._promises.uuid) {\n return this._promises.uuid;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.uuid = this.getObject('system.meta.uuid')\n //@ts-ignore\n .then(obj => obj?.native?.uuid);\n\n return this._promises.uuid;\n }\n\n /**\n * Send log to ioBroker log\n * @param {string} [text] Log text\n * @param {string} [level] `info`, `debug`, `warn`, `error` or `silly`\n * @returns {void}\n */\n log(text, level) {\n text && this._socket.emit('log', text, level || 'debug');\n }\n\n /**\n * Logout current user\n * @returns {Promise<null>}\n */\n logout() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('logout', err =>\n err ? reject(err) : resolve(null)));\n }\n}\n\nConnection.Connection = {\n onLog: PropTypes.func,\n onReady: PropTypes.func,\n onProgress: PropTypes.func,\n};\n\nexport default Connection;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Connection.js","names":["PROGRESS","CONNECTING","CONNECTED","OBJECTS_LOADED","READY","PERMISSION_ERROR","NOT_CONNECTED","TIMEOUT_FOR_ADMIN4","ERRORS","fixAdminUI","obj","common","adminUI","noConfig","config","jsonConfig","materialize","jsonCustom","custom","supportCustoms","materializeTab","adminTab","tab","console","debug","_id","replace","JSON","stringify","Connection","props","protocol","window","location","host","hostname","autoSubscribes","autoSubscribeLog","port","isWeb","ioTimeout","Math","max","cmdTimeout","doNotLoadAllObjects","undefined","doNotLoadACL","states","objects","acl","firstConnect","waitForRestart","systemLang","connected","_waitForFirstConnection","Promise","resolve","_waitForFirstConnectionResolve","statesSubscribes","objectsSubscribes","onProgress","onError","err","error","loaded","loadTimer","loadCounter","admin5only","onConnectionHandlers","onLogHandlers","_promises","log","text","warn","info","silly","startSocket","io","registerSocketOnLoad","scriptLoadCounter","setTimeout","alert","_socket","path","pathname","socketUrl","parts","split","includes","pos","lastIndexOf","substring","length","pop","match","join","endsWith","url","connect","query","name","timeout","on","noTimeout","getVersion","then","version","major","minor","patch","v","parseInt","_authTimer","onPreConnect","emit","isOk","isSecure","reload","_subscribe","forEach","cb","subscribed","authenticate","message","onLog","_err","toString","operation","type","id","objectChange","state","stateChange","onCmdStdoutHandler","onCmdStderrHandler","exitCode","onCmdExitHandler","clearTimeout","onConnect","_getUserPermissions","vendorPrefix","getCompactSystemConfig","getSystemConfig","data","systemConfig","language","navigator","userLanguage","onLanguage","getObjects","onReady","e","search","hash","binary","reg","indexOf","RegExp","cbs","push","getBinaryState","base64","Object","keys","splice","oldObj","changed","_rev","test","onObjectChange","task","hasOwnProperty","disableProgressUpdate","reject","res","STATES_LOADED","val","ack","update","isEnable","isEnabled","maintenance","parse","from","user","ts","adapter","getObjectView","items","map","instances","adapters","objs","oldId","newId","setObject","delObject","_renameGroups","newName","getGroups","groups","groupsToRename","filter","group","startsWith","find","instance","command","result","handler","_enum","startkey","endkey","_res","i","rows","value","start","end","cert","getObject","certs","certificates","c","_cert","toLowerCase","m","t","trim","linesNumber","lines","files","fileName","btoa","Uint8Array","reduce","byte","String","fromCharCode","oldName","folderName","hosts","doc","item","users","timeoutMs","args","repo","installed","cmd","cmdId","feature","features","checkFeatureSupported","typeOfDiag","pattern","options","values","stepIgnore","sessionId","password","address","ipOrHostName","ip","IPs4","family","IPs6","hardware","networkInterfaces","eth","num","encryptedText","serverName","webName","filename","entries","exists","category","notifications","isStrict","controller","AbortController","abort","fetch","signal","json","ratings","currentInstance","namespace","compactAdapters","compactInstances","installedCompact","getCompactSystemRepositories","repoCompact","systemConfigCommon","hostsCompact","uuid","level","adapterName","PropTypes","func"],"sources":["Connection.js"],"sourcesContent":["/**\n * Copyright 2020-2022, bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport PropTypes from 'prop-types';\n\n/** Possible progress states. */\nexport const PROGRESS = {\n /** The socket is connecting. */\n CONNECTING: 0,\n /** The socket is successfully connected. */\n CONNECTED: 1,\n /** All objects are loaded. */\n OBJECTS_LOADED: 2,\n /** The socket is ready for use. */\n READY: 3\n};\n\nconst PERMISSION_ERROR = 'permissionError';\nconst NOT_CONNECTED = 'notConnectedError';\nconst TIMEOUT_FOR_ADMIN4 = 1300;\n\nexport const ERRORS = {\n PERMISSION_ERROR,\n NOT_CONNECTED\n};\n\nfunction fixAdminUI(obj) {\n if (obj && obj.common && !obj.common.adminUI) {\n if (obj.common.noConfig) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'none';\n } else if (obj.common.jsonConfig) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'json';\n } else if (obj.common.materialize) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'materialize';\n } else {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'html';\n }\n\n if (obj.common.jsonCustom) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.custom = 'json';\n } else if (obj.common.supportCustoms) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.custom = 'json';\n }\n\n if (obj.common.materializeTab && obj.common.adminTab) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.tab = 'materialize';\n } else if (obj.common.adminTab) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.tab = 'html';\n }\n\n obj.common.adminUI && console.debug(`Please add to \"${obj._id.replace(/\\.\\d+$/, '')}\" common.adminUI=${JSON.stringify(obj.common.adminUI)}`);\n }\n return obj;\n}\n\nclass Connection {\n /**\n * @param {import('./types').ConnectionProps} props\n */\n constructor(props) {\n props = props || { protocol: window.location.protocol, host: window.location.hostname };\n this.props = props;\n\n this.autoSubscribes = this.props.autoSubscribes || [];\n this.autoSubscribeLog = this.props.autoSubscribeLog;\n\n this.props.protocol = this.props.protocol || window.location.protocol;\n this.props.host = this.props.host || window.location.hostname;\n this.props.port = this.props.port || (window.location.port === '3000' ? (Connection.isWeb() ? 8082 : 8081) : window.location.port);\n this.props.ioTimeout = Math.max(this.props.ioTimeout || 20000, 20000);\n this.props.cmdTimeout = Math.max(this.props.cmdTimeout || 5000, 5000);\n\n // breaking change. Do not load all objects by default is true\n this.doNotLoadAllObjects = this.props.doNotLoadAllObjects === undefined ? true : this.props.doNotLoadAllObjects;\n this.doNotLoadACL = this.props.doNotLoadACL === undefined ? true : this.props.doNotLoadACL;\n\n /** @type {Record<string, ioBroker.State>} */\n this.states = {};\n this.objects = null;\n this.acl = null;\n this.firstConnect = true;\n this.waitForRestart = false;\n /** @type {ioBroker.Languages} */\n this.systemLang = 'en';\n this.connected = false;\n this._waitForFirstConnection = new Promise(resolve => { this._waitForFirstConnectionResolve = resolve });\n\n /** @type {Record<string, { reg: RegExp; cbs: ioBroker.StateChangeHandler[]}>} */\n this.statesSubscribes = {}; // subscribe for states\n\n /** @type {Record<string, { reg: RegExp; cbs: import('./types').ObjectChangeHandler[]}>} */\n this.objectsSubscribes = {}; // subscribe for objects\n this.onProgress = this.props.onProgress || function () { };\n this.onError = this.props.onError || function (err) { console.error(err); };\n this.loaded = false;\n this.loadTimer = null;\n this.loadCounter = 0;\n this.admin5only = this.props.admin5only || false;\n\n /** @type {((connected: boolean) => void)[]} */\n this.onConnectionHandlers = [];\n /** @type {((message: string) => void)[]} */\n this.onLogHandlers = [];\n\n /** @type {Record<string, Promise<any>>} */\n this._promises = {};\n\n this.log.error = text => this.log(text, 'error');\n this.log.warn = text => this.log(text, 'warn');\n this.log.info = text => this.log(text, 'info');\n this.log.debug = text => this.log(text, 'debug');\n this.log.silly = text => this.log(text, 'silly');\n\n this.startSocket();\n }\n\n /**\n * Checks if this connection is running in a web adapter and not in an admin.\n * @returns {boolean} True if running in a web adapter or in a socketio adapter.\n */\n static isWeb() {\n return window.adapterName === 'material' ||\n window.adapterName === 'vis' ||\n window.adapterName === 'echarts-show' ||\n window.socketUrl !== undefined;\n }\n\n /**\n * Starts the socket.io connection.\n * @returns {void}\n */\n startSocket() {\n // if socket io is not yet loaded\n if (typeof window.io === 'undefined') {\n // if in index.html the onLoad function not defined\n if (typeof window.registerSocketOnLoad !== 'function') {\n // poll if loaded\n this.scriptLoadCounter = this.scriptLoadCounter || 0;\n this.scriptLoadCounter++;\n\n if (this.scriptLoadCounter < 30) {\n // wait till the script loaded\n setTimeout(() => this.startSocket(), 100);\n return;\n } else {\n window.alert('Cannot load socket.io.js!');\n }\n } else {\n // register on load\n window.registerSocketOnLoad(() => this.startSocket());\n }\n return;\n } else {\n // socket was initialized, do not repeat\n if (this._socket) {\n return;\n }\n }\n\n let host = this.props.host;\n let port = this.props.port;\n let protocol = this.props.protocol.replace(':', '');\n let path = window.location.pathname;\n\n if (\n window.location.hostname === 'iobroker.net' ||\n window.location.hostname === 'iobroker.pro'\n ) {\n path = '';\n } else {\n // if web adapter, socket io could be on other port or even host\n if (window.socketUrl) {\n let parts = window.socketUrl.split(':');\n host = parts[0] || host;\n port = parts[1] || port;\n if (host.includes('://')) {\n parts = host.split('://');\n protocol = parts[0];\n host = parts[1];\n }\n }\n // get current path\n const pos = path.lastIndexOf('/');\n if (pos !== -1) {\n path = path.substring(0, pos + 1);\n }\n\n if (Connection.isWeb()) {\n // remove one level, like echarts, vis, .... We have here: '/echarts/'\n const parts = path.split('/');\n if (parts.length > 2) {\n parts.pop();\n // if it is version, like in material, so remove it too\n if (parts[parts.length - 1].match(/\\d+\\.\\d+\\.\\d+/)) {\n parts.pop();\n }\n parts.pop();\n path = parts.join('/');\n if (!path.endsWith('/')) {\n path += '/';\n }\n }\n }\n }\n\n const url = port ? `${protocol}://${host}:${port}${path}` : `${protocol}://${host}${path}`;\n\n this._socket = window.io.connect(\n url,\n {\n path: path.endsWith('/') ? path + 'socket.io' : path + '/socket.io',\n query: 'ws=true',\n name: this.props.name,\n timeout: this.props.ioTimeout\n }\n );\n\n this._socket.on('connect', noTimeout => {\n // If the user is not admin it takes some time to install the handlers, because all rights must be checked\n if (noTimeout !== true) {\n setTimeout(() =>\n this.getVersion()\n .then(info => {\n const [major, minor, patch] = info.version.split('.');\n const v = parseInt(major, 10) * 10000 + parseInt(minor, 10) * 100 + parseInt(patch, 10);\n if (v < 40102) {\n this._authTimer = null;\n // possible this is old version of admin\n this.onPreConnect(false, false);\n } else {\n this._socket.emit('authenticate', (isOk, isSecure) => this.onPreConnect(isOk, isSecure));\n }\n }), 500);\n } else {\n // iobroker websocket waits, till all handlers are installed\n this._socket.emit('authenticate', (isOk, isSecure) => this.onPreConnect(isOk, isSecure));\n }\n });\n\n this._socket.on('reconnect', () => {\n this.onProgress(PROGRESS.READY);\n this.connected = true;\n\n if (this.waitForRestart) {\n window.location.reload(false);\n } else {\n this._subscribe(true);\n this.onConnectionHandlers.forEach(cb => cb(true));\n }\n });\n\n this._socket.on('disconnect', () => {\n this.connected = false;\n this.subscribed = false;\n this.onProgress(PROGRESS.CONNECTING);\n this.onConnectionHandlers.forEach(cb => cb(false));\n });\n\n this._socket.on('reauthenticate', () =>\n this.authenticate());\n\n this._socket.on('log', message => {\n this.props.onLog && this.props.onLog(message);\n this.onLogHandlers.forEach(cb => cb(message));\n });\n\n this._socket.on('error', err => {\n let _err = err || '';\n if (typeof _err.toString !== 'function') {\n _err = JSON.stringify(_err);\n console.error(`Received strange error: ${_err}`);\n }\n _err = _err.toString();\n if (_err.includes('User not authorized')) {\n this.authenticate();\n } else {\n window.alert(`Socket Error: ${err}`);\n }\n });\n\n this._socket.on('connect_error', err =>\n console.error(`Connect error: ${err}`));\n\n this._socket.on('permissionError', err =>\n this.onError({ message: 'no permission', operation: err.operation, type: err.type, id: (err.id || '') }));\n\n this._socket.on('objectChange', (id, obj) =>\n setTimeout(() => this.objectChange(id, obj), 0));\n\n this._socket.on('stateChange', (id, state) =>\n setTimeout(() => this.stateChange(id, state), 0));\n\n this._socket.on('cmdStdout', (id, text) =>\n this.onCmdStdoutHandler && this.onCmdStdoutHandler(id, text));\n\n this._socket.on('cmdStderr', (id, text) =>\n this.onCmdStderrHandler && this.onCmdStderrHandler(id, text));\n\n this._socket.on('cmdExit', (id, exitCode) =>\n this.onCmdExitHandler && this.onCmdExitHandler(id, exitCode));\n }\n\n /**\n * Called internally.\n * @private\n * @param {boolean} isOk\n * @param {boolean} isSecure\n */\n onPreConnect(isOk, isSecure) {\n if (this._authTimer) {\n clearTimeout(this._authTimer);\n this._authTimer = null;\n }\n\n this.connected = true;\n this.isSecure = isSecure;\n\n if (this.waitForRestart) {\n window.location.reload(false);\n } else {\n if (this.firstConnect) {\n // retry strategy\n this.loadTimer = setTimeout(() => {\n this.loadTimer = null;\n this.loadCounter++;\n if (this.loadCounter < 10) {\n this.onConnect();\n }\n }, 1000);\n\n if (!this.loaded) {\n this.onConnect();\n }\n } else {\n this.onProgress(PROGRESS.READY);\n }\n\n this._subscribe(true);\n this.onConnectionHandlers.forEach(cb => cb(true));\n }\n\n if (this._waitForFirstConnectionResolve) {\n this._waitForFirstConnectionResolve();\n this._waitForFirstConnectionResolve = null;\n }\n }\n\n /**\n * Checks if the socket is connected.\n * @returns {boolean} true if connected.\n */\n isConnected() {\n return this.connected;\n }\n\n /**\n * Checks if the socket is connected.\n * @returns {Promise<void>} Promise resolves if once connected.\n */\n waitForFirstConnection() {\n return this._waitForFirstConnection;\n }\n\n /**\n * Called internally.\n * @private\n */\n _getUserPermissions(cb) {\n if (this.doNotLoadACL) {\n return cb && cb();\n } else {\n this._socket.emit('getUserPermissions', cb);\n }\n }\n\n /**\n * Called internally.\n * @private\n */\n onConnect() {\n this._getUserPermissions((err, acl) => {\n if (err) {\n return this.onError('Cannot read user permissions: ' + err);\n } else\n if (!this.doNotLoadACL) {\n if (this.loaded) {\n return;\n }\n this.loaded = true;\n clearTimeout(this.loadTimer);\n this.loadTimer = null;\n\n this.onProgress(PROGRESS.CONNECTED);\n this.firstConnect = false;\n\n this.acl = acl;\n }\n\n // Read system configuration\n return (this.admin5only && !window.vendorPrefix ? this.getCompactSystemConfig() : this.getSystemConfig())\n .then(data => {\n if (this.doNotLoadACL) {\n if (this.loaded) {\n return undefined;\n }\n this.loaded = true;\n clearTimeout(this.loadTimer);\n this.loadTimer = null;\n\n this.onProgress(PROGRESS.CONNECTED);\n this.firstConnect = false;\n }\n\n this.systemConfig = data;\n if (this.systemConfig && this.systemConfig.common) {\n this.systemLang = this.systemConfig.common.language;\n } else {\n this.systemLang = window.navigator.userLanguage || window.navigator.language;\n\n if (this.systemLang !== 'en' && this.systemLang !== 'de' && this.systemLang !== 'ru') {\n this.systemConfig.common.language = 'en';\n this.systemLang = 'en';\n }\n }\n\n this.props.onLanguage && this.props.onLanguage(this.systemLang);\n\n if (!this.doNotLoadAllObjects) {\n return this.getObjects()\n .then(() => {\n this.onProgress(PROGRESS.READY);\n this.props.onReady && this.props.onReady(this.objects);\n });\n } else {\n this.objects = this.admin5only ? {} : { 'system.config': data };\n this.onProgress(PROGRESS.READY);\n this.props.onReady && this.props.onReady(this.objects);\n }\n return undefined;\n })\n .catch(e => this.onError('Cannot read system config: ' + e));\n });\n }\n\n /**\n * Called internally.\n * @private\n */\n authenticate() {\n if (window.location.search.includes('&href=')) {\n window.location = `${window.location.protocol}//${window.location.host}${window.location.pathname}${window.location.search}${window.location.hash}`;\n } else {\n window.location = `${window.location.protocol}//${window.location.host}${window.location.pathname}?login&href=${window.location.search}${window.location.hash}`;\n }\n }\n\n /**\n * Subscribe to changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n /**\n * Subscribe to changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {boolean} binary Set to true if the given state is binary and requires Base64 decoding.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n subscribeState(id, binary, cb) {\n if (typeof binary === 'function') {\n cb = binary;\n binary = false;\n }\n\n if (!this.statesSubscribes[id]) {\n let reg = id\n .replace(/\\./g, '\\\\.')\n .replace(/\\*/g, '.*')\n .replace(/\\(/g, '\\\\(')\n .replace(/\\)/g, '\\\\)')\n .replace(/\\+/g, '\\\\+')\n .replace(/\\[/g, '\\\\[');\n\n if (reg.indexOf('*') === -1) {\n reg += '$';\n }\n this.statesSubscribes[id] = { reg: new RegExp(reg), cbs: [] };\n this.statesSubscribes[id].cbs.push(cb);\n if (this.connected) {\n this._socket.emit('subscribe', id);\n }\n } else {\n !this.statesSubscribes[id].cbs.includes(cb) && this.statesSubscribes[id].cbs.push(cb);\n }\n if (typeof cb === 'function' && this.connected) {\n if (binary) {\n this.getBinaryState(id)\n .then(base64 => cb(id, base64))\n .catch(e => console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(e)}`));\n } else {\n if (Connection.isWeb()) {\n this._socket.emit('getStates', id, (err, states) => {\n err && console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(err)}`);\n states && Object.keys(states).forEach(id => cb(id, states[id]));\n });\n } else {\n this._socket.emit('getForeignStates', id, (err, states) => {\n err && console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(err)}`);\n states && Object.keys(states).forEach(id => cb(id, states[id]));\n });\n }\n }\n }\n }\n\n /**\n * Unsubscribes all callbacks from changes of the given state.\n * @param {string} id The ioBroker state ID.\n */\n /**\n * Unsubscribes the given callback from changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n unsubscribeState(id, cb) {\n if (this.statesSubscribes[id]) {\n if (cb) {\n const pos = this.statesSubscribes[id].cbs.indexOf(cb);\n pos !== -1 && this.statesSubscribes[id].cbs.splice(pos, 1);\n } else {\n this.statesSubscribes[id].cbs = [];\n }\n\n if (!this.statesSubscribes[id].cbs || !this.statesSubscribes[id].cbs.length) {\n delete this.statesSubscribes[id];\n this.connected && this._socket.emit('unsubscribe', id);\n }\n }\n }\n\n /**\n * Subscribe to changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @param {import('./types').ObjectChangeHandler} cb The callback.\n * @returns {Promise<void>}\n */\n subscribeObject(id, cb) {\n if (!this.objectsSubscribes[id]) {\n let reg = id.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*');\n if (!reg.includes('*')) {\n reg += '$';\n }\n this.objectsSubscribes[id] = { reg: new RegExp(reg), cbs: [] };\n this.objectsSubscribes[id].cbs.push(cb);\n this.connected && this._socket.emit('subscribeObjects', id);\n } else {\n !this.objectsSubscribes[id].cbs.includes(cb) && this.objectsSubscribes[id].cbs.push(cb);\n }\n return Promise.resolve();\n }\n\n /**\n * Unsubscribes all callbacks from changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @returns {Promise<void>}\n */\n /**\n * Unsubscribes the given callback from changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @param {import('./types').ObjectChangeHandler} cb The callback.\n * @returns {Promise<void>}\n */\n unsubscribeObject(id, cb) {\n if (this.objectsSubscribes[id]) {\n if (cb) {\n const pos = this.objectsSubscribes[id].cbs.indexOf(cb);\n pos !== -1 && this.objectsSubscribes[id].cbs.splice(pos, 1);\n } else {\n this.objectsSubscribes[id].cbs = [];\n }\n\n if (this.connected && (!this.objectsSubscribes[id].cbs || !this.objectsSubscribes[id].cbs.length)) {\n delete this.objectsSubscribes[id];\n this.connected && this._socket.emit('unsubscribeObjects', id);\n }\n }\n return Promise.resolve();\n }\n\n /**\n * Called internally.\n * @private\n * @param {string} id\n * @param {ioBroker.Object | null | undefined} obj\n */\n objectChange(id, obj) {\n // update main.objects cache\n if (!this.objects) {\n return;\n }\n\n /** @type {import(\"./types\").OldObject} */\n let oldObj;\n\n let changed = false;\n if (obj) {\n if (obj._rev && this.objects[id]) {\n this.objects[id]._rev = obj._rev;\n }\n\n if (this.objects[id]) {\n oldObj = { _id: id, type: this.objects[id].type };\n }\n\n if (!this.objects[id] || JSON.stringify(this.objects[id]) !== JSON.stringify(obj)) {\n this.objects[id] = obj;\n changed = true;\n }\n } else if (this.objects[id]) {\n oldObj = { _id: id, type: this.objects[id].type };\n delete this.objects[id];\n changed = true;\n }\n\n Object.keys(this.objectsSubscribes).forEach(_id => {\n if (_id === id || this.objectsSubscribes[_id].reg.test(id)) {\n //@ts-ignore\n this.objectsSubscribes[_id].cbs.forEach(cb => cb(id, obj, oldObj));\n }\n });\n\n if (changed && this.props.onObjectChange) {\n this.props.onObjectChange(id, obj);\n }\n }\n\n /**\n * Called internally.\n * @private\n * @param {string} id\n * @param {ioBroker.State | null | undefined} state\n */\n stateChange(id, state) {\n for (const task in this.statesSubscribes) {\n if (this.statesSubscribes.hasOwnProperty(task) && this.statesSubscribes[task].reg.test(id)) {\n this.statesSubscribes[task].cbs.forEach(cb => cb(id, state));\n }\n }\n }\n\n /**\n * Gets all states.\n * @param {boolean} disableProgressUpdate don't call onProgress() when done\n * @returns {Promise<Record<string, ioBroker.State>>}\n */\n getStates(disableProgressUpdate) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getStates', (err, res) => {\n this.states = res;\n //@ts-ignore\n !disableProgressUpdate && this.onProgress(PROGRESS.STATES_LOADED);\n return err ? reject(err) : resolve(this.states);\n }));\n }\n\n /**\n * Gets the given state.\n * @param {string} id The state ID.\n * @returns {Promise<ioBroker.State | null | undefined>}\n */\n getState(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getState', id, (err, state) => err ? reject(err) : resolve(state)));\n }\n\n /**\n * Gets the given binary state.\n * @param {string} id The state ID.\n * @returns {Promise<Buffer | undefined>}\n */\n getBinaryState(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n // the data will come in base64\n return new Promise((resolve, reject) =>\n this._socket.emit('getBinaryState', id, (err, state) => err ? reject(err) : resolve(state)));\n }\n\n /**\n * Sets the given binary state.\n * @param {string} id The state ID.\n * @param {string} base64 The Base64 encoded binary data.\n * @returns {Promise<void>}\n */\n setBinaryState(id, base64) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n // the data will come in base64\n return new Promise((resolve, reject) =>\n this._socket.emit('setBinaryState', id, base64, err => err ? reject(err) : resolve()));\n }\n\n /**\n * Sets the given state value.\n * @param {string} id The state ID.\n * @param {string | number | boolean | ioBroker.State | ioBroker.SettableState | null} val The state value.\n * @param {boolean | null} ack Acknowledge flag\n * @returns {Promise<void>}\n */\n setState(id, val, ack) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (typeof ack === 'boolean') {\n val = { val, ack };\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('setState', id, val, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Gets all objects.\n * @param {(objects?: Record<string, ioBroker.Object>) => void} update Callback that is executed when all objects are retrieved.\n * @returns {void}\n */\n /**\n * Gets all objects.\n * @param {boolean} update Set to true to retrieve all objects from the server (instead of using the local cache).\n * @param {boolean} disableProgressUpdate don't call onProgress() when done\n * @returns {Promise<Record<string, ioBroker.Object>> | undefined}\n */\n getObjects(update, disableProgressUpdate) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n } else {\n return new Promise((resolve, reject) => {\n if (!update && this.objects) {\n return resolve(this.objects);\n }\n\n this._socket.emit(Connection.isWeb() ? 'getObjects' : 'getAllObjects', (err, res) => {\n this.objects = res;\n disableProgressUpdate && this.onProgress(PROGRESS.OBJECTS_LOADED);\n err ? reject(err) : resolve(this.objects);\n });\n });\n }\n }\n\n /**\n * Called internally.\n * @private\n * @param {boolean} isEnable\n */\n _subscribe(isEnable) {\n if (isEnable && !this.subscribed) {\n this.subscribed = true;\n this.autoSubscribes.forEach(id => this._socket.emit('subscribeObjects', id));\n // re subscribe objects\n Object.keys(this.objectsSubscribes).forEach(id => this._socket.emit('subscribeObjects', id));\n // re-subscribe logs\n this.autoSubscribeLog && this._socket.emit('requireLog', true);\n // re subscribe states\n Object.keys(this.statesSubscribes).forEach(id => this._socket.emit('subscribe', id));\n } else if (!isEnable && this.subscribed) {\n this.subscribed = false;\n // un-subscribe objects\n this.autoSubscribes.forEach(id => this._socket.emit('unsubscribeObjects', id));\n Object.keys(this.objectsSubscribes).forEach(id => this._socket.emit('unsubscribeObjects', id));\n // un-subscribe logs\n this.autoSubscribeLog && this._socket.emit('requireLog', false);\n\n // un-subscribe states\n Object.keys(this.statesSubscribes).forEach(id => this._socket.emit('unsubscribe', id));\n }\n }\n\n /**\n * Requests log updates.\n * @param {boolean} isEnabled Set to true to get logs.\n * @returns {Promise<void>}\n */\n requireLog(isEnabled) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('requireLog', isEnabled, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Deletes the given object.\n * @param {string} id The object ID.\n * @param {boolean} maintenance Force deletion of non conform IDs.\n * @returns {Promise<void>}\n */\n delObject(id, maintenance) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('delObject', id, { maintenance: !!maintenance }, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Deletes the given object and all its children.\n * @param {string} id The object ID.\n * @param {boolean} maintenance Force deletion of non conform IDs.\n * @returns {Promise<void>}\n */\n delObjects(id, maintenance) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('delObjects', id, {maintenance: !!maintenance}, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Sets the object.\n * @param {string} id The object ID.\n * @param {ioBroker.SettableObject} obj The object.\n * @returns {Promise<void>}\n */\n setObject(id, obj) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!obj) {\n return Promise.reject('Null object is not allowed');\n }\n\n obj = JSON.parse(JSON.stringify(obj));\n\n if (obj.hasOwnProperty('from')) {\n delete obj.from;\n }\n if (obj.hasOwnProperty('user')) {\n delete obj.user;\n }\n if (obj.hasOwnProperty('ts')) {\n delete obj.ts;\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('setObject', id, obj, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Gets the object with the given id from the server.\n * @param {string} id The object ID.\n * @returns {ioBroker.GetObjectPromise} The object.\n */\n getObject(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getObject', id, (err, obj) =>\n err ? reject(err) : resolve(obj)));\n }\n\n /**\n * Get all adapter instances.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n /**\n * Get all instances of the given adapter.\n * @param {string} adapter The name of the adapter.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getAdapterInstances(adapter, update) {\n if (typeof adapter === 'boolean') {\n update = adapter;\n adapter = '';\n }\n adapter = adapter || '';\n\n if (!update && this._promises['instances_' + adapter]) {\n return this._promises['instances_' + adapter];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['instances_' + adapter] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n timeout = null;\n this.getObjectView(\n `system.adapter.${adapter ? adapter + '.' : ''}`,\n `system.adapter.${adapter ? adapter + '.' : ''}\\u9999`,\n 'instance'\n )\n .then(items => resolve(Object.keys(items).map(id => fixAdminUI(items[id]))))\n .catch(e => reject(e));\n }, TIMEOUT_FOR_ADMIN4);\n\n this._socket.emit('getAdapterInstances', adapter, (err, instances) => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n return err ? reject(err) : resolve(instances);\n }\n });\n });\n\n return this._promises['instances_' + adapter];\n }\n\n /**\n * Get all adapters.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n /**\n * Get adapters with the given name.\n * @param {string} adapter The name of the adapter.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getAdapters(adapter, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (typeof adapter === 'boolean') {\n update = adapter;\n adapter = '';\n }\n\n adapter = adapter || '';\n\n if (!update && this._promises['adapter_' + adapter]) {\n return this._promises['adapter_' + adapter];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['adapter_' + adapter] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n timeout = null;\n this.getObjectView(\n `system.adapter.${adapter}.`,\n `system.adapter.${adapter}.\\u9999`,\n 'adapter'\n )\n .then(items => resolve(Object.keys(items).map(id => fixAdminUI(items[id]))))\n .catch(e => reject(e));\n }, TIMEOUT_FOR_ADMIN4);\n\n this._socket.emit('getAdapters', adapter, (err, adapters) => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n return err ? reject(err) : resolve(adapters);\n }\n });\n });\n\n return this._promises['adapter_' + adapter];\n }\n\n /**\n * Called internally.\n * @private\n * @param {any[]} objs\n * @param {(err?: any) => void} cb\n */\n _renameGroups(objs, cb) {\n if (!objs || !objs.length) {\n cb && cb();\n } else {\n let obj = objs.pop();\n let oldId = obj._id;\n obj._id = obj.newId;\n delete obj.newId;\n\n this.setObject(obj._id, obj)\n .then(() => this.delObject(oldId))\n .then(() => setTimeout(() => this._renameGroups(objs, cb), 0))\n .catch(err => cb && cb(err));\n }\n }\n\n /**\n * Rename a group.\n * @param {string} id The id.\n * @param {string} newId The new id.\n * @param {string | { [lang in ioBroker.Languages]?: string; }} newName The new name.\n */\n renameGroup(id, newId, newName) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n return this.getGroups(true)\n .then(groups => {\n if (groups.length) {\n // find all elements\n const groupsToRename = groups\n .filter(group => group._id.startsWith(id + '.'));\n\n groupsToRename.forEach(group => group.newId = newId + group._id.substring(id.length));\n\n return new Promise((resolve, reject) =>\n this._renameGroups(groupsToRename, err => err ? reject(err) : resolve()))\n .then(() => {\n const obj = groups.find(group => group._id === id);\n\n if (obj) {\n obj._id = newId;\n if (newName !== undefined) {\n obj.common = obj.common || {};\n obj.common.name = newName;\n }\n\n return this.setObject(obj._id, obj)\n .then(() => this.delObject(id));\n }\n });\n }\n });\n }\n\n /**\n * Sends a message to a specific instance or all instances of some specific adapter.\n * @param {string} instance The instance to send this message to.\n * @param {string} [command] Command name of the target instance.\n * @param {ioBroker.MessagePayload} [data] The message data to send.\n * @returns {Promise<ioBroker.Message | undefined>}\n */\n sendTo(instance, command, data) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendTo', instance, command, data, result =>\n resolve(result)));\n }\n\n /**\n * Extend an object and create it if it might not exist.\n * @param {string} id The id.\n * @param {ioBroker.PartialObject} obj The object.\n */\n extendObject(id, obj) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n obj = JSON.parse(JSON.stringify(obj));\n\n if (obj.hasOwnProperty('from')) {\n delete obj.from;\n }\n if (obj.hasOwnProperty('user')) {\n delete obj.user;\n }\n if (obj.hasOwnProperty('ts')) {\n delete obj.ts;\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('extendObject', id, obj, err => err ? reject(err) : resolve()));\n }\n\n /**\n * Register a handler for log messages.\n * @param {(message: string) => void} handler The handler.\n */\n registerLogHandler(handler) {\n !this.onLogHandlers.includes(handler) && this.onLogHandlers.push(handler);\n }\n\n /**\n * Unregister a handler for log messages.\n * @param {(message: string) => void} handler The handler.\n */\n unregisterLogHandler(handler) {\n const pos = this.onLogHandlers.indexOf(handler);\n pos !== -1 && this.onLogHandlers.splice(pos, 1);\n }\n\n /**\n * Register a handler for the connection state.\n * @param {(connected: boolean) => void} handler The handler.\n */\n registerConnectionHandler(handler) {\n !this.onConnectionHandlers.includes(handler) && this.onConnectionHandlers.push(handler);\n }\n\n /**\n * Unregister a handler for the connection state.\n * @param {(connected: boolean) => void} handler The handler.\n */\n unregisterConnectionHandler(handler) {\n const pos = this.onConnectionHandlers.indexOf(handler);\n pos !== -1 && this.onConnectionHandlers.splice(pos, 1);\n }\n\n /**\n * Set the handler for standard output of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n registerCmdStdoutHandler(handler) {\n this.onCmdStdoutHandler = handler;\n }\n\n /**\n * Unset the handler for standard output of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n unregisterCmdStdoutHandler(handler) {\n this.onCmdStdoutHandler = null;\n }\n\n /**\n * Set the handler for standard error of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n registerCmdStderrHandler(handler) {\n this.onCmdStderrHandler = handler;\n }\n\n /**\n * Unset the handler for standard error of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n unregisterCmdStderrHandler(handler) {\n this.onCmdStderrHandler = null;\n }\n\n /**\n * Set the handler for exit of a command.\n * @param {(id: string, exitCode: number) => void} handler The handler.\n */\n registerCmdExitHandler(handler) {\n this.onCmdExitHandler = handler;\n }\n\n /**\n * Unset the handler for exit of a command.\n * @param {(id: string, exitCode: number) => void} handler The handler.\n */\n unregisterCmdExitHandler(handler) {\n this.onCmdExitHandler = null;\n }\n\n /**\n * Get all enums with the given name.\n * @param {string} [_enum] The name of the enum\n * @param {boolean} [update] Force update.\n * @returns {Promise<Record<string, ioBroker.Object>>}\n */\n getEnums(_enum, update) {\n if (!update && this._promises['enums_' + (_enum || 'all')]) {\n return this._promises['enums_' + (_enum || 'all')];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['enums_' + (_enum || 'all')] = new Promise((resolve, reject) => {\n this._socket.emit('getObjectView', 'system', 'enum', { startkey: 'enum.' + (_enum || ''), endkey: 'enum.' + (_enum ? (_enum + '.') : '') + '\\u9999' }, (err, res) => {\n if (!err && res) {\n const _res = {};\n for (let i = 0; i < res.rows.length; i++) {\n if (_enum && res.rows[i].id === 'enum.' + _enum) {\n continue;\n }\n _res[res.rows[i].id] = res.rows[i].value;\n }\n resolve(_res);\n } else {\n reject(err);\n }\n });\n });\n\n return this._promises['enums_' + (_enum || 'all')];\n }\n\n /**\n * Query a predefined object view.\n * @param {string} start The start ID.\n * @param {string} end The end ID.\n * @param {string} type The type of object.\n * @returns {Promise<Record<string, ioBroker.Object>>}\n */\n getObjectView(start, end, type) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n start = start || '';\n end = end || '\\u9999';\n\n return new Promise((resolve, reject) => {\n this._socket.emit('getObjectView', 'system', type, { startkey: start, endkey: end }, (err, res) => {\n if (!err) {\n const _res = {};\n if (res && res.rows) {\n for (let i = 0; i < res.rows.length; i++) {\n _res[res.rows[i].id] = res.rows[i].value;\n }\n }\n resolve(_res);\n } else {\n reject(err);\n }\n });\n });\n }\n\n /**\n * Get the stored certificates.\n * @param {boolean} [update] Force update.\n * @returns {Promise<{name: string; type: 'public' | 'private' | 'chained'}[]>}\n */\n getCertificates(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (this._promises.cert && !update) {\n return this._promises.cert;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.cert = this.getObject('system.certificates')\n .then(res => {\n const certs = [];\n if (res && res.native && res.native.certificates) {\n Object.keys(res.native.certificates).forEach(c => {\n const cert = res.native.certificates[c];\n if (!cert) {\n return;\n }\n const _cert = {\n name: c,\n type: ''\n };\n // If it is filename, it could be everything\n if (cert.length < 700 && (cert.indexOf('/') !== -1 || cert.indexOf('\\\\') !== -1)) {\n if (c.toLowerCase().includes('private')) {\n _cert.type = 'private';\n } else if (cert.toLowerCase().includes('private')) {\n _cert.type = 'private';\n } else if (c.toLowerCase().includes('public')) {\n _cert.type = 'public';\n } else if (cert.toLowerCase().includes('public')) {\n _cert.type = 'public';\n }\n certs.push(_cert);\n } else {\n _cert.type = (cert.substring(0, '-----BEGIN RSA PRIVATE KEY'.length) === '-----BEGIN RSA PRIVATE KEY' || cert.substring(0, '-----BEGIN PRIVATE KEY'.length) === '-----BEGIN PRIVATE KEY') ? 'private' : 'public';\n\n if (_cert.type === 'public') {\n const m = cert.split('-----END CERTIFICATE-----');\n if (m.filter(t => t.replace(/\\r\\n|\\r|\\n/, '').trim()).length > 1) {\n _cert.type = 'chained';\n }\n }\n\n certs.push(_cert);\n }\n });\n }\n return certs;\n });\n\n return this._promises.cert;\n }\n\n /**\n * Get the logs from a host (only for admin connection).\n * @param {string} host\n * @param {number} [linesNumber]\n * @returns {Promise<string[]>}\n */\n getLogs(host, linesNumber) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'getLogs', linesNumber || 200, lines =>\n resolve(lines)));\n }\n\n /**\n * Get the log files (only for admin connection).\n * @returns {Promise<string[]>}\n */\n getLogsFiles(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('readLogs', host, (err, files) =>\n err ? reject(err) : resolve(files)));\n }\n\n /**\n * Delete the logs from a host (only for admin connection).\n * @param {string} host\n * @returns {Promise<void>}\n */\n delLogs(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('sendToHost', host, 'delLogs', null, error =>\n error ? reject(error) : resolve()));\n }\n\n /**\n * Read the meta items.\n * @returns {Promise<ioBroker.Object[]>}\n */\n readMetaItems() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getObjectView', 'system', 'meta', { startkey: '', endkey: '\\u9999' }, (err, objs) =>\n err ? reject(err) : resolve(objs.rows && objs.rows.map(obj => obj.value))));\n }\n\n /**\n * Read the directory of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The directory name.\n * @returns {Promise<ioBroker.ReadDirResult[]>}\n */\n readDir(adapter, fileName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('readDir', adapter, fileName, (err, files) =>\n err ? reject(err) : resolve(files)));\n }\n\n /**\n * Read a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @param {boolean} base64 If it must be a base64 format\n * @returns {Promise<string>}\n */\n readFile(adapter, fileName, base64) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n if (!base64) {\n this._socket.emit('readFile', adapter, fileName, (err, data, type) => {\n //@ts-ignore\n err ? reject(err) : resolve({data, type});\n });\n } else {\n this._socket.emit('readFile64', adapter, fileName, base64, (err, data) =>\n err ? reject(err) : resolve(data));\n }\n });\n }\n\n /**\n * Write a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @param {Buffer | string} data The data (if it's a Buffer, it will be converted to Base64).\n * @returns {Promise<void>}\n */\n writeFile64(adapter, fileName, data) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n if (typeof data === 'string') {\n this._socket.emit('writeFile', adapter, fileName, data, err =>\n err ? reject(err) : resolve());\n } else {\n const base64 = btoa(\n new Uint8Array(data)\n .reduce((data, byte) => data + String.fromCharCode(byte), '')\n );\n\n this._socket.emit('writeFile64', adapter, fileName, base64, err =>\n err ? reject(err) : resolve());\n }\n });\n }\n\n /**\n * Rename a file or folder of an adapter.\n *\n * All files in folder will be renamed too.\n * @param {string} adapter The adapter name.\n * @param {string} oldName The file name of the file to be renamed.\n * @param {string} newName The new file name.\n * @returns {Promise<void>}\n */\n rename(adapter, oldName, newName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('rename', adapter, oldName, newName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Delete a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @returns {Promise<void>}\n */\n deleteFile(adapter, fileName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('unlink', adapter, fileName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Delete a folder of an adapter.\n * All files in folder will be deleted.\n * @param {string} adapter The adapter name.\n * @param {string} folderName The folder name.\n * @returns {Promise<void>}\n */\n deleteFolder(adapter, folderName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('deleteFolder', adapter, folderName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Get the list of all hosts.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getHosts(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.hosts) {\n return this._promises.hosts;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.hosts = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'host',\n {startkey: 'system.host.', endkey: 'system.host.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.hosts;\n }\n\n /**\n * Get the list of all users.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getUsers(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.users) {\n return this._promises.users;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.users = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'user',\n {startkey: 'system.user.', endkey: 'system.user.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.users;\n }\n\n /**\n * Get the list of all groups.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getGroups(update) {\n if (!update && this._promises.groups) {\n return this._promises.groups;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.groups = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'group',\n {startkey: 'system.group.', endkey: 'system.group.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.groups;\n }\n\n /**\n * Get the host information.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] optional read timeout.\n * @returns {Promise<any>}\n */\n getHostInfo(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n if (!update && this._promises['hostInfo' + host]) {\n return this._promises['hostInfo' + host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['hostInfo' + host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getHostInfo timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getHostInfo', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getHostInfo\"');\n } else if (!data) {\n reject('Cannot read \"getHostInfo\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises['hostInfo' + host];\n }\n\n /**\n * Get the host information (short version).\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] optional read timeout.\n * @returns {Promise<any>}\n */\n getHostInfoShort(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n if (!update && this._promises['hostInfoShort' + host]) {\n return this._promises['hostInfoShort' + host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['hostInfoShort' + host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('hostInfoShort timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getHostInfoShort', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getHostInfoShort\"');\n } else if (!data) {\n reject('Cannot read \"getHostInfoShort\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises['hostInfoShort' + host];\n }\n\n /**\n * Get the repository.\n * @param {string} host\n * @param {any} [args]\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] timeout in ms.\n * @returns {Promise<any>}\n */\n getRepository(host, args, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.repo) {\n return this._promises.repo;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.repo = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getRepository timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getRepository', args, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getRepository\"');\n } else if (!data) {\n reject('Cannot read \"getRepository\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.repo;\n }\n\n /**\n * Get the installed.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [cmdTimeout] timeout in ms (optional)\n * @returns {Promise<any>}\n */\n getInstalled(host, update, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n this._promises.installed = this._promises.installed || {};\n\n if (!update && this._promises.installed[host]) {\n return this._promises.installed[host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.installed[host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getInstalled timeout');\n }\n }, cmdTimeout || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getInstalled', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getInstalled\"');\n } else if (!data) {\n reject('Cannot read \"getInstalled\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.installed[host];\n }\n\n /**\n * Execute a command on a host.\n * @param {string} host The host name.\n * @param {string} cmd The command.\n * @param {string} cmdId The command ID.\n * @param {number} cmdTimeout Timeout of command in ms\n * @returns {Promise<void>}\n */\n cmdExec(host, cmd, cmdId, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith(host)) {\n host += 'system.host.' + host;\n }\n\n return new Promise((resolve, reject) => {\n let timeout = cmdTimeout && setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('cmdExec timeout');\n }\n }, cmdTimeout);\n\n this._socket.emit('cmdExec', host, cmdId, cmd, null, err => {\n if (!cmdTimeout || timeout) {\n timeout && clearTimeout(timeout);\n timeout = null;\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n }\n });\n });\n }\n\n /**\n * Checks if a given feature is supported.\n * @param {string} feature The feature to check.\n * @param {boolean} [update] Force update.\n * @returns {Promise<any>}\n */\n checkFeatureSupported(feature, update) {\n if (!update && this._promises['supportedFeatures_' + feature]) {\n return this._promises['supportedFeatures_' + feature];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['supportedFeatures_' + feature] = new Promise((resolve, reject) =>\n this._socket.emit('checkFeatureSupported', feature, (err, features) => {\n err ? reject(err) : resolve(features)\n }));\n\n return this._promises['supportedFeatures_' + feature];\n }\n\n /**\n * Read the base settings of a given host.\n * @param {string} host\n * @returns {Promise<any>}\n */\n readBaseSettings(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return this.checkFeatureSupported('CONTROLLER_READWRITE_BASE_SETTINGS')\n .then(result => {\n if (result) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('readBaseSettings timeout');\n }\n }, this.props.cmdTimeout);\n\n if (host.startsWith('system.host.')) {\n host = host.replace(/^system\\.host\\./, '');\n }\n\n this._socket.emit('sendToHost', host, 'readBaseSettings', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n\n if (data === PERMISSION_ERROR) {\n reject('May not read \"BaseSettings\"');\n } else if (!data) {\n reject('Cannot read \"BaseSettings\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n } else {\n return Promise.reject('Not supported');\n }\n });\n }\n\n /**\n * Write the base settings of a given host.\n * @param {string} host\n * @param {any} config\n * @returns {Promise<any>}\n */\n writeBaseSettings(host, config) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return this.checkFeatureSupported('CONTROLLER_READWRITE_BASE_SETTINGS')\n .then(result => {\n if (result) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('writeBaseSettings timeout');\n }\n }, this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'writeBaseSettings', config, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n\n if (data === PERMISSION_ERROR) {\n reject('May not write \"BaseSettings\"');\n } else if (!data) {\n reject('Cannot write \"BaseSettings\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n } else {\n return Promise.reject('Not supported');\n }\n })\n }\n\n /**\n * Send command to restart the iobroker on host\n * @param {string} host\n * @returns {Promise<any>}\n */\n restartController(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) => {\n this._socket.emit('sendToHost', host, 'restartController', null, error => {\n error ? reject(error) : resolve(true);\n });\n });\n }\n\n /**\n * Read statistics information from host\n * @param {string} host\n * @param {string} typeOfDiag one of none, normal, no-city, extended\n * @returns {Promise<any>}\n */\n getDiagData(host, typeOfDiag) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise(resolve => {\n this._socket.emit('sendToHost', host, 'getDiagData', typeOfDiag, result =>\n resolve(result));\n });\n }\n\n /**\n * Read all states (which might not belong to this adapter) which match the given pattern.\n * @param {string} pattern\n * @returns {ioBroker.GetStatesPromise}\n */\n getForeignStates(pattern) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n if (Connection.isWeb()) {\n return new Promise((resolve, reject) =>\n this._socket.emit('getStates', pattern || '*', (err, states) =>\n err ? reject(err) : resolve(states)));\n } else {\n return new Promise((resolve, reject) =>\n this._socket.emit('getForeignStates', pattern || '*', (err, states) =>\n err ? reject(err) : resolve(states)));\n }\n }\n\n /**\n * Get foreign objects by pattern, by specific type and resolve their enums.\n * @param {string} pattern\n * @param {string} [type]\n * @returns {ioBroker.GetObjectsPromise}\n */\n getForeignObjects(pattern, type) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getForeignObjects', pattern || '*', type, (err, states) =>\n err ? reject(err) : resolve(states)));\n }\n\n /**\n * Gets the system configuration.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.OtherObject>}\n */\n getSystemConfig(update) {\n if (!update && this._promises.systemConfig) {\n return this._promises.systemConfig;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.systemConfig = this.getObject('system.config')\n .then(systemConfig => {\n //@ts-ignore\n systemConfig = systemConfig || {};\n //@ts-ignore\n systemConfig.common = systemConfig.common || {};\n //@ts-ignore\n systemConfig.native = systemConfig.native || {};\n return systemConfig;\n });\n\n return this._promises.systemConfig;\n }\n\n /**\n * Sets the system configuration.\n * @param {ioBroker.SettableObjectWorker<ioBroker.OtherObject>} obj\n * @returns {Promise<ioBroker.SettableObjectWorker<ioBroker.OtherObject>>}\n */\n setSystemConfig(obj) {\n return this.setObject('system.config', obj)\n .then(() => this._promises.systemConfig = Promise.resolve(obj));\n }\n\n /**\n * Get the raw socket.io socket.\n * @returns {any}\n */\n getRawSocket() {\n return this._socket;\n }\n\n /**\n * Get the history of a given state.\n * @param {string} id\n * @param {ioBroker.GetHistoryOptions} options\n * @returns {Promise<ioBroker.GetHistoryResult>}\n */\n getHistory(id, options) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getHistory', id, options, (err, values) =>\n err ? reject(err) : resolve(values)));\n }\n\n /**\n * Get the history of a given state.\n * @param {string} id\n * @param {ioBroker.GetHistoryOptions} options\n * @returns {Promise<{values: ioBroker.GetHistoryResult; sesionId: string; stepIgnore: number}>}\n */\n getHistoryEx(id, options) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getHistory', id, options, (err, values, stepIgnore, sessionId) =>\n err ? reject(err) : resolve({ values, sessionId, stepIgnore })));\n }\n\n /**\n * Change the password of the given user.\n * @param {string} user\n * @param {string} password\n * @returns {Promise<void>}\n */\n changePassword(user, password) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('changePassword', user, password, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Get the IP addresses of the given host.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @returns {Promise<string[]>}\n */\n getIpAddresses(host, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host = 'system.host.' + host;\n }\n\n if (!update && this._promises['IPs_' + host]) {\n return this._promises['IPs_' + host];\n }\n this._promises['IPs_' + host] = this.getObject(host)\n .then(obj => obj && obj.common ? obj.common.address || [] : []);\n\n return this._promises['IPs_' + host];\n }\n\n /**\n * Get the IP addresses with interface names of the given host or find host by IP.\n * @param {string} ipOrHostName\n * @param {boolean} [update] Force update.\n * @returns {Promise<any[<name, address, family>]>}\n */\n getHostByIp(ipOrHostName, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (ipOrHostName.startsWith('system.host.')) {\n ipOrHostName = ipOrHostName.replace(/^system\\.host\\./, '');\n }\n\n if (!update && this._promises['rIPs_' + ipOrHostName]) {\n return this._promises['rIPs_' + ipOrHostName];\n }\n this._promises['rIPs_' + ipOrHostName] = new Promise(resolve =>\n this._socket.emit('getHostByIp', ipOrHostName, (ip, host) => {\n const IPs4 = [{name: '[IPv4] 0.0.0.0 - Listen on all IPs', address: '0.0.0.0', family: 'ipv4'}];\n const IPs6 = [{name: '[IPv6] :: - Listen on all IPs', address: '::', family: 'ipv6'}];\n if (host?.native?.hardware?.networkInterfaces) {\n for (const eth in host.native.hardware.networkInterfaces) {\n if (!host.native.hardware.networkInterfaces.hasOwnProperty(eth)) {\n continue;\n }\n for (let num = 0; num < host.native.hardware.networkInterfaces[eth].length; num++) {\n if (host.native.hardware.networkInterfaces[eth][num].family !== 'IPv6') {\n IPs4.push({name: `[${host.native.hardware.networkInterfaces[eth][num].family}] ${host.native.hardware.networkInterfaces[eth][num].address} - ${eth}`, address: host.native.hardware.networkInterfaces[eth][num].address, family: 'ipv4'});\n } else {\n IPs6.push({name: `[${host.native.hardware.networkInterfaces[eth][num].family}] ${host.native.hardware.networkInterfaces[eth][num].address} - ${eth}`, address: host.native.hardware.networkInterfaces[eth][num].address, family: 'ipv6'});\n }\n }\n }\n }\n for (let i = 0; i < IPs6.length; i++) {\n IPs4.push(IPs6[i]);\n }\n resolve(IPs4);\n }));\n\n return this._promises['rIPs_' + ipOrHostName];\n }\n\n /**\n * Encrypt a text\n * @param {string} text\n * @returns {Promise<string>}\n */\n encrypt(text) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('encrypt', text, (err, text) =>\n err ? reject(err) : resolve(text)));\n }\n\n /**\n * Decrypt a text\n * @param {string} encryptedText\n * @returns {Promise<string>}\n */\n decrypt(encryptedText) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('decrypt', encryptedText, (err, text) =>\n err ? reject(err) : resolve(text)));\n }\n\n /**\n * Gets the version.\n * @returns {Promise<{version: string; serverName: string}>}\n */\n getVersion(update) {\n if (update && this._promises.version) {\n this._promises.version = null;\n }\n\n this._promises.version = this._promises.version || new Promise((resolve, reject) =>\n this._socket.emit('getVersion', (err, version, serverName) => {\n // support of old socket.io\n if (err && !version && typeof err === 'string' && err.match(/\\d+\\.\\d+\\.\\d+/)) {\n resolve({ version: err, serverName: 'socketio' });\n } else {\n return err ? reject(err) : resolve({ version, serverName });\n }\n }));\n\n return this._promises.version;\n }\n\n /**\n * Gets the web server name.\n * @returns {Promise<string>}\n */\n getWebServerName() {\n this._promises.webName = this._promises.webName || new Promise((resolve, reject) =>\n this._socket.emit('getAdapterName', (err, name) =>\n err ? reject(err) : resolve(name)));\n\n return this._promises.webName;\n }\n\n /**\n * Gets the admin version.\n * @deprecated use getVersion()\n * @returns {Promise<{version: string; serverName: string}>}\n */\n getAdminVersion() {\n console.log('Deprecated: use getVersion');\n return this.getVersion();\n }\n\n /**\n * Change access rights for file\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @param {object} [options] like {mode: 0x644}\n * @returns {Promise<{entries: array}>}\n */\n chmodFile(adapter, filename, options) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('chmodFile', adapter, filename, options, (err, entries, id) =>\n err ? reject(err) : resolve({entries, id})));\n }\n\n /**\n * Change owner or/and owner group for file\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @param {object} [options] like {owner: 'newOwner', ownerGroup: 'newGroup'}\n * @returns {Promise<{entries: array}>}\n */\n chownFile(adapter, filename, options) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('chownFile', adapter, filename, options, (err, entries, id) =>\n err ? reject(err) : resolve({entries, id})));\n }\n\n /**\n * Check if the file exists\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @returns {Promise<boolean>}\n */\n fileExists(adapter, filename) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('fileExists', adapter, filename, (err, exists) =>\n err ? reject(err) : resolve(exists)));\n }\n\n /**\n * Get the alarm notifications from a host (only for admin connection).\n * @param {string} host\n * @param {string} [category] - optional\n * @returns {Promise<any>}\n */\n getNotifications(host, category) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'getNotifications', { category }, notifications =>\n resolve(notifications)));\n }\n\n /**\n * Clear the alarm notifications on a host (only for admin connection).\n * @param {string} host\n * @param {string} [category] - optional\n * @returns {Promise<any>}\n */\n clearNotifications(host, category) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'clearNotifications', {category}, notifications =>\n resolve(notifications)));\n }\n\n /**\n * Read if only easy mode is allowed (only for admin connection).\n * @returns {Promise<boolean>}\n */\n getIsEasyModeStrict() {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getIsEasyModeStrict', (error, isStrict) =>\n error ? reject(error) : resolve(isStrict)));\n }\n\n /**\n * Read easy mode configuration (only for admin connection).\n * @returns {Promise<any>}\n */\n getEasyMode() {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getEasyMode', (error, config) =>\n error ? reject(error) : resolve(config)));\n }\n\n /**\n * Read current user\n * @returns {Promise<string>}\n */\n getCurrentUser() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise(resolve =>\n this._socket.emit('authEnabled', (isSecure, user) =>\n resolve(user)));\n }\n\n getCurrentSession(cmdTimeout) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) => {\n const controller = new AbortController();\n\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n controller.abort();\n reject('getCurrentSession timeout');\n }\n }, cmdTimeout || 5000);\n\n return fetch('./session', { signal: controller.signal })\n .then(res => res.json())\n .then(json => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(json);\n }\n })\n .catch(e =>\n reject('getCurrentSession: ' + e));\n });\n }\n\n /**\n * Read adapter ratings\n * @returns {Promise<any>}\n */\n getRatings(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getRatings', update, (err, ratings) =>\n err ? reject(err) : resolve(ratings)));\n }\n\n /**\n * Read current web, socketio or admin namespace, like admin.0\n * @returns {Promise<string>}\n */\n getCurrentInstance() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.currentInstance = this._promises.currentInstance ||\n new Promise((resolve, reject) =>\n this._socket.emit('getCurrentInstance', (err, namespace) =>\n err ? reject(err) : resolve(namespace)));\n\n return this._promises.currentInstance;\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactAdapters(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.compactAdapters) {\n return this._promises.compactAdapters;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n this._promises.compactAdapters = new Promise((resolve, reject) =>\n this._socket.emit('getCompactAdapters', (err, adapters) =>\n err ? reject(err) : resolve(adapters)));\n\n return this._promises.compactAdapters;\n }\n\n getAdaptersResetCache(adapter) {\n adapter = adapter || '';\n this._promises.compactAdapters = null;\n this._promises['adapter_' + adapter] = null;\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactInstances(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.compactInstances) {\n return this._promises.compactInstances;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.compactInstances = new Promise((resolve, reject) =>\n this._socket.emit('getCompactInstances', (err, instances) =>\n err ? reject(err) : resolve(instances)));\n\n return this._promises.compactInstances;\n }\n\n getAdapternInstancesResetCache(adapter) {\n adapter = adapter || '';\n this._promises.compactInstances = null;\n this._promises['instances_' + adapter] = null;\n }\n\n // returns very optimized information for adapters to minimize connection load\n // reads only version of installed adapter\n getCompactInstalled(host, update, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n this._promises.installedCompact = this._promises.installedCompact || {};\n\n if (!update && this._promises.installedCompact[host]) {\n return this._promises.installedCompact[host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.installedCompact[host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getCompactInstalled timeout');\n }\n }, cmdTimeout || this.props.cmdTimeout);\n\n this._socket.emit('getCompactInstalled', host, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getCompactInstalled\"');\n } else if (!data) {\n reject('Cannot read \"getCompactInstalled\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.installedCompact[host];\n }\n\n // returns very optimized information for adapters to minimize connection load\n // reads only version of installed adapter\n getCompactSystemRepositories(update, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n this._promises.installedCompact = this._promises.installedCompact || {};\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.getCompactSystemRepositories = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getCompactSystemRepositories timeout');\n }\n }, cmdTimeout || this.props.cmdTimeout);\n\n this._socket.emit('getCompactSystemRepositories', data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getCompactSystemRepositories\"');\n } else if (!data) {\n reject('Cannot read \"getCompactSystemRepositories\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.getCompactSystemRepositories;\n }\n\n getInstalledResetCache(host) {\n if (this._promises.installedCompact) {\n this._promises.installedCompact[host] = null;\n }\n if (this._promises.installed) {\n this._promises.installed[host] = null;\n }\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactSystemConfig(update) {\n if (!update && this._promises.systemConfigCommon) {\n return this._promises.systemConfigCommon;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.systemConfigCommon = new Promise((resolve, reject) =>\n this._socket.emit('getCompactSystemConfig', (err, systemConfig) =>\n err ? reject(err) : resolve(systemConfig)));\n\n return this._promises.systemConfigCommon;\n }\n\n /**\n * Get the repository in compact form (only version and icon).\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] timeout in ms.\n * @returns {Promise<any>}\n */\n getCompactRepository(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!update && this._promises.repoCompact) {\n return this._promises.repoCompact;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.repoCompact = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getCompactRepository timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('getCompactRepository', host, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getCompactRepository\"');\n } else if (!data) {\n reject('Cannot read \"getCompactRepository\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.repoCompact;\n }\n\n getInstalledResetCache(host) {\n this._promises.repoCompact = null;\n this._promises.repo = null;\n }\n\n /**\n * Get the list of all hosts in compact form (only _id, common.name, common.icon, common.color, native.hardware.networkInterfaces)\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getCompactHosts(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.hostsCompact) {\n return this._promises.hostsCompact;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.hostsCompact = new Promise((resolve, reject) =>\n this._socket.emit('getCompactHosts', (err, hosts) =>\n err ? reject(err) : resolve(hosts)));\n\n return this._promises.hostsCompact;\n }\n\n /**\n * Get uuid\n * @returns {Promise<ioBroker.Object[]>}\n */\n getUuid() {\n if (this._promises.uuid) {\n return this._promises.uuid;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.uuid = this.getObject('system.meta.uuid')\n //@ts-ignore\n .then(obj => obj?.native?.uuid);\n\n return this._promises.uuid;\n }\n\n /**\n * Send log to ioBroker log\n * @param {string} [text] Log text\n * @param {string} [level] `info`, `debug`, `warn`, `error` or `silly`\n * @returns {void}\n */\n log(text, level) {\n text && this._socket.emit('log', text, level || 'debug');\n }\n\n /**\n * Logout current user\n * @returns {Promise<null>}\n */\n logout() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('logout', err =>\n err ? reject(err) : resolve(null)));\n }\n}\n\nConnection.Connection = {\n onLog: PropTypes.func,\n onReady: PropTypes.func,\n onProgress: PropTypes.func,\n};\n\nexport default Connection;\n"],"mappings":"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"}
|