UNPKG

domoticz-api-linker

Version:

Domoticz API Javascript Bridge Connector

2,731 lines 103 kB
var DomoticzApi = (function (exports) {
  'use strict';

  function ownKeys(object, enumerableOnly) {
    var keys = Object.keys(object);
    if (Object.getOwnPropertySymbols) {
      var symbols = Object.getOwnPropertySymbols(object);
      enumerableOnly && (symbols = symbols.filter(function (sym) {
        return Object.getOwnPropertyDescriptor(object, sym).enumerable;
      })), keys.push.apply(keys, symbols);
    }
    return keys;
  }
  function _objectSpread2(target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = null != arguments[i] ? arguments[i] : {};
      i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
        _defineProperty(target, key, source[key]);
      }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
      });
    }
    return target;
  }
  function _regeneratorRuntime() {
    _regeneratorRuntime = function () {
      return exports;
    };
    var exports = {},
      Op = Object.prototype,
      hasOwn = Op.hasOwnProperty,
      $Symbol = "function" == typeof Symbol ? Symbol : {},
      iteratorSymbol = $Symbol.iterator || "@@iterator",
      asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
      toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
    function define(obj, key, value) {
      return Object.defineProperty(obj, key, {
        value: value,
        enumerable: !0,
        configurable: !0,
        writable: !0
      }), obj[key];
    }
    try {
      define({}, "");
    } catch (err) {
      define = function (obj, key, value) {
        return obj[key] = value;
      };
    }
    function wrap(innerFn, outerFn, self, tryLocsList) {
      var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
        generator = Object.create(protoGenerator.prototype),
        context = new Context(tryLocsList || []);
      return generator._invoke = function (innerFn, self, context) {
        var state = "suspendedStart";
        return function (method, arg) {
          if ("executing" === state) throw new Error("Generator is already running");
          if ("completed" === state) {
            if ("throw" === method) throw arg;
            return doneResult();
          }
          for (context.method = method, context.arg = arg;;) {
            var delegate = context.delegate;
            if (delegate) {
              var delegateResult = maybeInvokeDelegate(delegate, context);
              if (delegateResult) {
                if (delegateResult === ContinueSentinel) continue;
                return delegateResult;
              }
            }
            if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
              if ("suspendedStart" === state) throw state = "completed", context.arg;
              context.dispatchException(context.arg);
            } else "return" === context.method && context.abrupt("return", context.arg);
            state = "executing";
            var record = tryCatch(innerFn, self, context);
            if ("normal" === record.type) {
              if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
              return {
                value: record.arg,
                done: context.done
              };
            }
            "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
          }
        };
      }(innerFn, self, context), generator;
    }
    function tryCatch(fn, obj, arg) {
      try {
        return {
          type: "normal",
          arg: fn.call(obj, arg)
        };
      } catch (err) {
        return {
          type: "throw",
          arg: err
        };
      }
    }
    exports.wrap = wrap;
    var ContinueSentinel = {};
    function Generator() {}
    function GeneratorFunction() {}
    function GeneratorFunctionPrototype() {}
    var IteratorPrototype = {};
    define(IteratorPrototype, iteratorSymbol, function () {
      return this;
    });
    var getProto = Object.getPrototypeOf,
      NativeIteratorPrototype = getProto && getProto(getProto(values([])));
    NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
    var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
    function defineIteratorMethods(prototype) {
      ["next", "throw", "return"].forEach(function (method) {
        define(prototype, method, function (arg) {
          return this._invoke(method, arg);
        });
      });
    }
    function AsyncIterator(generator, PromiseImpl) {
      function invoke(method, arg, resolve, reject) {
        var record = tryCatch(generator[method], generator, arg);
        if ("throw" !== record.type) {
          var result = record.arg,
            value = result.value;
          return value && "object" == typeof value && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
            invoke("next", value, resolve, reject);
          }, function (err) {
            invoke("throw", err, resolve, reject);
          }) : PromiseImpl.resolve(value).then(function (unwrapped) {
            result.value = unwrapped, resolve(result);
          }, function (error) {
            return invoke("throw", error, resolve, reject);
          });
        }
        reject(record.arg);
      }
      var previousPromise;
      this._invoke = function (method, arg) {
        function callInvokeWithMethodAndArg() {
          return new PromiseImpl(function (resolve, reject) {
            invoke(method, arg, resolve, reject);
          });
        }
        return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
      };
    }
    function maybeInvokeDelegate(delegate, context) {
      var method = delegate.iterator[context.method];
      if (undefined === method) {
        if (context.delegate = null, "throw" === context.method) {
          if (delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel;
          context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method");
        }
        return ContinueSentinel;
      }
      var record = tryCatch(method, delegate.iterator, context.arg);
      if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
      var info = record.arg;
      return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
    }
    function pushTryEntry(locs) {
      var entry = {
        tryLoc: locs[0]
      };
      1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
    }
    function resetTryEntry(entry) {
      var record = entry.completion || {};
      record.type = "normal", delete record.arg, entry.completion = record;
    }
    function Context(tryLocsList) {
      this.tryEntries = [{
        tryLoc: "root"
      }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
    }
    function values(iterable) {
      if (iterable) {
        var iteratorMethod = iterable[iteratorSymbol];
        if (iteratorMethod) return iteratorMethod.call(iterable);
        if ("function" == typeof iterable.next) return iterable;
        if (!isNaN(iterable.length)) {
          var i = -1,
            next = function next() {
              for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
              return next.value = undefined, next.done = !0, next;
            };
          return next.next = next;
        }
      }
      return {
        next: doneResult
      };
    }
    function doneResult() {
      return {
        value: undefined,
        done: !0
      };
    }
    return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
      var ctor = "function" == typeof genFun && genFun.constructor;
      return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
    }, exports.mark = function (genFun) {
      return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
    }, exports.awrap = function (arg) {
      return {
        __await: arg
      };
    }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
      return this;
    }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
      void 0 === PromiseImpl && (PromiseImpl = Promise);
      var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
      return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
        return result.done ? result.value : iter.next();
      });
    }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
      return this;
    }), define(Gp, "toString", function () {
      return "[object Generator]";
    }), exports.keys = function (object) {
      var keys = [];
      for (var key in object) keys.push(key);
      return keys.reverse(), function next() {
        for (; keys.length;) {
          var key = keys.pop();
          if (key in object) return next.value = key, next.done = !1, next;
        }
        return next.done = !0, next;
      };
    }, exports.values = values, Context.prototype = {
      constructor: Context,
      reset: function (skipTempReset) {
        if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
      },
      stop: function () {
        this.done = !0;
        var rootRecord = this.tryEntries[0].completion;
        if ("throw" === rootRecord.type) throw rootRecord.arg;
        return this.rval;
      },
      dispatchException: function (exception) {
        if (this.done) throw exception;
        var context = this;
        function handle(loc, caught) {
          return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
        }
        for (var i = this.tryEntries.length - 1; i >= 0; --i) {
          var entry = this.tryEntries[i],
            record = entry.completion;
          if ("root" === entry.tryLoc) return handle("end");
          if (entry.tryLoc <= this.prev) {
            var hasCatch = hasOwn.call(entry, "catchLoc"),
              hasFinally = hasOwn.call(entry, "finallyLoc");
            if (hasCatch && hasFinally) {
              if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
              if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
            } else if (hasCatch) {
              if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
            } else {
              if (!hasFinally) throw new Error("try statement without catch or finally");
              if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
            }
          }
        }
      },
      abrupt: function (type, arg) {
        for (var i = this.tryEntries.length - 1; i >= 0; --i) {
          var entry = this.tryEntries[i];
          if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
            var finallyEntry = entry;
            break;
          }
        }
        finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
        var record = finallyEntry ? finallyEntry.completion : {};
        return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
      },
      complete: function (record, afterLoc) {
        if ("throw" === record.type) throw record.arg;
        return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
      },
      finish: function (finallyLoc) {
        for (var i = this.tryEntries.length - 1; i >= 0; --i) {
          var entry = this.tryEntries[i];
          if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
        }
      },
      catch: function (tryLoc) {
        for (var i = this.tryEntries.length - 1; i >= 0; --i) {
          var entry = this.tryEntries[i];
          if (entry.tryLoc === tryLoc) {
            var record = entry.completion;
            if ("throw" === record.type) {
              var thrown = record.arg;
              resetTryEntry(entry);
            }
            return thrown;
          }
        }
        throw new Error("illegal catch attempt");
      },
      delegateYield: function (iterable, resultName, nextLoc) {
        return this.delegate = {
          iterator: values(iterable),
          resultName: resultName,
          nextLoc: nextLoc
        }, "next" === this.method && (this.arg = undefined), ContinueSentinel;
      }
    }, exports;
  }
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
    if (info.done) {
      resolve(value);
    } else {
      Promise.resolve(value).then(_next, _throw);
    }
  }
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
        args = arguments;
      return new Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
        _next(undefined);
      });
    };
  }
  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    Object.defineProperty(Constructor, "prototype", {
      writable: false
    });
    return Constructor;
  }
  function _defineProperty(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, {
      constructor: {
        value: subClass,
        writable: true,
        configurable: true
      }
    });
    Object.defineProperty(subClass, "prototype", {
      writable: false
    });
    if (superClass) _setPrototypeOf(subClass, superClass);
  }
  function _getPrototypeOf(o) {
    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
      return o.__proto__ || Object.getPrototypeOf(o);
    };
    return _getPrototypeOf(o);
  }
  function _setPrototypeOf(o, p) {
    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
      o.__proto__ = p;
      return o;
    };
    return _setPrototypeOf(o, p);
  }
  function _isNativeReflectConstruct() {
    if (typeof Reflect === "undefined" || !Reflect.construct) return false;
    if (Reflect.construct.sham) return false;
    if (typeof Proxy === "function") return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _assertThisInitialized(self) {
    if (self === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self;
  }
  function _possibleConstructorReturn(self, call) {
    if (call && (typeof call === "object" || typeof call === "function")) {
      return call;
    } else if (call !== void 0) {
      throw new TypeError("Derived constructors may only return object or undefined");
    }
    return _assertThisInitialized(self);
  }
  function _createSuper(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf(Derived),
        result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn(this, result);
    };
  }
  function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
  }
  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }
  function _iterableToArrayLimit(arr, i) {
    var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
    if (_i == null) return;
    var _arr = [];
    var _n = true;
    var _d = false;
    var _s, _e;
    try {
      for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
        _arr.push(_s.value);
        if (i && _arr.length === i) break;
      }
    } catch (err) {
      _d = true;
      _e = err;
    } finally {
      try {
        if (!_n && _i["return"] != null) _i["return"]();
      } finally {
        if (_d) throw _e;
      }
    }
    return _arr;
  }
  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" && o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  }
  function _arrayLikeToArray(arr, len) {
    if (len == null || len > arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
    return arr2;
  }
  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  function b64encode(data) {
    return typeof window === 'undefined' ? b64encodeNode : b64encodeBrowser(data);
  }
  function b64encodeBrowser(data) {
    return btoa(data);
  }
  function b64encodeNode(data) {
    Buffer.from(data, 'base64');
  }

  var DomoticzApiConnector = /*#__PURE__*/function () {
    function DomoticzApiConnector(options) {
      _classCallCheck(this, DomoticzApiConnector);
      _defineProperty(this, "hostname", '');
      _defineProperty(this, "username", '');
      _defineProperty(this, "password", '');
      _defineProperty(this, "useSSL", void 0);
      _defineProperty(this, "port", void 0);
      _defineProperty(this, "endpoint", '');
      this.hostname = options.hostname;
      this.username = options.username != null ? options.username : '';
      this.password = options.password != null ? options.password : '';
      this.useSSL = options.useSSL != null ? options.useSSL : false;
      this.port = options.port != null ? options.port : 80;
      this.endpoint = this.url('json.htm');
    }
    _createClass(DomoticzApiConnector, [{
      key: "url",
      value: function url(uri) {
        var proto = "http".concat(this.useSSL === true ? 's' : '', "://");
        var host = this.hostname;
        var port = this.port > 0 ? this.port : this.useSSL === true ? 443 : 80;
        var username = this.username !== undefined ? b64encode(this.username) : '';
        var password = this.password !== undefined ? b64encode(this.password) : '';
        var credentials = "?username=".concat(username.toString(), "&password=").concat(password.toString());
        return "".concat(proto).concat(host, ":").concat(port.toString(), "/").concat(uri).concat(credentials);
      }

      // DOMOTICZ NATIVE CALLS
    }, {
      key: "cameras",
      value: function () {
        var _cameras = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
          return _regeneratorRuntime().wrap(function _callee$(_context) {
            while (1) {
              switch (_context.prev = _context.next) {
                case 0:
                  _context.next = 2;
                  return this.domoticz({
                    type: 'cameras'
                  });
                case 2:
                  return _context.abrupt("return", _context.sent);
                case 3:
                case "end":
                  return _context.stop();
              }
            }
          }, _callee, this);
        }));
        function cameras() {
          return _cameras.apply(this, arguments);
        }
        return cameras;
      }()
    }, {
      key: "command",
      value: function () {
        var _command = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(data, postData) {
          return _regeneratorRuntime().wrap(function _callee2$(_context2) {
            while (1) {
              switch (_context2.prev = _context2.next) {
                case 0:
                  _context2.next = 2;
                  return this.domoticz(_objectSpread2({
                    type: 'command'
                  }, data), postData);
                case 2:
                  return _context2.abrupt("return", _context2.sent);
                case 3:
                case "end":
                  return _context2.stop();
              }
            }
          }, _callee2, this);
        }));
        function command(_x, _x2) {
          return _command.apply(this, arguments);
        }
        return command;
      }()
    }, {
      key: "hardware",
      value: function () {
        var _hardware = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
          return _regeneratorRuntime().wrap(function _callee3$(_context3) {
            while (1) {
              switch (_context3.prev = _context3.next) {
                case 0:
                  _context3.next = 2;
                  return this.domoticz({
                    type: 'hardware'
                  });
                case 2:
                  return _context3.abrupt("return", _context3.sent);
                case 3:
                case "end":
                  return _context3.stop();
              }
            }
          }, _callee3, this);
        }));
        function hardware() {
          return _hardware.apply(this, arguments);
        }
        return hardware;
      }()
    }, {
      key: "devices",
      value: function () {
        var _devices = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(data) {
          return _regeneratorRuntime().wrap(function _callee4$(_context4) {
            while (1) {
              switch (_context4.prev = _context4.next) {
                case 0:
                  _context4.next = 2;
                  return this.domoticz(_objectSpread2({
                    type: 'devices'
                  }, data));
                case 2:
                  return _context4.abrupt("return", _context4.sent);
                case 3:
                case "end":
                  return _context4.stop();
              }
            }
          }, _callee4, this);
        }));
        function devices(_x3) {
          return _devices.apply(this, arguments);
        }
        return devices;
      }()
    }, {
      key: "events",
      value: function () {
        var _events = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(data) {
          return _regeneratorRuntime().wrap(function _callee5$(_context5) {
            while (1) {
              switch (_context5.prev = _context5.next) {
                case 0:
                  _context5.next = 2;
                  return this.domoticz(_objectSpread2({
                    type: 'events'
                  }, data));
                case 2:
                  return _context5.abrupt("return", _context5.sent);
                case 3:
                case "end":
                  return _context5.stop();
              }
            }
          }, _callee5, this);
        }));
        function events(_x4) {
          return _events.apply(this, arguments);
        }
        return events;
      }()
    }, {
      key: "notifications",
      value: function () {
        var _notifications = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(data) {
          return _regeneratorRuntime().wrap(function _callee6$(_context6) {
            while (1) {
              switch (_context6.prev = _context6.next) {
                case 0:
                  _context6.next = 2;
                  return this.domoticz(_objectSpread2({
                    type: 'notifications'
                  }, data));
                case 2:
                  return _context6.abrupt("return", _context6.sent);
                case 3:
                case "end":
                  return _context6.stop();
              }
            }
          }, _callee6, this);
        }));
        function notifications(_x5) {
          return _notifications.apply(this, arguments);
        }
        return notifications;
      }()
    }, {
      key: "scenes",
      value: function () {
        var _scenes = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
          return _regeneratorRuntime().wrap(function _callee7$(_context7) {
            while (1) {
              switch (_context7.prev = _context7.next) {
                case 0:
                  _context7.next = 2;
                  return this.domoticz({
                    type: 'scenes'
                  });
                case 2:
                  return _context7.abrupt("return", _context7.sent);
                case 3:
                case "end":
                  return _context7.stop();
              }
            }
          }, _callee7, this);
        }));
        function scenes() {
          return _scenes.apply(this, arguments);
        }
        return scenes;
      }()
    }, {
      key: "setUsed",
      value: function () {
        var _setUsed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(data) {
          return _regeneratorRuntime().wrap(function _callee8$(_context8) {
            while (1) {
              switch (_context8.prev = _context8.next) {
                case 0:
                  _context8.next = 2;
                  return this.domoticz(_objectSpread2({
                    type: 'setUsed'
                  }, data));
                case 2:
                  return _context8.abrupt("return", _context8.sent);
                case 3:
                case "end":
                  return _context8.stop();
              }
            }
          }, _callee8, this);
        }));
        function setUsed(_x6) {
          return _setUsed.apply(this, arguments);
        }
        return setUsed;
      }()
    }, {
      key: "checkCredentials",
      value: function () {
        var _checkCredentials = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
          return _regeneratorRuntime().wrap(function _callee9$(_context9) {
            while (1) {
              switch (_context9.prev = _context9.next) {
                case 0:
                  _context9.next = 2;
                  return this.__generic('GET', "".concat(this.url('json.htm'), "&api-call"));
                case 2:
                  return _context9.abrupt("return", _context9.sent);
                case 3:
                case "end":
                  return _context9.stop();
              }
            }
          }, _callee9, this);
        }));
        function checkCredentials() {
          return _checkCredentials.apply(this, arguments);
        }
        return checkCredentials;
      }() // TOOLING
    }, {
      key: "get",
      value: function () {
        var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(uri) {
          return _regeneratorRuntime().wrap(function _callee10$(_context10) {
            while (1) {
              switch (_context10.prev = _context10.next) {
                case 0:
                  _context10.next = 2;
                  return this.__generic('GET', this.url("".concat(uri)));
                case 2:
                  return _context10.abrupt("return", _context10.sent);
                case 3:
                case "end":
                  return _context10.stop();
              }
            }
          }, _callee10, this);
        }));
        function get(_x7) {
          return _get.apply(this, arguments);
        }
        return get;
      }()
    }, {
      key: "domoticz",
      value: function () {
        var _domoticz = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(data, postData) {
          var method;
          return _regeneratorRuntime().wrap(function _callee11$(_context11) {
            while (1) {
              switch (_context11.prev = _context11.next) {
                case 0:
                  method = postData === undefined ? 'GET' : 'POST';
                  _context11.next = 3;
                  return this.__generic(method, this.endpoint.toString(), data, postData);
                case 3:
                  return _context11.abrupt("return", _context11.sent);
                case 4:
                case "end":
                  return _context11.stop();
              }
            }
          }, _callee11, this);
        }));
        function domoticz(_x8, _x9) {
          return _domoticz.apply(this, arguments);
        }
        return domoticz;
      }()
    }, {
      key: "login",
      value: function () {
        var _login = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(username, password, rememberMe) {
          return _regeneratorRuntime().wrap(function _callee12$(_context12) {
            while (1) {
              switch (_context12.prev = _context12.next) {
                case 0:
                  _context12.next = 2;
                  return this.__login(username, password, rememberMe);
                case 2:
                  return _context12.abrupt("return", _context12.sent);
                case 3:
                case "end":
                  return _context12.stop();
              }
            }
          }, _callee12, this);
        }));
        function login(_x10, _x11, _x12) {
          return _login.apply(this, arguments);
        }
        return login;
      }() // Want to write an new HTTP manager (other than fetch) just create a new
      // DomoticzApiProvider[foobar].js and implement only this method.
      // @ts-expect-error
    }, {
      key: "__generic",
      value: function () {
        var _generic = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13(method, endpoint, data, content) {
          return _regeneratorRuntime().wrap(function _callee13$(_context13) {
            while (1) {
              switch (_context13.prev = _context13.next) {
                case 0:
                  _context13.next = 2;
                  return new Promise(function () {
                    return null;
                  });
                case 2:
                  return _context13.abrupt("return", _context13.sent);
                case 3:
                case "end":
                  return _context13.stop();
              }
            }
          }, _callee13);
        }));
        function __generic(_x13, _x14, _x15, _x16) {
          return _generic.apply(this, arguments);
        }
        return __generic;
      }() // Not working everywhere because of CORS
      // @ts-expect-error
    }, {
      key: "__login",
      value: function () {
        var _login2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14(username, password, rememberMe) {
          return _regeneratorRuntime().wrap(function _callee14$(_context14) {
            while (1) {
              switch (_context14.prev = _context14.next) {
                case 0:
                  _context14.next = 2;
                  return new Promise(function () {
                    return null;
                  });
                case 2:
                  return _context14.abrupt("return", _context14.sent);
                case 3:
                case "end":
                  return _context14.stop();
              }
            }
          }, _callee14);
        }));
        function __login(_x17, _x18, _x19) {
          return _login2.apply(this, arguments);
        }
        return __login;
      }()
    }]);
    return DomoticzApiConnector;
  }();

  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};

  var md5$1 = {exports: {}};

  /*
   * JavaScript MD5
   * https://github.com/blueimp/JavaScript-MD5
   *
   * Copyright 2011, Sebastian Tschan
   * https://blueimp.net
   *
   * Licensed under the MIT license:
   * https://opensource.org/licenses/MIT
   *
   * Based on
   * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
   * Digest Algorithm, as defined in RFC 1321.
   * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
   * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
   * Distributed under the BSD License
   * See http://pajhome.org.uk/crypt/md5 for more info.
   */

  (function (module) {
  (function ($) {

  	  /**
  	   * Add integers, wrapping at 2^32.
  	   * This uses 16-bit operations internally to work around bugs in interpreters.
  	   *
  	   * @param {number} x First integer
  	   * @param {number} y Second integer
  	   * @returns {number} Sum
  	   */
  	  function safeAdd(x, y) {
  	    var lsw = (x & 0xffff) + (y & 0xffff);
  	    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  	    return (msw << 16) | (lsw & 0xffff)
  	  }

  	  /**
  	   * Bitwise rotate a 32-bit number to the left.
  	   *
  	   * @param {number} num 32-bit number
  	   * @param {number} cnt Rotation count
  	   * @returns {number} Rotated number
  	   */
  	  function bitRotateLeft(num, cnt) {
  	    return (num << cnt) | (num >>> (32 - cnt))
  	  }

  	  /**
  	   * Basic operation the algorithm uses.
  	   *
  	   * @param {number} q q
  	   * @param {number} a a
  	   * @param {number} b b
  	   * @param {number} x x
  	   * @param {number} s s
  	   * @param {number} t t
  	   * @returns {number} Result
  	   */
  	  function md5cmn(q, a, b, x, s, t) {
  	    return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)
  	  }
  	  /**
  	   * Basic operation the algorithm uses.
  	   *
  	   * @param {number} a a
  	   * @param {number} b b
  	   * @param {number} c c
  	   * @param {number} d d
  	   * @param {number} x x
  	   * @param {number} s s
  	   * @param {number} t t
  	   * @returns {number} Result
  	   */
  	  function md5ff(a, b, c, d, x, s, t) {
  	    return md5cmn((b & c) | (~b & d), a, b, x, s, t)
  	  }
  	  /**
  	   * Basic operation the algorithm uses.
  	   *
  	   * @param {number} a a
  	   * @param {number} b b
  	   * @param {number} c c
  	   * @param {number} d d
  	   * @param {number} x x
  	   * @param {number} s s
  	   * @param {number} t t
  	   * @returns {number} Result
  	   */
  	  function md5gg(a, b, c, d, x, s, t) {
  	    return md5cmn((b & d) | (c & ~d), a, b, x, s, t)
  	  }
  	  /**
  	   * Basic operation the algorithm uses.
  	   *
  	   * @param {number} a a
  	   * @param {number} b b
  	   * @param {number} c c
  	   * @param {number} d d
  	   * @param {number} x x
  	   * @param {number} s s
  	   * @param {number} t t
  	   * @returns {number} Result
  	   */
  	  function md5hh(a, b, c, d, x, s, t) {
  	    return md5cmn(b ^ c ^ d, a, b, x, s, t)
  	  }
  	  /**
  	   * Basic operation the algorithm uses.
  	   *
  	   * @param {number} a a
  	   * @param {number} b b
  	   * @param {number} c c
  	   * @param {number} d d
  	   * @param {number} x x
  	   * @param {number} s s
  	   * @param {number} t t
  	   * @returns {number} Result
  	   */
  	  function md5ii(a, b, c, d, x, s, t) {
  	    return md5cmn(c ^ (b | ~d), a, b, x, s, t)
  	  }

  	  /**
  	   * Calculate the MD5 of an array of little-endian words, and a bit length.
  	   *
  	   * @param {Array} x Array of little-endian words
  	   * @param {number} len Bit length
  	   * @returns {Array<number>} MD5 Array
  	   */
  	  function binlMD5(x, len) {
  	    /* append padding */
  	    x[len >> 5] |= 0x80 << len % 32;
  	    x[(((len + 64) >>> 9) << 4) + 14] = len;

  	    var i;
  	    var olda;
  	    var oldb;
  	    var oldc;
  	    var oldd;
  	    var a = 1732584193;
  	    var b = -271733879;
  	    var c = -1732584194;
  	    var d = 271733878;

  	    for (i = 0; i < x.length; i += 16) {
  	      olda = a;
  	      oldb = b;
  	      oldc = c;
  	      oldd = d;

  	      a = md5ff(a, b, c, d, x[i], 7, -680876936);
  	      d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
  	      c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
  	      b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
  	      a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
  	      d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
  	      c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
  	      b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
  	      a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
  	      d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
  	      c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
  	      b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
  	      a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
  	      d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
  	      c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
  	      b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);

  	      a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
  	      d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
  	      c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
  	      b = md5gg(b, c, d, a, x[i], 20, -373897302);
  	      a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
  	      d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
  	      c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
  	      b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
  	      a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
  	      d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
  	      c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
  	      b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
  	      a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
  	      d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
  	      c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
  	      b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);

  	      a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
  	      d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
  	      c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
  	      b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
  	      a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
  	      d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
  	      c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
  	      b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
  	      a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
  	      d = md5hh(d, a, b, c, x[i], 11, -358537222);
  	      c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
  	      b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
  	      a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
  	      d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
  	      c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
  	      b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);

  	      a = md5ii(a, b, c, d, x[i], 6, -198630844);
  	      d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
  	      c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
  	      b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
  	      a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
  	      d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
  	      c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
  	      b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
  	      a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
  	      d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
  	      c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
  	      b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
  	      a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
  	      d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
  	      c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
  	      b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);

  	      a = safeAdd(a, olda);
  	      b = safeAdd(b, oldb);
  	      c = safeAdd(c, oldc);
  	      d = safeAdd(d, oldd);
  	    }
  	    return [a, b, c, d]
  	  }

  	  /**
  	   * Convert an array of little-endian words to a string
  	   *
  	   * @param {Array<number>} input MD5 Array
  	   * @returns {string} MD5 string
  	   */
  	  function binl2rstr(input) {
  	    var i;
  	    var output = '';
  	    var length32 = input.length * 32;
  	    for (i = 0; i < length32; i += 8) {
  	      output += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff);
  	    }
  	    return output
  	  }

  	  /**
  	   * Convert a raw string to an array of little-endian words
  	   * Characters >255 have their high-byte silently ignored.
  	   *
  	   * @param {string} input Raw input string
  	   * @returns {Array<number>} Array of little-endian words
  	   */
  	  function rstr2binl(input) {
  	    var i;
  	    var output = [];
  	    output[(input.length >> 2) - 1] = undefined;
  	    for (i = 0; i < output.length; i += 1) {
  	      output[i] = 0;
  	    }
  	    var length8 = input.length * 8;
  	    for (i = 0; i < length8; i += 8) {
  	      output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32;
  	    }
  	    return output
  	  }

  	  /**
  	   * Calculate the MD5 of a raw string
  	   *
  	   * @param {string} s Input string
  	   * @returns {string} Raw MD5 string
  	   */
  	  function rstrMD5(s) {
  	    return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))
  	  }

  	  /**
  	   * Calculates the HMAC-MD5 of a key and some data (raw strings)
  	   *
  	   * @param {string} key HMAC key
  	   * @param {string} data Raw input string
  	   * @returns {string} Raw MD5 string
  	   */
  	  function rstrHMACMD5(key, data) {
  	    var i;
  	    var bkey = rstr2binl(key);
  	    var ipad = [];
  	    var opad = [];
  	    var hash;
  	    ipad[15] = opad[15] = undefined;
  	    if (bkey.length > 16) {
  	      bkey = binlMD5(bkey, key.length * 8);
  	    }
  	    for (i = 0; i < 16; i += 1) {
  	      ipad[i] = bkey[i] ^ 0x36363636;
  	      opad[i] = bkey[i] ^ 0x5c5c5c5c;
  	    }
  	    hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
  	    return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))
  	  }

  	  /**
  	   * Convert a raw string to a hex string
  	   *
  	   * @param {string} input Raw input string
  	   * @returns {string} Hex encoded string
  	   */
  	  function rstr2hex(input) {
  	    var hexTab = '0123456789abcdef';
  	    var output = '';
  	    var x;
  	    var i;
  	    for (i = 0; i < input.length; i += 1) {
  	      x = input.charCodeAt(i);
  	      output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);
  	    }
  	    return output
  	  }

  	  /**
  	   * Encode a string as UTF-8
  	   *
  	   * @param {string} input Input string
  	   * @returns {string} UTF8 string
  	   */
  	  function str2rstrUTF8(input) {
  	    return unescape(encodeURIComponent(input))
  	  }

  	  /**
  	   * Encodes input string as raw MD5 string
  	   *
  	   * @param {string} s Input string
  	   * @returns {string} Raw MD5 string
  	   */
  	  function rawMD5(s) {
  	    return rstrMD5(str2rstrUTF8(s))
  	  }
  	  /**
  	   * Encodes input string as Hex encoded string
  	   *
  	   * @param {string} s Input string
  	   * @returns {string} Hex encoded string
  	   */
  	  function hexMD5(s) {
  	    return rstr2hex(rawMD5(s))
  	  }
  	  /**
  	   * Calculates the raw HMAC-MD5 for the given key and data
  	   *
  	   * @param {string} k HMAC key
  	   * @param {string} d Input string
  	   * @returns {string} Raw MD5 string
  	   */
  	  function rawHMACMD5(k, d) {
  	    return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))
  	  }
  	  /**
  	   * Calculates the Hex encoded HMAC-MD5 for the given key and data
  	   *
  	   * @param {string} k HMAC key
  	   * @param {string} d Input string
  	   * @returns {string} Raw MD5 string
  	   */
  	  function hexHMACMD5(k, d) {
  	    return rstr2hex(rawHMACMD5(k, d))
  	  }

  	  /**
  	   * Calculates MD5 value for a given string.
  	   * If a key is provided, calculates the HMAC-MD5 value.
  	   * Returns a Hex encoded string unless the raw argument is given.
  	   *
  	   * @param {string} string Input string
  	   * @param {string} [key] HMAC key
  	   * @param {boolean} [raw] Raw output switch
  	   * @returns {string} MD5 output
  	   */
  	  function md5(string, key, raw) {
  	    if (!key) {
  	      if (!raw) {
  	        return hexMD5(string)
  	      }
  	      return rawMD5(string)
  	    }
  	    if (!raw) {
  	      return hexHMACMD5(key, string)
  	    }
  	    return rawHMACMD5(key, string)
  	  }

  	  if (module.exports) {
  	    module.exports = md5;
  	  } else {
  	    $.md5 = md5;
  	  }
  	})(commonjsGlobal);
  } (md5$1));

  var md5 = md5$1.exports;

  var DomoticzApiFetch = /*#__PURE__*/function (_DomoticzApiConnector) {
    _inherits(DomoticzApiFetch, _DomoticzApiConnector);
    var _super = _createSuper(DomoticzApiFetch);
    function DomoticzApiFetch() {
      _classCallCheck(this, DomoticzApiFetch);
      return _super.apply(this, arguments);
    }
    _createClass(DomoticzApiFetch, [{
      key: "__generic",
      value: function () {
        var _generic = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(method, endpoint, data, content) {
          var uriParams, options, url, result;
          return _regeneratorRuntime().wrap(function _callee$(_context) {
            while (1) {
              switch (_context.prev = _context.next) {
                case 0:
                  uriParams = data !== undefined ? dataToURI(data) : '';
                  options = {
                    method: method,
                    headers: {
                      Accept: 'application/json',
                      'Content-Type': 'application/json'
                    },
                    body: content !== undefined ? JSON.stringify(content) : null
                  };
                  url = "".concat(endpoint).concat(uriParams);
                  console.log(url, options);
                  _context.next = 6;
                  return fetch(url, options);
                case 6:
                  result = _context.sent;
                  _context.next = 9;
                  return result.json();
                case 9:
                  return _context.abrupt("return", _context.sent);
                case 10:
                case "end":
                  return _context.stop();
              }
            }
          }, _callee);
        }));
        function __generic(_x, _x2, _x3, _x4) {
          return _generic.apply(this, arguments);
        }
        return __generic;
      }()
    }, {
      key: "__login",
      value: function () {
        var _login = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(username, password, rememberMe) {
          var url, options, result;
          return _regeneratorRuntime().wrap(function _callee2$(_context2) {
            while (1) {
              switch (_context2.prev = _context2.next) {
                case 0:
                  url = 'json.htm?type=command&param=logincheck';
                  options = {
                    method: 'POST',
                    headers: {
                      Accept: 'application/json',
                      'Content-Type': 'application/x-www-form-urlencoded'
                    },
                    body: JSON.stringify({
                      username: encodeURIComponent(btoa(username)),
                      password: encodeURIComponent(md5(password)),
                      rememberme: rememberMe
                    })
                  };
                  _context2.next = 4;
                  return fetch(url, options);
                case 4:
                  result = _context2.sent;
                  _context2.next = 7;
                  return result.json();
                case 7:
                  return _context2.abrupt("return", _context2.sent);
                case 8:
                case "end":
                  return _context2.stop();
              }
            }
          }, _callee2);
        }));
        function __login(_x5, _x6, _x7) {
          return _login.apply(this, arguments);
        }
        return __login;
      }()
    }]);
    return DomoticzApiFetch;
  }(DomoticzApiConnector);
  function dataToURI(data) {
    return Object.entries(data).reduce(function (uri, _ref) {
      var _ref2 = _slicedToArray(_ref, 2),
        key = _ref2[0],
        value = _ref2[1];
      var valueStr = castToString(value);
      return "".concat(uri, "&").concat(encodeURI(key), "=").concat(encodeURI(valueStr));
    }, '');
  }
  function castToString(value) {
    if (typeof value === 'string') return value;
    if (typeof value === 'boolean') return value ? 'true' : 'false';
    if (typeof value === 'number') return '' + value.toString();
    return '';
  }

  var EDZ_COMMAND_PARAM;
  (function (EDZ_COMMAND_PARAM) {
    EDZ_COMMAND_PARAM["ADD_CAMERA"] = "addcamera";
    EDZ_COMMAND_PARAM["ADD_LOG_MESSAGE"] = "addlogmessage";
    EDZ_COMMAND_PARAM["ADD_SCENE_DEVICE"] = "addscenedevice";
    EDZ_COMMAND_PARAM["ADD_SCENE_TIMER"] = "addscenetimer";
    EDZ_COMMAND_PARAM["ADD_SCENE_CODE"] = "addscenecode";
    EDZ_COMMAND_PARAM["ADD_HARDWARE"] = "addhardware";
    EDZ_COMMAND_PARAM["ADD_TIMER_PLAN"] = "addtimerplan";
    EDZ_COMMAND_PARAM["ADD_TIMER"] = "addtimer";
    EDZ_COMMAND_PARAM["ADD_USER_VARIABLE"] = "adduservariable";
    EDZ_COMMAND_PARAM["ADD_NOTIFICATION"] = "addnotification";
    EDZ_COMMAND_PARAM["ALLOW_NEW_HARDWARE"] = "allownewhardware";
    EDZ_COMMAND_PARAM["APPLY_ZWAVE_NODE_CONFIG"] = "applyzwavenodeconfig";
    EDZ_COMMAND_PARAM["CLEAR_LIGHT_LOG"] = "clearlightlog";
    EDZ_COMMAND_PARAM["CLEAR_TIMER"] = "cleartimers";
    EDZ_COMMAND_PARAM["CLEAR_NOTIFICATIONS"] = "clearnotifications";
    EDZ_COMMAND_PARAM["DEVICE_LIST"] = "device_list";
    EDZ_COMMAND_PARAM["DELETE_SCENE_DEVICE"] = "deletescenedevice";
    EDZ_COMMAND_PARAM["DELETE_HARDWARE"] = "deletehardware";
    EDZ_COMMAND_PARAM["DELETE_DATA_POINT"] = "deletedatapoint";
    EDZ_COMMAND_PARAM["DELETE_DATE_RANGE"] = "deletedaterange";
    EDZ_COMMAND_PARAM["DELETE_TIMER"] = "deletetimer";
    EDZ_COMMAND_PARAM["DELETE_SETPOINT_TIMER"] = "deletesetpointtimer";
    EDZ_COMMAND_PARAM["DELETE_SCENE_TIMER"] = "deletescenetimer";
    EDZ_COMMAND_PARAM["DELETE_NOTIFICATION"] = "deletenotification";
    EDZ_COMMAND_PARAM["DUPLICATE_TIMER_PLAN"] = "duplicatetimerplan";
    EDZ_COMMAND_PARAM["DISABLE_TIMER"] = "disabletimer";
    EDZ_COMMAND_PARAM["DISABLE_SETPOINT_TIMER"] = "disablesetpointtimer";
    EDZ_COMMAND_PARAM["DISABLE_SCENE_TIMER"] = "disablescenetimer";
    EDZ_COMMAND_PARAM["ENABLE_TIMER"] = "enabletimer";
    EDZ_COMMAND_PARAM["ENABLE_SETPOINT_TIMER"] = "enablesetpointtimer";
    EDZ_COMMAND_PARAM["ENABLE_SCENE_TIMER"] = "enablescenetimer";
    EDZ_COMMAND_PARAM["EMAIL_CAMERA_SNAPSHOP"] = "emailcamerasnapshot";
    EDZ_COMMAND_PARAM["GET_LOG"] = "getlog";
    EDZ_COMMAND_PARAM["GET_LIGHT_SWITCHES"] = "getlightswitches";
    EDZ_COMMAND_PARAM["GET_PLAN_DEVICES"] = "getplandevices";
    EDZ_COMMAND_PARAM["GET_SCENE_ACTIVATIONS"] = "getsceneactivations";
    EDZ_COMMAND_PARAM["GET_SCENE_DEVICES"] = "getscenedevices";
    EDZ_COMMAND_PARAM["GET_SECURITY_STATUS"] = "getsecstatus";
    EDZ_COMMAND_PARAM["GET_SERVER_TIME"] = "getServerTime";
    EDZ_COMMAND_PARAM["GET_SUNRISE_SUNSET"] = "getSunRiseSet";
    EDZ_COMMAND_PARAM["GET_TIMER_PLANS"] = "gettimerplans";
    EDZ_COMMAND_PARAM["GET_USER_VARIABLES"] = "getuservariables";
    EDZ_COMMAND_PARAM["GET_VERSION"] = "getversion";
    EDZ_COMMAND_PARAM["GET_NOTIFICATION_TYPES"] = "getnotificationtypes";
    EDZ_COMMAND_PARAM["LMS_MEDIA_COMMAND"] = "lmsmediacommand";
    EDZ_COMMAND_PARAM["KODI_MEDIA_COMMAND"] = "kodimediacommand";
    EDZ_COMMAND_PARAM["RENAME_DEVICE"] = "renamedevice";
    EDZ_COMMAND_PARAM["SET_ACTIVE_TIMER_PLAN"] = "setactivetimerplan";
    EDZ_COMMAND_PARAM["SET_COLOR_BRIGHTNESS_VALUE"] = "setcolbrightnessvalue";
    EDZ_COMMAND_PARAM["SET_DEVICE_USED"] = "setdevused";
    EDZ_COMMAND_PARAM["SET_KELVIN_LEVEL"] = "setkelvinlevel";
    EDZ_COMMAND_PARAM["SET_SETPOINT"] = "setsetpoint";
    EDZ_COMMAND_PARAM["SEND_NOTIFICATION"] = "sendnotification";
    EDZ_COMMAND_PARAM["SUN_WIND_ENABLE"] = "EnableSunWind";
    EDZ_COMMAND_PARAM["SUN_WIND_DISABLE"] = "DisableSunWind";
    EDZ_COMMAND_PARAM["SWITCH"] = "switch";
    EDZ_COMMAND_PARAM["SWITCH_SCENE"] = "switchscene";
    EDZ_COMMAND_PARAM["SWITCH_LIGHT"] = "switchlight";
    EDZ_COMMAND_PARAM["SWITCH_MODAL"] = "switchmodal";
    EDZ_COMMAND_PARAM["SYSTEM_REBOOT"] = "system_reboot";
    EDZ_COMMAND_PARAM["SYSTEM_SHUTDOWN"] = "system_shutdown";
    EDZ_COMMAND_PARAM["TRIGGER_CUSTOM_EVENT"] = "customevent";
    EDZ_COMMAND_PARAM["UPDATE_CAMERA"] = "updatecamera";
    EDZ_COMMAND_PARAM["UPDATE_DEVICE"] = "udevice";
    EDZ_COMMAND_PARAM["UPDATE_SCENE"] = "updatescene";
    EDZ_COMMAND_PARAM["UPDATE_HARDWARE"] = "updatehardware";
    EDZ_COMMAND_PARAM["UPDATE_USER_VARIABLE"] = "updateuservariable";
    EDZ_COMMAND_PARAM["UPDATE_TIMER_PLAN"] = "updatetimerplan";
    EDZ_COMMAND_PARAM["UPDATE_TIMER"] = "updatetimer";
    EDZ_COMMAND_PARAM["UPDATE_NOTIFICATION"] = "updatenotification";
    EDZ_COMMAND_PARAM["VACCUM_DATABASE"] = "vaccumdatabase";
    EDZ_COMMAND_PARAM["ZWAVE_BATTERY_LEVELS"] = "zwavegetbatterylevels";
    EDZ_COMMAND_PARAM["GET_DEVICE_VALUE_OPTIONS"] = "getdevicevalueoptions";
    EDZ_COMMAND_PARAM["LOGOUT"] = "dologout";
    EDZ_COMMAND_PARAM["GET_UPTIME"] = "GetUptime";
    EDZ_COMMAND_PARAM["MAKE_FAVORITE"] = "makefavorite";
    EDZ_COMMAND_PARAM["GET_DEVICES"] = "devices";
    EDZ_COMMAND_PARAM["LOGIN_CHECK"] = "logincheck";
  })(EDZ_COMMAND_PARAM || (EDZ_COMMAND_PARAM = {}));

  var EDZ_DAY;
  (function (EDZ_DAY) {
    EDZ_DAY[EDZ_DAY["EVERYDAY"] = 128] = "EVERYDAY";
    EDZ_DAY[EDZ_DAY["WEEKDAYS"] = 256] = "WEEKDAYS";
    EDZ_DAY[EDZ_DAY["WEEKENDS"] = 512] = "WEEKENDS";
    EDZ_DAY[EDZ_DAY["MONDAY"] = 1] = "MONDAY";
    EDZ_DAY[EDZ_DAY["TUESDAY"] = 2] = "TUESDAY";
    EDZ_DAY[EDZ_DAY["WEDNESDAY"] = 4] = "WEDNESDAY";
    EDZ_DAY[EDZ_DAY["THURSDAY"] = 8] = "THURSDAY";
    EDZ_DAY[EDZ_DAY["FRIDAY"] = 16] = "FRIDAY";
    EDZ_DAY[EDZ_DAY["SATURDAY"] = 32] = "SATURDAY";
    EDZ_DAY[EDZ_DAY["SUNDAY"] = 64] = "SUNDAY";
  })(EDZ_DAY || (EDZ_DAY = {}));

  var EDZ_DEVICE;
  (function (EDZ_DEVICE) {
    EDZ_DEVICE["LIGHT"] = "light";
    EDZ_DEVICE["WEATHER"] = "weather";
    EDZ_DEVICE["TEMP"] = "temp";
    EDZ_DEVICE["UTILITY"] = "utility";
    EDZ_DEVICE["WIND"] = "wind";
    EDZ_DEVICE["RAIN"] = "rain";
    EDZ_DEVICE["UV"] = "uv";
    EDZ_DEVICE["BARO"] = "baro";
    EDZ_DEVICE["ZWAVEALARM"] = "zwavealarm";
    EDZ_DEVICE["ALL"] = "all";
  })(EDZ_DEVICE || (EDZ_DEVICE = {}));

  var EDZ_DEVICE_HUMIDITY;
  (function (EDZ_DEVICE_HUMIDITY) {
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["HEAVY_SNOW"] = 0] = "HEAVY_SNOW";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["SNOW"] = 1] = "SNOW";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["HEAVY_RAIN"] = 2] = "HEAVY_RAIN";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["RAIN"] = 3] = "RAIN";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["CLOUDY"] = 4] = "CLOUDY";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["SOME_CLOUDS"] = 5] = "SOME_CLOUDS";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["SUNNY"] = 6] = "SUNNY";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["UNKNOWN"] = 7] = "UNKNOWN";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["UNSTABLE"] = 8] = "UNSTABLE";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["STABLE"] = 9] = "STABLE";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["GENERAL_STABLE"] = 0] = "GENERAL_STABLE";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["GENERAL_SUNNY"] = 1] = "GENERAL_SUNNY";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["GENERAL_CLOUDY"] = 2] = "GENERAL_CLOUDY";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["GENERAL_UNSABLE"] = 3] = "GENERAL_UNSABLE";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["GENERAL_THUNDERSTORM"] = 4] = "GENERAL_THUNDERSTORM";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["GENERAL_UNKNOWN"] = 5] = "GENERAL_UNKNOWN";
    EDZ_DEVICE_HUMIDITY[EDZ_DEVICE_HUMIDITY["GENERAL_CLOUDY_RAIN"] = 6] = "GENERAL_CLOUDY_RAIN";
  })(EDZ_DEVICE_HUMIDITY || (EDZ_DEVICE_HUMIDITY = {}));

  var EDZ_EVOHOME_ACTIONS;
  (function (EDZ_EVOHOME_ACTIONS) {
    EDZ_EVOHOME_ACTIONS[EDZ_EVOHOME_ACTIONS["RUN_ON_SCRIPT"] = 1] = "RUN_ON_SCRIPT";
    EDZ_EVOHOME_ACTIONS[EDZ_EVOHOME_ACTIONS["DISABLE"] = 0] = "DISABLE";
  })(EDZ_EVOHOME_ACTIONS || (EDZ_EVOHOME_ACTIONS = {}));

  var EDZ_EVOHOME_OOC;
  (function (EDZ_EVOHOME_OOC) {
    EDZ_EVOHOME_OOC[EDZ_EVOHOME_OOC["ON_CHANGE"] = 1] = "ON_CHANGE";
    EDZ_EVOHOME_OOC[EDZ_EVOHOME_OOC["ALWAYS"] = 0] = "ALWAYS";
  })(EDZ_EVOHOME_OOC || (EDZ_EVOHOME_OOC = {}));

  var EDZ_EVOHOME_STATUS;
  (function (EDZ_EVOHOME_STATUS) {
    EDZ_EVOHOME_STATUS["AUTO"] = "Auto";
    EDZ_EVOHOME_STATUS["AUTO_WITH_RESET"] = "AutoWithReset";
    EDZ_EVOHOME_STATUS["AUTO_WITH_ECO"] = "AutoWithEco";
    EDZ_EVOHOME_STATUS["AWAY"] = "Away";
    EDZ_EVOHOME_STATUS["DAY_OFF"] = "DayOff";
    EDZ_EVOHOME_STATUS["CUSTOM"] = "Custom";
    EDZ_EVOHOME_STATUS["HEATING_OFF"] = "HeatingOff";
  })(EDZ_EVOHOME_STATUS || (EDZ_EVOHOME_STATUS = {}));

  var EDZ_HUMIDITY;
  (function (EDZ_HUMIDITY) {
    EDZ_HUMIDITY[EDZ_HUMIDITY["NORMAL"] = 1] = "NORMAL";
    EDZ_HUMIDITY[EDZ_HUMIDITY["CONFORTABLE"] = 2] = "CONFORTABLE";
    EDZ_HUMIDITY[EDZ_HUMIDITY["DRY"] = 3] = "DRY";
    EDZ_HUMIDITY[EDZ_HUMIDITY["WET"] = 4] = "WET";
  })(EDZ_HUMIDITY || (EDZ_HUMIDITY = {}));

  var EDZ_LOG_LEVEL;
  (function (EDZ_LOG_LEVEL) {
    EDZ_LOG_LEVEL[EDZ_LOG_LEVEL["NORMAL"] = 1] = "NORMAL";
    EDZ_LOG_LEVEL[EDZ_LOG_LEVEL["STATUS"] = 2] = "STATUS";
    EDZ_LOG_LEVEL[EDZ_LOG_LEVEL["ERROR"] = 4] = "ERROR";
    EDZ_LOG_LEVEL[EDZ_LOG_LEVEL["ALL"] = 268435455] = "ALL";
  })(EDZ_LOG_LEVEL || (EDZ_LOG_LEVEL = {}));

  var EDZ_NOTIFICATOR;
  (function (EDZ_NOTIFICATOR) {
    EDZ_NOTIFICATOR["FCM"] = "fcm";
    EDZ_NOTIFICATOR["HTTP"] = "http";
    EDZ_NOTIFICATOR["KODI"] = "kodi";
    EDZ_NOTIFICATOR["LMS"] = "lms";
    EDZ_NOTIFICATOR["NMA"] = "nma";
    EDZ_NOTIFICATOR["PROWL"] = "prowl";
    EDZ_NOTIFICATOR["PUSHALOT"] = "pushalot";
    EDZ_NOTIFICATOR["PUSHBULLET"] = "pushbullet";
    EDZ_NOTIFICATOR["PUSHOVER"] = "pushover";
    EDZ_NOTIFICATOR["PUSHSAFER"] = "pushsafer";
  })(EDZ_NOTIFICATOR || (EDZ_NOTIFICATOR = {}));

  var EDZ_SECURITY_STATUS;
  (function (EDZ_SECURITY_STATUS) {
    EDZ_SECURITY_STATUS[EDZ_SECURITY_STATUS["DISARMED"] = 0] = "DISARMED";
    EDZ_SECURITY_STATUS[EDZ_SECURITY_STATUS["ARM_HOME"] = 1] = "ARM_HOME";
    EDZ_SECURITY_STATUS[EDZ_SECURITY_STATUS["ARM_AWAY"] = 2] = "ARM_AWAY";
    EDZ_SECURITY_STATUS[EDZ_SECURITY_STATUS["UNKNOWN"] = 3] = "UNKNOWN";
  })(EDZ_SECURITY_STATUS || (EDZ_SECURITY_STATUS = {}));

  var EDZ_SUB_TYPE;
  (function (EDZ_SUB_TYPE) {
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["ONOFF"] = 0] = "ONOFF";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["DOORBELL"] = 1] = "DOORBELL";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["CONTACT"] = 2] = "CONTACT";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["BLINDS"] = 3] = "BLINDS";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["X10_SIREN"] = 4] = "X10_SIREN";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["SMOKE_DETECTOR"] = 5] = "SMOKE_DETECTOR";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["BLINDS_INVERTED"] = 6] = "BLINDS_INVERTED";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["DIMMER"] = 7] = "DIMMER";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["MOTION_SENSOR"] = 8] = "MOTION_SENSOR";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["PUSH_ON_BUTTON"] = 9] = "PUSH_ON_BUTTON";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["PUSH_OFF_BUTTON"] = 10] = "PUSH_OFF_BUTTON";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["DOOR_CONTACT"] = 11] = "DOOR_CONTACT";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["DUSK_SENSOR"] = 12] = "DUSK_SENSOR";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["BLINDS_PERCENTAGE"] = 13] = "BLINDS_PERCENTAGE";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["VENETIAN_BLINDS_US"] = 14] = "VENETIAN_BLINDS_US";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["VENETIAN_BLINDS_EU"] = 15] = "VENETIAN_BLINDS_EU";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["BLINDS_PERCENTAGE_INVERTED"] = 16] = "BLINDS_PERCENTAGE_INVERTED";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["MEDIA_PLAYER"] = 17] = "MEDIA_PLAYER";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["SELECTOR"] = 18] = "SELECTOR";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["DOOR_LOCK"] = 19] = "DOOR_LOCK";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["DOOR_LOCK_INVERTED"] = 20] = "DOOR_LOCK_INVERTED";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["BLINDS_PERCENTAGE_WITH_STOP"] = 21] = "BLINDS_PERCENTAGE_WITH_STOP";
    EDZ_SUB_TYPE[EDZ_SUB_TYPE["BLINDS_PERCENTAGE_WITH_STOP_INVERTED"] = 22] = "BLINDS_PERCENTAGE_WITH_STOP_INVERTED";
  })(EDZ_SUB_TYPE || (EDZ_SUB_TYPE = {}));

  var EDZ_SWITCH_COMMAND;
  (function (EDZ_SWITCH_COMMAND) {
    EDZ_SWITCH_COMMAND["ON"] = "On";
    EDZ_SWITCH_COMMAND["OFF"] = "Off";
    EDZ_SWITCH_COMMAND["TOGGLE"] = "Toggle";
    EDZ_SWITCH_COMMAND["NORMAL"] = "Normal";
    EDZ_SWITCH_COMMAND["STOP"] = "Stop";
    EDZ_SWITCH_COMMAND["OPEN"] = "Open";
    EDZ_SWITCH_COMMAND["CLOSE"] = "Close";
    EDZ_SWITCH_COMMAND["SET_LEVEL"] = "Set Level";
  })(EDZ_SWITCH_COMMAND || (EDZ_SWITCH_COMMAND = {}));

  var EDZ_TIMER_TYPE;
  (function (EDZ_TIMER_TYPE) {
    EDZ_TIMER_TYPE[EDZ_TIMER_TYPE["BEFORE_SUNRISE"] = 0] = "BEFORE_SUNRISE";
    EDZ_TIMER_TYPE[EDZ_TIMER_TYPE["AFTER_SUNRISE"] = 1] = "AFTER_SUNRISE";
    EDZ_TIMER_TYPE[EDZ_TIMER_TYPE["ON_TIME"] = 2] = "ON_TIME";
    EDZ_TIMER_TYPE[EDZ_TIMER_TYPE["BEFORE_SUNSET"] = 3] = "BEFORE_SUNSET";
    EDZ_TIMER_TYPE[EDZ_TIMER_TYPE["AFTER_SUNSET"] = 4] = "AFTER_SUNSET";
    EDZ_TIMER_TYPE[EDZ_TIMER_TYPE["FIXED_DATETIME"] = 5] = "FIXED_DATETIME";
  })(EDZ_TIMER_TYPE || (EDZ_TIMER_TYPE = {}));

  var EDZ_USER_VARIABLE;
  (function (EDZ_USER_VARIABLE) {
    EDZ_USER_VARIABLE[EDZ_USER_VARIABLE["INTEGER"] = 0] = "INTEGER";
    EDZ_USER_VARIABLE[EDZ_USER_VARIABLE["FLOAT"] = 1] = "FLOAT";
    EDZ_USER_VARIABLE[EDZ_USER_VARIABLE["STRING"] = 2] = "STRING";
    EDZ_USER_VARIABLE[EDZ_USER_VARIABLE["DATE"] = 3] = "DATE";
    EDZ_USER_VARIABLE[EDZ_USER_VARIABLE["TIME"] = 4] = "TIME";
  })(EDZ_USER_VARIABLE || (EDZ_USER_VARIABLE = {}));

  var DeviceManager = /*#__PURE__*/function () {
    function DeviceManager(domoticzApi) {
      _classCallCheck(this, DeviceManager);
      _defineProperty(this, "domoticzApi", void 0);
      this.domoticzApi = domoticzApi;
    }

    /**
     * Get all devices, including the hidden ones
     */
    _createClass(DeviceManager, [{
      key: "items",
      value: function () {
        var _items = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
          var devices;
          return _regeneratorRuntime().wrap(function _callee$(_context) {
            while (1) {
              switch (_context.prev = _context.next) {
                case 0:
                  _context.next = 2;
                  return this.domoticzApi.devices({
                    used: true,
                    displayhidden: 1
                  });
                case 2:
                  devices = _context.sent;
                  if (!((devices === null || devices === void 0 ? void 0 : devices.result) != null && devices.result !== undefined)) {
                    _context.next = 5;
                    break;
                  }
                  return _context.abrupt("return", devices.result);
                case 5:
                  return _context.abrupt("return", []);
                case 6:
                case "end":
                  return _context.stop();
              }
            }
          }, _callee, this);
        }));
        function items() {
          return _items.apply(this, arguments);
        }
        return items;
      }()
      /**
       * Get all devices idx, names, and statuses without details
       * @returns
       */
    }, {
      key: "itemsList",
      value: function () {
        var _itemsList = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
          var devices;
          return _regeneratorRuntime().wrap(function _callee2$(_context2) {
            while (1) {
              switch (_context2.prev = _context2.next) {
                case 0:
                  _context2.next = 2;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.GET_DEVICES
                  });
                case 2:
                  devices = _context2.sent;
                  if (!((devices === null || devices === void 0 ? void 0 : devices.result) != null && devices.result !== undefined)) {
                    _context2.next = 5;
                    break;
                  }
                  return _context2.abrupt("return", devices.result);
                case 5:
                  return _context2.abrupt("return", []);
                case 6:
                case "end":
                  return _context2.stop();
              }
            }
          }, _callee2, this);
        }));
        function itemsList() {
          return _itemsList.apply(this, arguments);
        }
        return itemsList;
      }()
      /**
       * Get a specific device using the device identifier Idx
       * @param {number} idx
       */
    }, {
      key: "getByIdx",
      value: function () {
        var _getByIdx = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(idx) {
          var _device$result;
          var device;
          return _regeneratorRuntime().wrap(function _callee3$(_context3) {
            while (1) {
              switch (_context3.prev = _context3.next) {
                case 0:
                  _context3.next = 2;
                  return this.domoticzApi.devices({
                    rid: idx
                  });
                case 2:
                  device = _context3.sent;
                  if (!((device === null || device === void 0 ? void 0 : device.result) != null && device.result !== undefined && ((_device$result = device.result) === null || _device$result === void 0 ? void 0 : _device$result.length) > 0)) {
                    _context3.next = 5;
                    break;
                  }
                  return _context3.abrupt("return", device.result[0]);
                case 5:
                  return _context3.abrupt("return", null);
                case 6:
                case "end":
                  return _context3.stop();
              }
            }
          }, _callee3, this);
        }));
        function getByIdx(_x) {
          return _getByIdx.apply(this, arguments);
        }
        return getByIdx;
      }()
      /**
       * Retrieve all devices of a specified type
       * @param {EDZ_DEVICE} filter
       * @param {string} orderBy
       */
    }, {
      key: "getByType",
      value: function () {
        var _getByType = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(filter) {
          var orderBy,
            devices,
            _args4 = arguments;
          return _regeneratorRuntime().wrap(function _callee4$(_context4) {
            while (1) {
              switch (_context4.prev = _context4.next) {
                case 0:
                  orderBy = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : 'Name';
                  _context4.next = 3;
                  return this.domoticzApi.devices({
                    filter: filter,
                    used: true,
                    order: orderBy
                  });
                case 3:
                  devices = _context4.sent;
                  if (!((devices === null || devices === void 0 ? void 0 : devices.result) != null && devices.result !== undefined)) {
                    _context4.next = 6;
                    break;
                  }
                  return _context4.abrupt("return", devices.result);
                case 6:
                  return _context4.abrupt("return", []);
                case 7:
                case "end":
                  return _context4.stop();
              }
            }
          }, _callee4, this);
        }));
        function getByType(_x2) {
          return _getByType.apply(this, arguments);
        }
        return getByType;
      }()
      /**
       * Return devices marked as *favorites*
       */
    }, {
      key: "getFavorites",
      value: function () {
        var _getFavorites = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
          var devices;
          return _regeneratorRuntime().wrap(function _callee5$(_context5) {
            while (1) {
              switch (_context5.prev = _context5.next) {
                case 0:
                  _context5.next = 2;
                  return this.domoticzApi.devices({
                    used: true,
                    filter: EDZ_DEVICE.ALL,
                    favorite: 1
                  });
                case 2:
                  devices = _context5.sent;
                  if (!((devices === null || devices === void 0 ? void 0 : devices.result) != null && devices.result !== undefined)) {
                    _context5.next = 5;
                    break;
                  }
                  return _context5.abrupt("return", devices.result);
                case 5:
                  return _context5.abrupt("return", []);
                case 6:
                case "end":
                  return _context5.stop();
              }
            }
          }, _callee5, this);
        }));
        function getFavorites() {
          return _getFavorites.apply(this, arguments);
        }
        return getFavorites;
      }()
      /**
       * Action a Light/Switch
       * @param {number} idx
       * @param {EDZ_SWITCH_COMMAND} command "On|Off"
       */
    }, {
      key: "switch",
      value: function () {
        var _switch2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(idx) {
          var command,
            _args6 = arguments;
          return _regeneratorRuntime().wrap(function _callee6$(_context6) {
            while (1) {
              switch (_context6.prev = _context6.next) {
                case 0:
                  command = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : EDZ_SWITCH_COMMAND.ON;
                  _context6.next = 3;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.SWITCH_LIGHT,
                    idx: idx,
                    switchcmd: command
                  });
                case 3:
                  return _context6.abrupt("return", _context6.sent);
                case 4:
                case "end":
                  return _context6.stop();
              }
            }
          }, _callee6, this);
        }));
        function _switch(_x3) {
          return _switch2.apply(this, arguments);
        }
        return _switch;
      }()
      /**
         * Ask Domoticz to toggle a Light/Switch
         * @param {number} idx
         */
    }, {
      key: "toggle",
      value: function () {
        var _toggle = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(idx) {
          return _regeneratorRuntime().wrap(function _callee7$(_context7) {
            while (1) {
              switch (_context7.prev = _context7.next) {
                case 0:
                  _context7.next = 2;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.SWITCH_LIGHT,
                    idx: idx,
                    switchcmd: EDZ_SWITCH_COMMAND.TOGGLE
                  });
                case 2:
                  return _context7.abrupt("return", _context7.sent);
                case 3:
                case "end":
                  return _context7.stop();
              }
            }
          }, _callee7, this);
        }));
        function toggle(_x4) {
          return _toggle.apply(this, arguments);
        }
        return toggle;
      }()
      /**
         * Rename the device identified by idx
         * @param {number} idx
         * @param {string} name
         */
    }, {
      key: "rename",
      value: function () {
        var _rename = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(idx, name) {
          return _regeneratorRuntime().wrap(function _callee8$(_context8) {
            while (1) {
              switch (_context8.prev = _context8.next) {
                case 0:
                  _context8.next = 2;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.RENAME_DEVICE,
                    idx: idx,
                    name: name
                  });
                case 2:
                  return _context8.abrupt("return", _context8.sent);
                case 3:
                case "end":
                  return _context8.stop();
              }
            }
          }, _callee8, this);
        }));
        function rename(_x5, _x6) {
          return _rename.apply(this, arguments);
        }
        return rename;
      }()
      /**
         * Set/Remove the protection on a device identified by idx
         * @param {number} idx
         * @param {boolean} enable
         */
    }, {
      key: "protect",
      value: function () {
        var _protect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(idx) {
          var enable,
            _args9 = arguments;
          return _regeneratorRuntime().wrap(function _callee9$(_context9) {
            while (1) {
              switch (_context9.prev = _context9.next) {
                case 0:
                  enable = _args9.length > 1 && _args9[1] !== undefined ? _args9[1] : true;
                  _context9.next = 3;
                  return this.domoticzApi.setUsed({
                    used: true,
                    idx: idx,
                    "protected": enable
                  });
                case 3:
                  return _context9.abrupt("return", _context9.sent);
                case 4:
                case "end":
                  return _context9.stop();
              }
            }
          }, _callee9, this);
        }));
        function protect(_x7) {
          return _protect.apply(this, arguments);
        }
        return protect;
      }()
      /**
         * Set the new temperature
         *
         * @param {number} idx
         * @param {number} temperature
         * @returns
         */
    }, {
      key: "updateTemperature",
      value: function () {
        var _updateTemperature = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(idx, temperature) {
          return _regeneratorRuntime().wrap(function _callee10$(_context10) {
            while (1) {
              switch (_context10.prev = _context10.next) {
                case 0:
                  _context10.next = 2;
                  return this.updateDevice(idx, temperature.toString());
                case 2:
                  return _context10.abrupt("return", _context10.sent);
                case 3:
                case "end":
                  return _context10.stop();
              }
            }
          }, _callee10, this);
        }));
        function updateTemperature(_x8, _x9) {
          return _updateTemperature.apply(this, arguments);
        }
        return updateTemperature;
      }()
      /**
         * Set the humidity datas of a device
         *
         * @param {number} idx Domoticz Device ID
         * @param {number} humidityPercent  Ex: 45
         * @param {EDZ_HUMIDITY} humidityState [0: Normal, 1: Confortable, 2: Dry, 3: Wet]
         * @returns
         */
    }, {
      key: "updateHumidity",
      value: function () {
        var _updateHumidity = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(idx, humidityPercent, humidityState) {
          return _regeneratorRuntime().wrap(function _callee11$(_context11) {
            while (1) {
              switch (_context11.prev = _context11.next) {
                case 0:
                  if (!(humidityPercent < 0 || humidityPercent > 100)) {
                    _context11.next = 2;
                    break;
                  }
                  return _context11.abrupt("return", null);
                case 2:
                  if (!(humidityState < 0 || humidityState > 5)) {
                    _context11.next = 4;
                    break;
                  }
                  return _context11.abrupt("return", null);
                case 4:
                  _context11.next = 6;
                  return this.updateDevice(idx, humidityState.toString(), humidityPercent.toString());
                case 6:
                  return _context11.abrupt("return", _context11.sent);
                case 7:
                case "end":
                  return _context11.stop();
              }
            }
          }, _callee11, this);
        }));
        function updateHumidity(_x10, _x11, _x12) {
          return _updateHumidity.apply(this, arguments);
        }
        return updateHumidity;
      }()
      /**
         * Set the barometer pressure and define the barometer forecast.
         *
         * @param {number} idx
         * @param {int} barometer Atmospheric Pressure
         * @param {deviceHumidityType} deviceHumidityType use a deviceHumidityGeneralType (if device.Type is 'General'), or deviceHumidityType otherwise.
         *
         * @returns
         */
    }, {
      key: "updateBarometer",
      value: function () {
        var _updateBarometer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(idx, barometer, deviceHumidityType) {
          return _regeneratorRuntime().wrap(function _callee12$(_context12) {
            while (1) {
              switch (_context12.prev = _context12.next) {
                case 0:
                  _context12.next = 2;
                  return this.updateDevice(idx, "".concat(barometer.toString(), ";").concat(deviceHumidityType));
                case 2:
                  return _context12.abrupt("return", _context12.sent);
                case 3:
                case "end":
                  return _context12.stop();
              }
            }
          }, _callee12, this);
        }));
        function updateBarometer(_x13, _x14, _x15) {
          return _updateBarometer.apply(this, arguments);
        }
        return updateBarometer;
      }()
      /**
         * Generic update of a devices
         *
         * @param {number} idx
         * @param {string} sValue
         * @param {string} nValue
         * @returns
         */
    }, {
      key: "updateDevice",
      value: function () {
        var _updateDevice = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13(idx, svalue) {
          var nvalue,
            _args13 = arguments;
          return _regeneratorRuntime().wrap(function _callee13$(_context13) {
            while (1) {
              switch (_context13.prev = _context13.next) {
                case 0:
                  nvalue = _args13.length > 2 && _args13[2] !== undefined ? _args13[2] : '0';
                  _context13.next = 3;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.UPDATE_DEVICE,
                    idx: idx,
                    svalue: svalue,
                    nvalue: nvalue
                  });
                case 3:
                  return _context13.abrupt("return", _context13.sent);
                case 4:
                case "end":
                  return _context13.stop();
              }
            }
          }, _callee13, this);
        }));
        function updateDevice(_x16, _x17) {
          return _updateDevice.apply(this, arguments);
        }
        return updateDevice;
      }()
    }]);
    return DeviceManager;
  }();

  var CameraManager = /*#__PURE__*/function () {
    function CameraManager(domoticzApi) {
      _classCallCheck(this, CameraManager);
      _defineProperty(this, "domoticzApi", void 0);
      this.domoticzApi = domoticzApi;
    }

    /**
     * Get all cameras informations
     */
    _createClass(CameraManager, [{
      key: "items",
      value: function () {
        var _items = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
          var data;
          return _regeneratorRuntime().wrap(function _callee$(_context) {
            while (1) {
              switch (_context.prev = _context.next) {
                case 0:
                  _context.next = 2;
                  return this.domoticzApi.cameras();
                case 2:
                  data = _context.sent;
                  return _context.abrupt("return", data.result);
                case 4:
                case "end":
                  return _context.stop();
              }
            }
          }, _callee, this);
        }));
        function items() {
          return _items.apply(this, arguments);
        }
        return items;
      }()
    }]);
    return CameraManager;
  }();

  var EventManager = /*#__PURE__*/function () {
    function EventManager(domoticzApi) {
      _classCallCheck(this, EventManager);
      _defineProperty(this, "domoticzApi", void 0);
      this.domoticzApi = domoticzApi;
    }

    /**
     * Retrieve all Domoticz Events
     */
    _createClass(EventManager, [{
      key: "items",
      value: function () {
        var _items = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
          var events;
          return _regeneratorRuntime().wrap(function _callee$(_context) {
            while (1) {
              switch (_context.prev = _context.next) {
                case 0:
                  _context.next = 2;
                  return this.domoticzApi.events({
                    param: 'list'
                  });
                case 2:
                  events = _context.sent;
                  if (!((events === null || events === void 0 ? void 0 : events.result) != null && events.result !== undefined)) {
                    _context.next = 5;
                    break;
                  }
                  return _context.abrupt("return", events.result);
                case 5:
                  return _context.abrupt("return", []);
                case 6:
                case "end":
                  return _context.stop();
              }
            }
          }, _callee, this);
        }));
        function items() {
          return _items.apply(this, arguments);
        }
        return items;
      }()
    }]);
    return EventManager;
  }();

  var SceneManager = /*#__PURE__*/function () {
    function SceneManager(domoticzApi) {
      _classCallCheck(this, SceneManager);
      _defineProperty(this, "domoticzApi", void 0);
      this.domoticzApi = domoticzApi;
    }

    /**
     * Get all the Domoticz"s scenes
     */
    _createClass(SceneManager, [{
      key: "items",
      value: function () {
        var _items = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
          var scenes;
          return _regeneratorRuntime().wrap(function _callee$(_context) {
            while (1) {
              switch (_context.prev = _context.next) {
                case 0:
                  _context.next = 2;
                  return this.domoticzApi.scenes();
                case 2:
                  scenes = _context.sent;
                  if (!((scenes === null || scenes === void 0 ? void 0 : scenes.result) != null && scenes.result !== undefined)) {
                    _context.next = 5;
                    break;
                  }
                  return _context.abrupt("return", scenes.result);
                case 5:
                  return _context.abrupt("return", []);
                case 6:
                case "end":
                  return _context.stop();
              }
            }
          }, _callee, this);
        }));
        function items() {
          return _items.apply(this, arguments);
        }
        return items;
      }()
      /**
       * Switch a state into a specific state
       *
       * @param {number} idx : Domoticz index of the device
       * @param {EDZ_SWITCH_COMMAND} command : string of the state, ex: 'Off'
       */
    }, {
      key: "switch",
      value: function () {
        var _switch2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(idx, command) {
          return _regeneratorRuntime().wrap(function _callee2$(_context2) {
            while (1) {
              switch (_context2.prev = _context2.next) {
                case 0:
                  _context2.next = 2;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.SWITCH,
                    idx: idx,
                    switchcmd: command
                  });
                case 2:
                  return _context2.abrupt("return", _context2.sent);
                case 3:
                case "end":
                  return _context2.stop();
              }
            }
          }, _callee2, this);
        }));
        function _switch(_x, _x2) {
          return _switch2.apply(this, arguments);
        }
        return _switch;
      }()
      /**
       * Toggle a device (ex: On/Off
       *
       * @param {number} idx : Domoticz index of the device
       */
    }, {
      key: "toggle",
      value: function () {
        var _toggle = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(idx) {
          return _regeneratorRuntime().wrap(function _callee3$(_context3) {
            while (1) {
              switch (_context3.prev = _context3.next) {
                case 0:
                  _context3.next = 2;
                  return this["switch"](idx, EDZ_SWITCH_COMMAND.TOGGLE);
                case 2:
                  return _context3.abrupt("return", _context3.sent);
                case 3:
                case "end":
                  return _context3.stop();
              }
            }
          }, _callee3, this);
        }));
        function toggle(_x3) {
          return _toggle.apply(this, arguments);
        }
        return toggle;
      }()
    }]);
    return SceneManager;
  }();

  var NotificationManager = /*#__PURE__*/function () {
    function NotificationManager(domoticzApi) {
      _classCallCheck(this, NotificationManager);
      _defineProperty(this, "domoticzApi", void 0);
      this.domoticzApi = domoticzApi;
    }

    /**
       * Send a notification through Domoticz Notification API
       * @param {string} subject
       * @param {string} message
       * @param {notificationType[]} subSystems
       */
    _createClass(NotificationManager, [{
      key: "send",
      value: function () {
        var _send = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(subject, message, subSystems) {
          var options;
          return _regeneratorRuntime().wrap(function _callee$(_context) {
            while (1) {
              switch (_context.prev = _context.next) {
                case 0:
                  options = {
                    param: EDZ_COMMAND_PARAM.SEND_NOTIFICATION,
                    subject: subject,
                    body: message
                  };
                  if (subSystems != null && subSystems.length > 0) {
                    options.subsystem = subSystems.reduce(function (str, item) {
                      return str + (str !== '' ? ';' : '') + item.toString();
                    }, '');
                  }
                  _context.next = 4;
                  return this.domoticzApi.command(options);
                case 4:
                  return _context.abrupt("return", _context.sent);
                case 5:
                case "end":
                  return _context.stop();
              }
            }
          }, _callee, this);
        }));
        function send(_x, _x2, _x3) {
          return _send.apply(this, arguments);
        }
        return send;
      }()
    }]);
    return NotificationManager;
  }();

  var SystemManager = /*#__PURE__*/function () {
    function SystemManager(domoticzApi) {
      _classCallCheck(this, SystemManager);
      _defineProperty(this, "domoticzApi", void 0);
      this.domoticzApi = domoticzApi;
    }

    /**
     * Write a message into Domoticz Logs
     * @param {String} message
     */
    _createClass(SystemManager, [{
      key: "log",
      value: function () {
        var _log = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(message) {
          return _regeneratorRuntime().wrap(function _callee$(_context) {
            while (1) {
              switch (_context.prev = _context.next) {
                case 0:
                  _context.next = 2;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.ADD_LOG_MESSAGE,
                    message: "DOMOTICZ API : ".concat(message)
                  });
                case 2:
                  return _context.abrupt("return", _context.sent);
                case 3:
                case "end":
                  return _context.stop();
              }
            }
          }, _callee, this);
        }));
        function log(_x) {
          return _log.apply(this, arguments);
        }
        return log;
      }()
      /**
       * Check Credentials
       */
    }, {
      key: "login",
      value: function () {
        var _login = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(username, password, rememberMe) {
          return _regeneratorRuntime().wrap(function _callee2$(_context2) {
            while (1) {
              switch (_context2.prev = _context2.next) {
                case 0:
                  _context2.next = 2;
                  return this.domoticzApi.login(username, password, rememberMe);
                case 2:
                  return _context2.abrupt("return", _context2.sent);
                case 3:
                case "end":
                  return _context2.stop();
              }
            }
          }, _callee2, this);
        }));
        function login(_x2, _x3, _x4) {
          return _login.apply(this, arguments);
        }
        return login;
      }()
      /**
       * Check Credentials
       */
    }, {
      key: "checkCredentials",
      value: function () {
        var _checkCredentials = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
          return _regeneratorRuntime().wrap(function _callee3$(_context3) {
            while (1) {
              switch (_context3.prev = _context3.next) {
                case 0:
                  _context3.prev = 0;
                  _context3.next = 3;
                  return this.domoticzApi.checkCredentials();
                case 3:
                  return _context3.abrupt("return", true);
                case 6:
                  _context3.prev = 6;
                  _context3.t0 = _context3["catch"](0);
                  return _context3.abrupt("return", false);
                case 9:
                case "end":
                  return _context3.stop();
              }
            }
          }, _callee3, this, [[0, 6]]);
        }));
        function checkCredentials() {
          return _checkCredentials.apply(this, arguments);
        }
        return checkCredentials;
      }()
      /**
       * Check Security Status
       */
    }, {
      key: "securityStatus",
      value: function () {
        var _securityStatus = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
          return _regeneratorRuntime().wrap(function _callee4$(_context4) {
            while (1) {
              switch (_context4.prev = _context4.next) {
                case 0:
                  _context4.next = 2;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.GET_SECURITY_STATUS
                  });
                case 2:
                  return _context4.abrupt("return", _context4.sent);
                case 3:
                case "end":
                  return _context4.stop();
              }
            }
          }, _callee4, this);
        }));
        function securityStatus() {
          return _securityStatus.apply(this, arguments);
        }
        return securityStatus;
      }()
      /**
       * Get various informations about the Domoticz Server
       */
    }, {
      key: "version",
      value: function () {
        var _version = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
          return _regeneratorRuntime().wrap(function _callee5$(_context5) {
            while (1) {
              switch (_context5.prev = _context5.next) {
                case 0:
                  _context5.next = 2;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.GET_VERSION
                  });
                case 2:
                  return _context5.abrupt("return", _context5.sent);
                case 3:
                case "end":
                  return _context5.stop();
              }
            }
          }, _callee5, this);
        }));
        function version() {
          return _version.apply(this, arguments);
        }
        return version;
      }()
      /**
       * Get times (Local time, Sunset, Sunrise, etc.) from Domoticz Server
       */
    }, {
      key: "datetimes",
      value: function () {
        var _datetimes = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
          return _regeneratorRuntime().wrap(function _callee6$(_context6) {
            while (1) {
              switch (_context6.prev = _context6.next) {
                case 0:
                  _context6.next = 2;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.GET_SUNRISE_SUNSET
                  });
                case 2:
                  return _context6.abrupt("return", _context6.sent);
                case 3:
                case "end":
                  return _context6.stop();
              }
            }
          }, _callee6, this);
        }));
        function datetimes() {
          return _datetimes.apply(this, arguments);
        }
        return datetimes;
      }()
      /**
       * Reboot Domoticz Server
       */
    }, {
      key: "reboot",
      value: function () {
        var _reboot = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
          return _regeneratorRuntime().wrap(function _callee7$(_context7) {
            while (1) {
              switch (_context7.prev = _context7.next) {
                case 0:
                  _context7.next = 2;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.SYSTEM_REBOOT
                  });
                case 2:
                  return _context7.abrupt("return", _context7.sent);
                case 3:
                case "end":
                  return _context7.stop();
              }
            }
          }, _callee7, this);
        }));
        function reboot() {
          return _reboot.apply(this, arguments);
        }
        return reboot;
      }()
      /**
       * Shutdown the Domoticz Server
       */
    }, {
      key: "shutdown",
      value: function () {
        var _shutdown = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
          return _regeneratorRuntime().wrap(function _callee8$(_context8) {
            while (1) {
              switch (_context8.prev = _context8.next) {
                case 0:
                  _context8.next = 2;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.SYSTEM_SHUTDOWN
                  });
                case 2:
                  return _context8.abrupt("return", _context8.sent);
                case 3:
                case "end":
                  return _context8.stop();
              }
            }
          }, _callee8, this);
        }));
        function shutdown() {
          return _shutdown.apply(this, arguments);
        }
        return shutdown;
      }()
      /**
       * Start Database backup
       */
    }, {
      key: "db_backup",
      value: function () {
        var _db_backup = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
          return _regeneratorRuntime().wrap(function _callee9$(_context9) {
            while (1) {
              switch (_context9.prev = _context9.next) {
                case 0:
                  _context9.next = 2;
                  return this.domoticzApi.get('backupdatabase.php');
                case 2:
                  return _context9.abrupt("return", _context9.sent);
                case 3:
                case "end":
                  return _context9.stop();
              }
            }
          }, _callee9, this);
        }));
        function db_backup() {
          return _db_backup.apply(this, arguments);
        }
        return db_backup;
      }()
      /**
       * Execute database cleanup
       */
    }, {
      key: "db_vaccum",
      value: function () {
        var _db_vaccum = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {
          return _regeneratorRuntime().wrap(function _callee10$(_context10) {
            while (1) {
              switch (_context10.prev = _context10.next) {
                case 0:
                  _context10.next = 2;
                  return this.domoticzApi.command({
                    param: EDZ_COMMAND_PARAM.VACCUM_DATABASE
                  });
                case 2:
                  return _context10.abrupt("return", _context10.sent);
                case 3:
                case "end":
                  return _context10.stop();
              }
            }
          }, _callee10, this);
        }));
        function db_vaccum() {
          return _db_vaccum.apply(this, arguments);
        }
        return db_vaccum;
      }()
    }]);
    return SystemManager;
  }();

  function useDomoticzApi(options) {
    var domoticzApi = options.DomoticzApi === undefined ? new DomoticzApiFetch(options) : new options.DomoticzApi(options);
    return {
      cameraManager: new CameraManager(domoticzApi),
      deviceManager: new DeviceManager(domoticzApi),
      eventManager: new EventManager(domoticzApi),
      notificationManager: new NotificationManager(domoticzApi),
      sceneManager: new SceneManager(domoticzApi),
      systemManager: new SystemManager(domoticzApi)
    };
  }

  exports.CameraManager = CameraManager;
  exports.DeviceManager = DeviceManager;
  exports.DomoticzApiConnector = DomoticzApiConnector;
  exports.EventManager = EventManager;
  exports.NotificationManager = NotificationManager;
  exports.SceneManager = SceneManager;
  exports.SystemManager = SystemManager;
  exports.useDomoticzApi = useDomoticzApi;

  Object.defineProperty(exports, '__esModule', { value: true });

  return exports;

})({});