freeathome-local-api-client 1.3.11 → 1.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/package.json +13 -13
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/package.json +13 -13
- package/package.json +13 -13
package/dist/cjs/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "freeathome-local-api-client",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.12",
|
|
4
4
|
"preview": true,
|
|
5
5
|
"description": "A client library for the BUSCH-JAEGER free@home local API implemented in TypeScript",
|
|
6
6
|
"repository": {
|
|
@@ -56,30 +56,30 @@
|
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
|
59
|
-
"@types/jasmine": "^4.3.
|
|
59
|
+
"@types/jasmine": "^4.3.5",
|
|
60
60
|
"@types/webpack": "^5.28.1",
|
|
61
|
-
"@types/ws": "^8.5.
|
|
62
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
63
|
-
"@typescript-eslint/parser": "^5.
|
|
61
|
+
"@types/ws": "^8.5.5",
|
|
62
|
+
"@typescript-eslint/eslint-plugin": "^5.60.1",
|
|
63
|
+
"@typescript-eslint/parser": "^5.60.1",
|
|
64
64
|
"better-docs": "^2.7.2",
|
|
65
|
-
"eslint": "^8.
|
|
65
|
+
"eslint": "^8.43.0",
|
|
66
66
|
"eslint-config-prettier": "^8.8.0",
|
|
67
67
|
"eslint-plugin-import": "^2.27.5",
|
|
68
|
-
"eslint-plugin-n": "^16.0.
|
|
68
|
+
"eslint-plugin-n": "^16.0.1",
|
|
69
69
|
"eslint-plugin-prettier": "^4.2.1",
|
|
70
70
|
"eslint-plugin-promise": "^6.1.1",
|
|
71
|
-
"jasmine": "^
|
|
71
|
+
"jasmine": "^5.0.2",
|
|
72
72
|
"jasmine-spec-reporter": "^7.0.0",
|
|
73
|
-
"jsdoc": "^
|
|
73
|
+
"jsdoc": "^4.0.2",
|
|
74
74
|
"nyc": "^15.1.0",
|
|
75
75
|
"prettier": "^2.8.8",
|
|
76
76
|
"rimraf": "^5.0.1",
|
|
77
77
|
"ts-interface-builder": "^0.3.3",
|
|
78
|
-
"ts-loader": "^9.4.
|
|
78
|
+
"ts-loader": "^9.4.4",
|
|
79
79
|
"ts-node": "^10.9.1",
|
|
80
|
-
"typescript": "^5.1.
|
|
81
|
-
"webpack": "^5.
|
|
82
|
-
"webpack-cli": "^5.
|
|
80
|
+
"typescript": "^5.1.6",
|
|
81
|
+
"webpack": "^5.88.1",
|
|
82
|
+
"webpack-cli": "^5.1.4"
|
|
83
83
|
},
|
|
84
84
|
"type": "commonjs"
|
|
85
85
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as e from"ts-interface-checker";import*as t from"ws";var r={187:e=>{var t,r="object"==typeof Reflect?Reflect:null,n=r&&"function"==typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function o(){o.init.call(this)}e.exports=o,e.exports.once=function(e,t){return new Promise((function(r,n){function i(r){e.removeListener(t,o),n(r)}function o(){"function"==typeof e.removeListener&&e.removeListener("error",i),r([].slice.call(arguments))}d(e,t,o,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&d(e,"error",t,{once:!0})}(e,i)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function c(e){return void 0===e._maxListeners?o.defaultMaxListeners:e._maxListeners}function u(e,t,r,n){var i,o,s,u;if(a(r),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),o=e._events),s=o[t]),void 0===s)s=o[t]=r,++e._eventsCount;else if("function"==typeof s?s=o[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),(i=c(e))>0&&s.length>i&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,u=l,console&&console.warn&&console.warn(u)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function f(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=l.bind(n);return i.listener=r,n.wrapFn=i,i}function h(e,t,r){var n=e._events;if(void 0===n)return[];var i=n[t];return void 0===i?[]:"function"==typeof i?r?[i.listener||i]:[i]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(i):v(i,i.length)}function p(e){var t=this._events;if(void 0!==t){var r=t[e];if("function"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function v(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function d(e,t,r,n){if("function"==typeof e.on)n.once?e.once(t,r):e.on(t,r);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function i(o){n.once&&e.removeEventListener(t,i),r(o)}))}}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");s=e}}),o.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},o.prototype.getMaxListeners=function(){return c(this)},o.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var i="error"===e,o=this._events;if(void 0!==o)i=i&&void 0===o.error;else if(!i)return!1;if(i){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var c=o[e];if(void 0===c)return!1;if("function"==typeof c)n(c,this,t);else{var u=c.length,l=v(c,u);for(r=0;r<u;++r)n(l[r],this,t)}return!0},o.prototype.addListener=function(e,t){return u(this,e,t,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,t){return u(this,e,t,!0)},o.prototype.once=function(e,t){return a(t),this.on(e,f(this,e,t)),this},o.prototype.prependOnceListener=function(e,t){return a(t),this.prependListener(e,f(this,e,t)),this},o.prototype.removeListener=function(e,t){var r,n,i,o,s;if(a(t),void 0===(n=this._events))return this;if(void 0===(r=n[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(i=-1,o=r.length-1;o>=0;o--)if(r[o]===t||r[o].listener===t){s=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,i),1===r.length&&(n[e]=r[0]),void 0!==n.removeListener&&this.emit("removeListener",e,s||t)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var t,r,n;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var i,o=Object.keys(r);for(n=0;n<o.length;++n)"removeListener"!==(i=o[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},o.prototype.listeners=function(e){return h(this,e,!0)},o.prototype.rawListeners=function(e){return h(this,e,!1)},o.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},o.prototype.listenerCount=p,o.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o={};(()=>{i.d(o,{ns:()=>De,LB:()=>T,J6:()=>N,s:()=>M,h4:()=>V,L$:()=>$,LT:()=>K,iH:()=>I,W0:()=>Q,ip:()=>B,DO:()=>j});const r=(L={array:()=>e.array,createCheckers:()=>e.createCheckers,iface:()=>e.iface,indexKey:()=>e.indexKey,opt:()=>e.opt},D={},i.d(D,L),D),n={Channel:(0,r.iface)([],{displayName:(0,r.opt)("string"),functionID:(0,r.opt)("string"),room:(0,r.opt)("string"),floor:(0,r.opt)("string"),inputs:(0,r.opt)((0,r.iface)([],{[r.indexKey]:"InOutPut"})),outputs:(0,r.opt)((0,r.iface)([],{[r.indexKey]:"InOutPut"})),type:(0,r.opt)("string")})},s={Configuration:(0,r.iface)([],{[r.indexKey]:"SysAP"})},a={Device:(0,r.iface)([],{displayName:(0,r.opt)("string"),room:(0,r.opt)("string"),floor:(0,r.opt)("string"),interface:(0,r.opt)("string"),nativeId:(0,r.opt)("string"),channels:(0,r.opt)((0,r.iface)([],{[r.indexKey]:"Channel"}))})},c={DeviceList:(0,r.iface)([],{[r.indexKey]:(0,r.array)("string")})},u={DeviceResponse:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{devices:"Devices"})})},l={Devices:(0,r.iface)([],{[r.indexKey]:"Device"})},f={Error:(0,r.iface)([],{code:"string",detail:"string",title:"string"})},h={Floors:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{name:"string",rooms:"Rooms"})})},p={GetDataPointResponse:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{values:(0,r.array)("string")})})},v={InOutPut:(0,r.iface)([],{value:(0,r.opt)("string"),pairingID:(0,r.opt)("number")})},d={Rooms:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{name:"string"})})},y={ScenesTriggered:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{channels:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{outputs:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{value:"string",pairingID:"number"})})})})})})},g={SetDataPointResponse:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{[r.indexKey]:"string"})})},b={SysAP:(0,r.iface)([],{devices:"Devices",floorplan:(0,r.iface)([],{floors:"Floors"}),sysapName:"string",users:"Users",error:(0,r.opt)("Error")})},m={Users:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{enabled:"boolean",flags:(0,r.array)("string"),grantedPermissions:(0,r.array)("string"),jid:"string",name:"string",requestedPermissions:(0,r.array)("string"),role:"string"})})},w={VirtualDeviceResponse:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{devices:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{serial:"string"})})})})},S={WebSocketMessage:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{datapoints:(0,r.iface)([],{[r.indexKey]:"string"}),devices:(0,r.iface)([],{[r.indexKey]:"Devices"}),devicesAdded:(0,r.array)("string"),devicesRemoved:(0,r.array)("string"),scenesTriggered:"ScenesTriggered"})})},{Channel:x}=(0,r.createCheckers)(n,v),{Configuration:_}=(0,r.createCheckers)(s,l,a,n,v,h,d,b,m,f),{Device:E}=(0,r.createCheckers)(a,n,v),{DeviceList:O}=(0,r.createCheckers)(c),{DeviceResponse:A}=(0,r.createCheckers)(u,l,a,n,v),{GetDataPointResponse:k}=(0,r.createCheckers)(p),{SetDataPointResponse:R}=(0,r.createCheckers)(g),{VirtualDeviceResponse:C}=(0,r.createCheckers)(w),{WebSocketMessage:P}=(0,r.createCheckers)(S,l,a,n,v,y);var L,D,T;function W(e,t,r,n){if(n)try{return t.check(e),!0}catch(e){return r.error("Object validation failed!",e),!1}return t.test(e)}function j(e,t,r=!1){return W(e,P,t,r)}function M(e,t,r=!1){return W(e,_,t,r)}function $(e,t,r=!1){return W(e,O,t,r)}function K(e,t,r=!1){return W(e,A,t,r)}function I(e,t,r=!1){return W(e,k,t,r)}function Q(e,t,r=!1){return W(e,R,t,r)}function B(e,t,r=!1){return W(e,C,t,r)}function N(e,t,r=!1){return W(e,x,t,r)}function V(e,t,r=!1){return W(e,E,t,r)}!function(e){e.BinarySensor="BinarySensor",e.BlindActuator="BlindActuator",e.SwitchingActuator="SwitchingActuator",e.CeilingFanActuator="CeilingFanActuator",e.RTC="RTC",e.DimActuator="DimActuator",e.EVCharging="evcharging",e.WindowSensor="WindowSensor",e.SimpleDoorlock="simple_doorlock",e.ShutterActuator="ShutterActuator",e.WeatherStation="WeatherStation",e.WeatherTemperatureSensor="Weather-TemperatureSensor",e.WeatherWindSensor="Weather-WindSensor",e.WeatherBrightnessSensor="Weather-BrightnessSensor",e.WeatherRainSensor="Weather-RainSensor",e.WindowActuator="WindowActuator",e.CODetector="CODetector",e.FireDetector="FireDetector",e.KNXSwitchSensor="KNX-SwitchSensor",e.MediaPlayer="MediaPlayer",e.EnergyBattery="EnergyBattery",e.EnergyInverter="EnergyInverter",e.EnergyMeter="EnergyMeter",e.EnergyInverterBattery="EnergyInverterBattery",e.EnergyInverterMeter="EnergyInverterMeter",e.EnergyInverterMeterBattery="EnergyInverterMeterBattery",e.EnergyMeterBattery="EnergyMeterBattery",e.AirQualityCO2="AirQualityCO2",e.AirQualityCO="AirQualityCO",e.AirQualityFull="AirQualityFull",e.AirQualityHumidity="AirQualityHumidity",e.AirQualityNO2="AirQualityNO2",e.AirQualityO3="AirQualityO3",e.AirQualityPM10="AirQualityPM10",e.AirQualityPM25="AirQualityPM25",e.AirQualityPressure="AirQualityPressure",e.AirQualityTemperature="AirQualityTemperature",e.AirQualityVOC="AirQualityVOC"}(T||(T={}));var F=function(e,t){return F=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},F(e,t)};function U(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}F(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function z(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function G(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s}function H(e,t,r){if(r||2===arguments.length)for(var n,i=0,o=t.length;i<o;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))}function J(e){return"function"==typeof e}function q(e){var t=e((function(e){Error.call(e),e.stack=(new Error).stack}));return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}Object.create,Object.create;var X=q((function(e){return function(t){e(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map((function(e,t){return t+1+") "+e.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=t}}));function Y(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Z=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}var t;return e.prototype.unsubscribe=function(){var e,t,r,n,i;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var s=z(o),a=s.next();!a.done;a=s.next())a.value.remove(this)}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}else o.remove(this);var c=this.initialTeardown;if(J(c))try{c()}catch(e){i=e instanceof X?e.errors:[e]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var l=z(u),f=l.next();!f.done;f=l.next()){var h=f.value;try{re(h)}catch(e){i=null!=i?i:[],e instanceof X?i=H(H([],G(i)),G(e.errors)):i.push(e)}}}catch(e){r={error:e}}finally{try{f&&!f.done&&(n=l.return)&&n.call(l)}finally{if(r)throw r.error}}}if(i)throw new X(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)re(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(r=this._finalizers)&&void 0!==r?r:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&Y(t,e)},e.prototype.remove=function(t){var r=this._finalizers;r&&Y(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}(),ee=Z.EMPTY;function te(e){return e instanceof Z||e&&"closed"in e&&J(e.remove)&&J(e.add)&&J(e.unsubscribe)}function re(e){J(e)?e():e.unsubscribe()}var ne=null,ie=null,oe=void 0,se=!1,ae=!1,ce={setTimeout:function(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var i=ce.delegate;return(null==i?void 0:i.setTimeout)?i.setTimeout.apply(i,H([e,t],G(r))):setTimeout.apply(void 0,H([e,t],G(r)))},clearTimeout:function(e){var t=ce.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function ue(){}var le=fe("C",void 0,void 0);function fe(e,t,r){return{kind:e,value:t,error:r}}var he=null;function pe(e){if(se){var t=!he;if(t&&(he={errorThrown:!1,error:null}),e(),t){var r=he,n=r.errorThrown,i=r.error;if(he=null,n)throw i}}else e()}var ve=function(e){function t(t){var r=e.call(this)||this;return r.isStopped=!1,t?(r.destination=t,te(t)&&t.add(r)):r.destination=Se,r}return U(t,e),t.create=function(e,t,r){return new be(e,t,r)},t.prototype.next=function(e){this.isStopped?we(function(e){return fe("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?we(fe("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?we(le,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(Z),de=Function.prototype.bind;function ye(e,t){return de.call(e,t)}var ge=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){me(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){me(e)}else me(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){me(e)}},e}(),be=function(e){function t(t,r,n){var i,o,s=e.call(this)||this;return J(t)||!t?i={next:null!=t?t:void 0,error:null!=r?r:void 0,complete:null!=n?n:void 0}:s&&ae?((o=Object.create(t)).unsubscribe=function(){return s.unsubscribe()},i={next:t.next&&ye(t.next,o),error:t.error&&ye(t.error,o),complete:t.complete&&ye(t.complete,o)}):i=t,s.destination=new ge(i),s}return U(t,e),t}(ve);function me(e){var t;se?(t=e,se&&he&&(he.errorThrown=!0,he.error=t)):function(e){ce.setTimeout((function(){if(!ne)throw e;ne(e)}))}(e)}function we(e,t){var r=ie;r&&ce.setTimeout((function(){return r(e,t)}))}var Se={closed:!0,next:ue,error:function(e){throw e},complete:ue},xe="function"==typeof Symbol&&Symbol.observable||"@@observable";function _e(e){return e}var Ee=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var r=new e;return r.source=this,r.operator=t,r},e.prototype.subscribe=function(e,t,r){var n,i=this,o=(n=e)&&n instanceof ve||function(e){return e&&J(e.next)&&J(e.error)&&J(e.complete)}(n)&&te(n)?e:new be(e,t,r);return pe((function(){var e=i,t=e.operator,r=e.source;o.add(t?t.call(o,r):r?i._subscribe(o):i._trySubscribe(o))})),o},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var r=this;return new(t=Oe(t))((function(t,n){var i=new be({next:function(t){try{e(t)}catch(e){n(e),i.unsubscribe()}},error:n,complete:t});r.subscribe(i)}))},e.prototype._subscribe=function(e){var t;return null===(t=this.source)||void 0===t?void 0:t.subscribe(e)},e.prototype[xe]=function(){return this},e.prototype.pipe=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return(0===(r=e).length?_e:1===r.length?r[0]:function(e){return r.reduce((function(e,t){return t(e)}),e)})(this);var r},e.prototype.toPromise=function(e){var t=this;return new(e=Oe(e))((function(e,r){var n;t.subscribe((function(e){return n=e}),(function(e){return r(e)}),(function(){return e(n)}))}))},e.create=function(t){return new e(t)},e}();function Oe(e){var t;return null!==(t=null!=e?e:oe)&&void 0!==t?t:Promise}var Ae=q((function(e){return function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})),ke=function(e){function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return U(t,e),t.prototype.lift=function(e){var t=new Re(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new Ae},t.prototype.next=function(e){var t=this;pe((function(){var r,n;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||(t.currentObservers=Array.from(t.observers));try{for(var i=z(t.currentObservers),o=i.next();!o.done;o=i.next())o.value.next(e)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}}}))},t.prototype.error=function(e){var t=this;pe((function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var r=t.observers;r.length;)r.shift().error(e)}}))},t.prototype.complete=function(){var e=this;pe((function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}}))},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,r=this,n=r.hasError,i=r.isStopped,o=r.observers;return n||i?ee:(this.currentObservers=null,o.push(e),new Z((function(){t.currentObservers=null,Y(o,e)})))},t.prototype._checkFinalizedStatuses=function(e){var t=this,r=t.hasError,n=t.thrownError,i=t.isStopped;r?e.error(n):i&&e.complete()},t.prototype.asObservable=function(){var e=new Ee;return e.source=this,e},t.create=function(e,t){return new Re(e,t)},t}(Ee),Re=function(e){function t(t,r){var n=e.call(this)||this;return n.destination=t,n.source=r,n}return U(t,e),t.prototype.next=function(e){var t,r;null===(r=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===r||r.call(t,e)},t.prototype.error=function(e){var t,r;null===(r=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===r||r.call(t,e)},t.prototype.complete=function(){var e,t;null===(t=null===(e=this.destination)||void 0===e?void 0:e.complete)||void 0===t||t.call(e)},t.prototype._subscribe=function(e){var t,r;return null!==(r=null===(t=this.source)||void 0===t?void 0:t.subscribe(e))&&void 0!==r?r:ee},t}(ke);const Ce=(e=>{var t={};return i.d(t,e),t})({WebSocket:()=>t.WebSocket});var Pe=i(187),Le=function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))};class De extends Pe.EventEmitter{constructor(e,t,r,n=!0,i=!1,o){super(),this.webSocketMessageSubject=new ke,this.logger=null!=o?o:console,this.basicAuthKey=Buffer.from(`${t}:${r}`,"utf8").toString("base64"),this.hostName=e,this.tlsEnabled=n,this.verboseErrors=i}connectWebSocket(e=!0){if(this.webSocket&&this.webSocket.readyState===Ce.WebSocket.OPEN)throw new Error("Web socket is already connected");this.webSocket=this.createWebSocket(e)}createVirtualDevice(e,t,r){return Le(this,void 0,void 0,(function*(){const n=yield this.fetchDataViaRest("PUT",`virtualdevice/${e}/${t}`,JSON.stringify(r));return this.processRestResponse(n,B)}))}createWebSocket(e){this.tlsEnabled&&!e&&this.logger.warn("TLS certificate verification is disabled! This poses a security risk, activating certificate verification is strictly recommended.");const t=`${this.tlsEnabled?"wss":"ws"}://${this.hostName}/fhapi/v1/api/ws`,r={rejectUnauthorized:this.tlsEnabled&&e,headers:{Authorization:`Basic ${this.basicAuthKey}`}},n=new Ce.WebSocket(t,r);return n.on("error",(e=>{this.emit("websocket-error",e),this.logger.error("Error received",e)})),n.on("ping",(e=>{this.emit("websocket-ping",e),this.logger.debug("Ping received",e.toString("ascii"))})),n.on("pong",(e=>{this.emit("websocket-pong",e),this.logger.debug("Pong received",e.toString("ascii"))})),n.on("unexpected-response",((e,t)=>{this.emit("websocket-unexpected-response",e,t),this.logger.error("Unexpected response received")})),n.on("upgrade",(e=>{this.emit("websocket-upgrade",e),this.logger.debug("Upgrade request received")})),n.on("open",(()=>{this.emit("websocket-open"),this.logger.log("Connection opened")})),n.on("close",((e,t)=>{this.emit("websocket-close",e,t),this.logger.log("Connection closed")})),n.on("message",((e,t)=>{this.emit("websocket-message",e,t),this.processWebSocketMessage(e,t)})),n}disconnectWebSocket(e=!1){if(!this.webSocket||this.webSocket.readyState===Ce.WebSocket.CLOSED)throw new Error("Web socket is not open");e?this.webSocket.terminate():this.webSocket.close()}getConfiguration(){return Le(this,void 0,void 0,(function*(){const e=yield this.fetchDataViaRest("GET","configuration");return this.processRestResponse(e,M)}))}getDeviceList(){return Le(this,void 0,void 0,(function*(){const e=yield this.fetchDataViaRest("GET","devicelist");return this.processRestResponse(e,$)}))}getDevice(e,t){return Le(this,void 0,void 0,(function*(){const r=yield this.fetchDataViaRest("GET",`device/${e}/${t}`);return this.processRestResponse(r,K)}))}getDatapoint(e,t,r,n){return Le(this,void 0,void 0,(function*(){const i=yield this.fetchDataViaRest("GET",`datapoint/${e}/${t}.${r}.${n}`);return this.processRestResponse(i,I)}))}getWebSocketMessages(){return this.webSocketMessageSubject.asObservable()}setDatapoint(e,t,r,n,i){return Le(this,void 0,void 0,(function*(){const o=yield this.fetchDataViaRest("PUT",`datapoint/${e}/${t}.${r}.${n}`,i);return this.processRestResponse(o,Q)}))}triggerProxyDevice(e,t,r,n){return Le(this,void 0,void 0,(function*(){const i=yield this.fetchDataViaRest("GET",`proxydevice/${e}/${t}/${r}/action/${n}`);return this.processRestResponse(i,K)}))}setProxyDeviceValue(e,t,r,n){return Le(this,void 0,void 0,(function*(){const i=yield this.fetchDataViaRest("PUT",`proxydevice/${e}/${t}/${r}/value/${n}`);return this.processRestResponse(i,K)}))}fetchDataViaRest(e,t,r=void 0){return Le(this,void 0,void 0,(function*(){const n=`${this.tlsEnabled?"https":"http"}://${this.hostName}/fhapi/v1/api/rest/${t}`,i={method:e,headers:{Authorization:`Basic ${this.basicAuthKey}`},body:r};return fetch(n,i)}))}processRestResponse(e,t){return Le(this,void 0,void 0,(function*(){let r,n;switch(e.status){case 200:if(r=yield e.json(),!t(r,this.logger,this.verboseErrors))throw n="Received message has an unexpected type!",this.logger.error(n,r),new Error(n);return r;case 401:throw n="Authentication information is missing or invalid.",this.logger.error(n),new Error(n);case 502:throw n=yield e.text(),this.logger.error(n),new Error(n);default:throw n=`Received HTTP ${e.status} status code unexpectedly: ${yield e.text()}`,this.logger.error(n),new Error(n)}}))}processWebSocketMessage(e,t){if(t)return void this.logger.warn("Binary message received. Binary messages are not processed.");this.logger.debug("Message received");const r=e.toString(),n=JSON.parse(r);j(n,this.logger,this.verboseErrors)?this.webSocketMessageSubject.next(n):this.logger.error("Received message has an unexpected type!",r)}}})();var s=o.ns,a=o.LB,c=o.J6,u=o.s,l=o.h4,f=o.L$,h=o.LT,p=o.iH,v=o.W0,d=o.ip,y=o.DO;export{s as SystemAccessPoint,a as VirtualDeviceType,c as isChannel,u as isConfiguration,l as isDevice,f as isDeviceList,h as isDeviceResponse,p as isGetDataPointResponse,v as isSetDataPointResponse,d as isVirtualDeviceResponse,y as isWebSocketMessage};
|
|
1
|
+
import*as e from"ts-interface-checker";import*as t from"ws";var r={187:e=>{var t,r="object"==typeof Reflect?Reflect:null,n=r&&"function"==typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function o(){o.init.call(this)}e.exports=o,e.exports.once=function(e,t){return new Promise((function(r,n){function i(r){e.removeListener(t,o),n(r)}function o(){"function"==typeof e.removeListener&&e.removeListener("error",i),r([].slice.call(arguments))}d(e,t,o,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&d(e,"error",t,{once:!0})}(e,i)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function c(e){return void 0===e._maxListeners?o.defaultMaxListeners:e._maxListeners}function u(e,t,r,n){var i,o,s,u;if(a(r),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),o=e._events),s=o[t]),void 0===s)s=o[t]=r,++e._eventsCount;else if("function"==typeof s?s=o[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),(i=c(e))>0&&s.length>i&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,u=l,console&&console.warn&&console.warn(u)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function f(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=l.bind(n);return i.listener=r,n.wrapFn=i,i}function p(e,t,r){var n=e._events;if(void 0===n)return[];var i=n[t];return void 0===i?[]:"function"==typeof i?r?[i.listener||i]:[i]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(i):v(i,i.length)}function h(e){var t=this._events;if(void 0!==t){var r=t[e];if("function"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function v(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function d(e,t,r,n){if("function"==typeof e.on)n.once?e.once(t,r):e.on(t,r);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function i(o){n.once&&e.removeEventListener(t,i),r(o)}))}}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");s=e}}),o.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},o.prototype.getMaxListeners=function(){return c(this)},o.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var i="error"===e,o=this._events;if(void 0!==o)i=i&&void 0===o.error;else if(!i)return!1;if(i){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var c=o[e];if(void 0===c)return!1;if("function"==typeof c)n(c,this,t);else{var u=c.length,l=v(c,u);for(r=0;r<u;++r)n(l[r],this,t)}return!0},o.prototype.addListener=function(e,t){return u(this,e,t,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,t){return u(this,e,t,!0)},o.prototype.once=function(e,t){return a(t),this.on(e,f(this,e,t)),this},o.prototype.prependOnceListener=function(e,t){return a(t),this.prependListener(e,f(this,e,t)),this},o.prototype.removeListener=function(e,t){var r,n,i,o,s;if(a(t),void 0===(n=this._events))return this;if(void 0===(r=n[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(i=-1,o=r.length-1;o>=0;o--)if(r[o]===t||r[o].listener===t){s=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,i),1===r.length&&(n[e]=r[0]),void 0!==n.removeListener&&this.emit("removeListener",e,s||t)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var t,r,n;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var i,o=Object.keys(r);for(n=0;n<o.length;++n)"removeListener"!==(i=o[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},o.prototype.listeners=function(e){return p(this,e,!0)},o.prototype.rawListeners=function(e){return p(this,e,!1)},o.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):h.call(e,t)},o.prototype.listenerCount=h,o.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o={};(()=>{i.d(o,{ns:()=>De,LB:()=>T,J6:()=>N,s:()=>M,h4:()=>V,L$:()=>$,LT:()=>K,iH:()=>I,W0:()=>Q,ip:()=>B,DO:()=>j});const r=(L={array:()=>e.array,createCheckers:()=>e.createCheckers,iface:()=>e.iface,indexKey:()=>e.indexKey,opt:()=>e.opt},D={},i.d(D,L),D),n={Channel:(0,r.iface)([],{displayName:(0,r.opt)("string"),functionID:(0,r.opt)("string"),room:(0,r.opt)("string"),floor:(0,r.opt)("string"),inputs:(0,r.opt)((0,r.iface)([],{[r.indexKey]:"InOutPut"})),outputs:(0,r.opt)((0,r.iface)([],{[r.indexKey]:"InOutPut"})),type:(0,r.opt)("string")})},s={Configuration:(0,r.iface)([],{[r.indexKey]:"SysAP"})},a={Device:(0,r.iface)([],{displayName:(0,r.opt)("string"),room:(0,r.opt)("string"),floor:(0,r.opt)("string"),interface:(0,r.opt)("string"),nativeId:(0,r.opt)("string"),channels:(0,r.opt)((0,r.iface)([],{[r.indexKey]:"Channel"}))})},c={DeviceList:(0,r.iface)([],{[r.indexKey]:(0,r.array)("string")})},u={DeviceResponse:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{devices:"Devices"})})},l={Devices:(0,r.iface)([],{[r.indexKey]:"Device"})},f={Error:(0,r.iface)([],{code:"string",detail:"string",title:"string"})},p={Floors:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{name:"string",rooms:"Rooms"})})},h={GetDataPointResponse:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{values:(0,r.array)("string")})})},v={InOutPut:(0,r.iface)([],{value:(0,r.opt)("string"),pairingID:(0,r.opt)("number")})},d={Rooms:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{name:"string"})})},y={ScenesTriggered:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{channels:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{outputs:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{value:"string",pairingID:"number"})})})})})})},g={SetDataPointResponse:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{[r.indexKey]:"string"})})},b={SysAP:(0,r.iface)([],{devices:"Devices",floorplan:(0,r.iface)([],{floors:"Floors"}),sysapName:"string",users:"Users",error:(0,r.opt)("Error")})},m={Users:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{enabled:"boolean",flags:(0,r.array)("string"),grantedPermissions:(0,r.array)("string"),jid:"string",name:"string",requestedPermissions:(0,r.array)("string"),role:"string"})})},w={VirtualDeviceResponse:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{devices:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{serial:"string"})})})})},S={WebSocketMessage:(0,r.iface)([],{[r.indexKey]:(0,r.iface)([],{datapoints:(0,r.iface)([],{[r.indexKey]:"string"}),devices:(0,r.iface)([],{[r.indexKey]:"Devices"}),devicesAdded:(0,r.array)("string"),devicesRemoved:(0,r.array)("string"),scenesTriggered:"ScenesTriggered"})})},{Channel:x}=(0,r.createCheckers)(n,v),{Configuration:_}=(0,r.createCheckers)(s,l,a,n,v,p,d,b,m,f),{Device:E}=(0,r.createCheckers)(a,n,v),{DeviceList:O}=(0,r.createCheckers)(c),{DeviceResponse:A}=(0,r.createCheckers)(u,l,a,n,v),{GetDataPointResponse:k}=(0,r.createCheckers)(h),{SetDataPointResponse:R}=(0,r.createCheckers)(g),{VirtualDeviceResponse:C}=(0,r.createCheckers)(w),{WebSocketMessage:P}=(0,r.createCheckers)(S,l,a,n,v,y);var L,D,T;function W(e,t,r,n){if(n)try{return t.check(e),!0}catch(e){return r.error("Object validation failed!",e),!1}return t.test(e)}function j(e,t,r=!1){return W(e,P,t,r)}function M(e,t,r=!1){return W(e,_,t,r)}function $(e,t,r=!1){return W(e,O,t,r)}function K(e,t,r=!1){return W(e,A,t,r)}function I(e,t,r=!1){return W(e,k,t,r)}function Q(e,t,r=!1){return W(e,R,t,r)}function B(e,t,r=!1){return W(e,C,t,r)}function N(e,t,r=!1){return W(e,x,t,r)}function V(e,t,r=!1){return W(e,E,t,r)}!function(e){e.BinarySensor="BinarySensor",e.BlindActuator="BlindActuator",e.SwitchingActuator="SwitchingActuator",e.CeilingFanActuator="CeilingFanActuator",e.RTC="RTC",e.DimActuator="DimActuator",e.EVCharging="evcharging",e.WindowSensor="WindowSensor",e.SimpleDoorlock="simple_doorlock",e.ShutterActuator="ShutterActuator",e.WeatherStation="WeatherStation",e.WeatherTemperatureSensor="Weather-TemperatureSensor",e.WeatherWindSensor="Weather-WindSensor",e.WeatherBrightnessSensor="Weather-BrightnessSensor",e.WeatherRainSensor="Weather-RainSensor",e.WindowActuator="WindowActuator",e.CODetector="CODetector",e.FireDetector="FireDetector",e.KNXSwitchSensor="KNX-SwitchSensor",e.MediaPlayer="MediaPlayer",e.EnergyBattery="EnergyBattery",e.EnergyInverter="EnergyInverter",e.EnergyMeter="EnergyMeter",e.EnergyInverterBattery="EnergyInverterBattery",e.EnergyInverterMeter="EnergyInverterMeter",e.EnergyInverterMeterBattery="EnergyInverterMeterBattery",e.EnergyMeterBattery="EnergyMeterBattery",e.AirQualityCO2="AirQualityCO2",e.AirQualityCO="AirQualityCO",e.AirQualityFull="AirQualityFull",e.AirQualityHumidity="AirQualityHumidity",e.AirQualityNO2="AirQualityNO2",e.AirQualityO3="AirQualityO3",e.AirQualityPM10="AirQualityPM10",e.AirQualityPM25="AirQualityPM25",e.AirQualityPressure="AirQualityPressure",e.AirQualityTemperature="AirQualityTemperature",e.AirQualityVOC="AirQualityVOC"}(T||(T={}));var F=function(e,t){return F=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},F(e,t)};function U(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}F(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function z(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function G(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s}function H(e,t,r){if(r||2===arguments.length)for(var n,i=0,o=t.length;i<o;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))}function J(e){return"function"==typeof e}function q(e){var t=e((function(e){Error.call(e),e.stack=(new Error).stack}));return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var X=q((function(e){return function(t){e(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map((function(e,t){return t+1+") "+e.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=t}}));function Y(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Z=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}var t;return e.prototype.unsubscribe=function(){var e,t,r,n,i;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var s=z(o),a=s.next();!a.done;a=s.next())a.value.remove(this)}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}else o.remove(this);var c=this.initialTeardown;if(J(c))try{c()}catch(e){i=e instanceof X?e.errors:[e]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var l=z(u),f=l.next();!f.done;f=l.next()){var p=f.value;try{re(p)}catch(e){i=null!=i?i:[],e instanceof X?i=H(H([],G(i)),G(e.errors)):i.push(e)}}}catch(e){r={error:e}}finally{try{f&&!f.done&&(n=l.return)&&n.call(l)}finally{if(r)throw r.error}}}if(i)throw new X(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)re(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(r=this._finalizers)&&void 0!==r?r:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&Y(t,e)},e.prototype.remove=function(t){var r=this._finalizers;r&&Y(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}(),ee=Z.EMPTY;function te(e){return e instanceof Z||e&&"closed"in e&&J(e.remove)&&J(e.add)&&J(e.unsubscribe)}function re(e){J(e)?e():e.unsubscribe()}var ne=null,ie=null,oe=void 0,se=!1,ae=!1,ce={setTimeout:function(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var i=ce.delegate;return(null==i?void 0:i.setTimeout)?i.setTimeout.apply(i,H([e,t],G(r))):setTimeout.apply(void 0,H([e,t],G(r)))},clearTimeout:function(e){var t=ce.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function ue(){}var le=fe("C",void 0,void 0);function fe(e,t,r){return{kind:e,value:t,error:r}}var pe=null;function he(e){if(se){var t=!pe;if(t&&(pe={errorThrown:!1,error:null}),e(),t){var r=pe,n=r.errorThrown,i=r.error;if(pe=null,n)throw i}}else e()}var ve=function(e){function t(t){var r=e.call(this)||this;return r.isStopped=!1,t?(r.destination=t,te(t)&&t.add(r)):r.destination=Se,r}return U(t,e),t.create=function(e,t,r){return new be(e,t,r)},t.prototype.next=function(e){this.isStopped?we(function(e){return fe("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?we(fe("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?we(le,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(Z),de=Function.prototype.bind;function ye(e,t){return de.call(e,t)}var ge=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){me(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){me(e)}else me(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){me(e)}},e}(),be=function(e){function t(t,r,n){var i,o,s=e.call(this)||this;return J(t)||!t?i={next:null!=t?t:void 0,error:null!=r?r:void 0,complete:null!=n?n:void 0}:s&&ae?((o=Object.create(t)).unsubscribe=function(){return s.unsubscribe()},i={next:t.next&&ye(t.next,o),error:t.error&&ye(t.error,o),complete:t.complete&&ye(t.complete,o)}):i=t,s.destination=new ge(i),s}return U(t,e),t}(ve);function me(e){var t;se?(t=e,se&&pe&&(pe.errorThrown=!0,pe.error=t)):function(e){ce.setTimeout((function(){if(!ne)throw e;ne(e)}))}(e)}function we(e,t){var r=ie;r&&ce.setTimeout((function(){return r(e,t)}))}var Se={closed:!0,next:ue,error:function(e){throw e},complete:ue},xe="function"==typeof Symbol&&Symbol.observable||"@@observable";function _e(e){return e}var Ee=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var r=new e;return r.source=this,r.operator=t,r},e.prototype.subscribe=function(e,t,r){var n,i=this,o=(n=e)&&n instanceof ve||function(e){return e&&J(e.next)&&J(e.error)&&J(e.complete)}(n)&&te(n)?e:new be(e,t,r);return he((function(){var e=i,t=e.operator,r=e.source;o.add(t?t.call(o,r):r?i._subscribe(o):i._trySubscribe(o))})),o},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var r=this;return new(t=Oe(t))((function(t,n){var i=new be({next:function(t){try{e(t)}catch(e){n(e),i.unsubscribe()}},error:n,complete:t});r.subscribe(i)}))},e.prototype._subscribe=function(e){var t;return null===(t=this.source)||void 0===t?void 0:t.subscribe(e)},e.prototype[xe]=function(){return this},e.prototype.pipe=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return(0===(r=e).length?_e:1===r.length?r[0]:function(e){return r.reduce((function(e,t){return t(e)}),e)})(this);var r},e.prototype.toPromise=function(e){var t=this;return new(e=Oe(e))((function(e,r){var n;t.subscribe((function(e){return n=e}),(function(e){return r(e)}),(function(){return e(n)}))}))},e.create=function(t){return new e(t)},e}();function Oe(e){var t;return null!==(t=null!=e?e:oe)&&void 0!==t?t:Promise}var Ae=q((function(e){return function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})),ke=function(e){function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return U(t,e),t.prototype.lift=function(e){var t=new Re(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new Ae},t.prototype.next=function(e){var t=this;he((function(){var r,n;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||(t.currentObservers=Array.from(t.observers));try{for(var i=z(t.currentObservers),o=i.next();!o.done;o=i.next())o.value.next(e)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}}}))},t.prototype.error=function(e){var t=this;he((function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var r=t.observers;r.length;)r.shift().error(e)}}))},t.prototype.complete=function(){var e=this;he((function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}}))},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,r=this,n=r.hasError,i=r.isStopped,o=r.observers;return n||i?ee:(this.currentObservers=null,o.push(e),new Z((function(){t.currentObservers=null,Y(o,e)})))},t.prototype._checkFinalizedStatuses=function(e){var t=this,r=t.hasError,n=t.thrownError,i=t.isStopped;r?e.error(n):i&&e.complete()},t.prototype.asObservable=function(){var e=new Ee;return e.source=this,e},t.create=function(e,t){return new Re(e,t)},t}(Ee),Re=function(e){function t(t,r){var n=e.call(this)||this;return n.destination=t,n.source=r,n}return U(t,e),t.prototype.next=function(e){var t,r;null===(r=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===r||r.call(t,e)},t.prototype.error=function(e){var t,r;null===(r=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===r||r.call(t,e)},t.prototype.complete=function(){var e,t;null===(t=null===(e=this.destination)||void 0===e?void 0:e.complete)||void 0===t||t.call(e)},t.prototype._subscribe=function(e){var t,r;return null!==(r=null===(t=this.source)||void 0===t?void 0:t.subscribe(e))&&void 0!==r?r:ee},t}(ke);const Ce=(e=>{var t={};return i.d(t,e),t})({WebSocket:()=>t.WebSocket});var Pe=i(187),Le=function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))};class De extends Pe.EventEmitter{constructor(e,t,r,n=!0,i=!1,o){super(),this.webSocketMessageSubject=new ke,this.logger=null!=o?o:console,this.basicAuthKey=Buffer.from(`${t}:${r}`,"utf8").toString("base64"),this.hostName=e,this.tlsEnabled=n,this.verboseErrors=i}connectWebSocket(e=!0){if(this.webSocket&&this.webSocket.readyState===Ce.WebSocket.OPEN)throw new Error("Web socket is already connected");this.webSocket=this.createWebSocket(e)}createVirtualDevice(e,t,r){return Le(this,void 0,void 0,(function*(){const n=yield this.fetchDataViaRest("PUT",`virtualdevice/${e}/${t}`,JSON.stringify(r));return this.processRestResponse(n,B)}))}createWebSocket(e){this.tlsEnabled&&!e&&this.logger.warn("TLS certificate verification is disabled! This poses a security risk, activating certificate verification is strictly recommended.");const t=`${this.tlsEnabled?"wss":"ws"}://${this.hostName}/fhapi/v1/api/ws`,r={rejectUnauthorized:this.tlsEnabled&&e,headers:{Authorization:`Basic ${this.basicAuthKey}`}},n=new Ce.WebSocket(t,r);return n.on("error",(e=>{this.emit("websocket-error",e),this.logger.error("Error received",e)})),n.on("ping",(e=>{this.emit("websocket-ping",e),this.logger.debug("Ping received",e.toString("ascii"))})),n.on("pong",(e=>{this.emit("websocket-pong",e),this.logger.debug("Pong received",e.toString("ascii"))})),n.on("unexpected-response",((e,t)=>{this.emit("websocket-unexpected-response",e,t),this.logger.error("Unexpected response received")})),n.on("upgrade",(e=>{this.emit("websocket-upgrade",e),this.logger.debug("Upgrade request received")})),n.on("open",(()=>{this.emit("websocket-open"),this.logger.log("Connection opened")})),n.on("close",((e,t)=>{this.emit("websocket-close",e,t),this.logger.log("Connection closed")})),n.on("message",((e,t)=>{this.emit("websocket-message",e,t),this.processWebSocketMessage(e,t)})),n}disconnectWebSocket(e=!1){if(!this.webSocket||this.webSocket.readyState===Ce.WebSocket.CLOSED)throw new Error("Web socket is not open");e?this.webSocket.terminate():this.webSocket.close()}getConfiguration(){return Le(this,void 0,void 0,(function*(){const e=yield this.fetchDataViaRest("GET","configuration");return this.processRestResponse(e,M)}))}getDeviceList(){return Le(this,void 0,void 0,(function*(){const e=yield this.fetchDataViaRest("GET","devicelist");return this.processRestResponse(e,$)}))}getDevice(e,t){return Le(this,void 0,void 0,(function*(){const r=yield this.fetchDataViaRest("GET",`device/${e}/${t}`);return this.processRestResponse(r,K)}))}getDatapoint(e,t,r,n){return Le(this,void 0,void 0,(function*(){const i=yield this.fetchDataViaRest("GET",`datapoint/${e}/${t}.${r}.${n}`);return this.processRestResponse(i,I)}))}getWebSocketMessages(){return this.webSocketMessageSubject.asObservable()}setDatapoint(e,t,r,n,i){return Le(this,void 0,void 0,(function*(){const o=yield this.fetchDataViaRest("PUT",`datapoint/${e}/${t}.${r}.${n}`,i);return this.processRestResponse(o,Q)}))}triggerProxyDevice(e,t,r,n){return Le(this,void 0,void 0,(function*(){const i=yield this.fetchDataViaRest("GET",`proxydevice/${e}/${t}/${r}/action/${n}`);return this.processRestResponse(i,K)}))}setProxyDeviceValue(e,t,r,n){return Le(this,void 0,void 0,(function*(){const i=yield this.fetchDataViaRest("PUT",`proxydevice/${e}/${t}/${r}/value/${n}`);return this.processRestResponse(i,K)}))}fetchDataViaRest(e,t,r=void 0){return Le(this,void 0,void 0,(function*(){const n=`${this.tlsEnabled?"https":"http"}://${this.hostName}/fhapi/v1/api/rest/${t}`,i={method:e,headers:{Authorization:`Basic ${this.basicAuthKey}`},body:r};return fetch(n,i)}))}processRestResponse(e,t){return Le(this,void 0,void 0,(function*(){let r,n;switch(e.status){case 200:if(r=yield e.json(),!t(r,this.logger,this.verboseErrors))throw n="Received message has an unexpected type!",this.logger.error(n,r),new Error(n);return r;case 401:throw n="Authentication information is missing or invalid.",this.logger.error(n),new Error(n);case 502:throw n=yield e.text(),this.logger.error(n),new Error(n);default:throw n=`Received HTTP ${e.status} status code unexpectedly: ${yield e.text()}`,this.logger.error(n),new Error(n)}}))}processWebSocketMessage(e,t){if(t)return void this.logger.warn("Binary message received. Binary messages are not processed.");this.logger.debug("Message received");const r=e.toString(),n=JSON.parse(r);j(n,this.logger,this.verboseErrors)?this.webSocketMessageSubject.next(n):this.logger.error("Received message has an unexpected type!",r)}}})();var s=o.ns,a=o.LB,c=o.J6,u=o.s,l=o.h4,f=o.L$,p=o.LT,h=o.iH,v=o.W0,d=o.ip,y=o.DO;export{s as SystemAccessPoint,a as VirtualDeviceType,c as isChannel,u as isConfiguration,l as isDevice,f as isDeviceList,p as isDeviceResponse,h as isGetDataPointResponse,v as isSetDataPointResponse,d as isVirtualDeviceResponse,y as isWebSocketMessage};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://freeathome-local-api-client/./node_modules/events/events.js","webpack://freeathome-local-api-client/webpack/bootstrap","webpack://freeathome-local-api-client/webpack/runtime/define property getters","webpack://freeathome-local-api-client/webpack/runtime/hasOwnProperty shorthand","webpack://freeathome-local-api-client/external module \"ts-interface-checker\"","webpack://freeathome-local-api-client/./src/model/validation/channel-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/configuration-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/device-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/device-list-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/device-response-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/devices-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/error-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/floors-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/get-data-point-response-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/in-out-put-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/rooms-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/scenes-triggered-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/set-data-point-response-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/sys-ap-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/users-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/virtual-device-response-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/websocket-message-ti.ts","webpack://freeathome-local-api-client/./src/model/validator.ts","webpack://freeathome-local-api-client/./src/model/virtual-device.ts","webpack://freeathome-local-api-client/./node_modules/tslib/tslib.es6.mjs","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/isFunction.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/Subscription.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/config.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/noop.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/NotificationFactories.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/errorContext.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/Subscriber.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/symbol/observable.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/identity.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/Observable.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/pipe.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/Subject.js","webpack://freeathome-local-api-client/external module \"ws\"","webpack://freeathome-local-api-client/./src/system-access-point.ts"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"array\"]: () => __WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__.array, [\"createCheckers\"]: () => __WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__.createCheckers, [\"iface\"]: () => __WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__.iface, [\"indexKey\"]: () => __WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__.indexKey, [\"opt\"]: () => __WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__.opt });","import { ITypeSuite, iface, indexKey, opt } from \"ts-interface-checker\";\n\nconst Channel = iface([], {\n displayName: opt(\"string\"),\n functionID: opt(\"string\"),\n room: opt(\"string\"),\n floor: opt(\"string\"),\n inputs: opt(\n iface([], {\n [indexKey]: \"InOutPut\",\n })\n ),\n outputs: opt(\n iface([], {\n [indexKey]: \"InOutPut\",\n })\n ),\n type: opt(\"string\"),\n});\n\nexport const ChannelTypeSuite: ITypeSuite = {\n Channel,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst Configuration = iface([], {\n [indexKey]: \"SysAP\",\n});\n\nexport const ConfigurationTypeSuite: ITypeSuite = {\n Configuration,\n};\n","import { iface, indexKey, opt, ITypeSuite } from \"ts-interface-checker\";\n\nconst Device = iface([], {\n displayName: opt(\"string\"),\n room: opt(\"string\"),\n floor: opt(\"string\"),\n interface: opt(\"string\"),\n nativeId: opt(\"string\"),\n channels: opt(\n iface([], {\n [indexKey]: \"Channel\",\n })\n ),\n});\n\nexport const DeviceTypeSuite: ITypeSuite = {\n Device,\n};\n","import { array, iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst DeviceList = iface([], {\n [indexKey]: array(\"string\"),\n});\n\nexport const DeviceListTypeSuite: ITypeSuite = {\n DeviceList,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst DeviceResponse = iface([], {\n [indexKey]: iface([], {\n devices: \"Devices\",\n }),\n});\n\nexport const DeviceResponseTypeSuite: ITypeSuite = {\n DeviceResponse,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst Devices = iface([], {\n [indexKey]: \"Device\",\n});\n\nexport const DevicesTypeSuite: ITypeSuite = {\n Devices,\n};\n","import { iface, ITypeSuite } from \"ts-interface-checker\";\n\nconst Error = iface([], {\n code: \"string\",\n detail: \"string\",\n title: \"string\",\n});\n\nexport const ErrorTypeSuite: ITypeSuite = {\n Error,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst Floors = iface([], {\n [indexKey]: iface([], {\n name: \"string\",\n rooms: \"Rooms\",\n }),\n});\n\nexport const FloorsTypeSuite: ITypeSuite = {\n Floors,\n};\n","import { array, iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst GetDataPointResponse = iface([], {\n [indexKey]: iface([], {\n values: array(\"string\"),\n }),\n});\n\nexport const GetDataPointResponseTypeSuite: ITypeSuite = {\n GetDataPointResponse,\n};\n","import { iface, opt, ITypeSuite } from \"ts-interface-checker\";\n\nconst InOutPut = iface([], {\n value: opt(\"string\"),\n pairingID: opt(\"number\"),\n});\n\nexport const InOutPutTypeSuite: ITypeSuite = {\n InOutPut,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst Rooms = iface([], {\n [indexKey]: iface([], {\n name: \"string\",\n }),\n});\n\nexport const RoomsTypeSuite: ITypeSuite = {\n Rooms,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst ScenesTriggered = iface([], {\n [indexKey]: iface([], {\n channels: iface([], {\n [indexKey]: iface([], {\n outputs: iface([], {\n [indexKey]: iface([], {\n value: \"string\",\n pairingID: \"number\",\n }),\n }),\n }),\n }),\n }),\n});\n\nexport const ScenesTriggeredTypeSuite: ITypeSuite = {\n ScenesTriggered,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst SetDataPointResponse = iface([], {\n [indexKey]: iface([], {\n [indexKey]: \"string\",\n }),\n});\n\nexport const SetDataPointResponseTypeSuite: ITypeSuite = {\n SetDataPointResponse,\n};\n","import { iface, opt, ITypeSuite } from \"ts-interface-checker\";\n\nconst SysAP = iface([], {\n devices: \"Devices\",\n floorplan: iface([], {\n floors: \"Floors\",\n }),\n sysapName: \"string\",\n users: \"Users\",\n error: opt(\"Error\"),\n});\n\nexport const SysApTypeSuite: ITypeSuite = {\n SysAP,\n};\n","import { array, iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst Users = iface([], {\n [indexKey]: iface([], {\n enabled: \"boolean\",\n flags: array(\"string\"),\n grantedPermissions: array(\"string\"),\n jid: \"string\",\n name: \"string\",\n requestedPermissions: array(\"string\"),\n role: \"string\",\n }),\n});\n\nexport const UsersTypeSuite: ITypeSuite = {\n Users,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst VirtualDeviceResponse = iface([], {\n [indexKey]: iface([], {\n devices: iface([], {\n [indexKey]: iface([], {\n serial: \"string\",\n }),\n }),\n }),\n});\n\nexport const VirtualDeviceResponseTypeSuite: ITypeSuite = {\n VirtualDeviceResponse,\n};\n","import { array, iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst WebSocketMessage = iface([], {\n [indexKey]: iface([], {\n datapoints: iface([], {\n [indexKey]: \"string\",\n }),\n devices: iface([], {\n [indexKey]: \"Devices\",\n }),\n devicesAdded: array(\"string\"),\n devicesRemoved: array(\"string\"),\n scenesTriggered: \"ScenesTriggered\",\n }),\n});\n\nexport const WebSocketMessageTypeSuite: ITypeSuite = {\n WebSocketMessage,\n};\n","import {\n ChannelTypeSuite,\n DeviceTypeSuite,\n DevicesTypeSuite,\n InOutPutTypeSuite,\n ScenesTriggeredTypeSuite,\n WebSocketMessageTypeSuite,\n DeviceListTypeSuite,\n SetDataPointResponseTypeSuite,\n GetDataPointResponseTypeSuite,\n ConfigurationTypeSuite,\n FloorsTypeSuite,\n RoomsTypeSuite,\n SysApTypeSuite,\n UsersTypeSuite,\n ErrorTypeSuite,\n DeviceResponseTypeSuite,\n VirtualDeviceResponseTypeSuite,\n} from \"./validation\";\nimport { Checker, createCheckers } from \"ts-interface-checker\";\nimport { WebSocketMessage as Message } from \"./websocket-message\";\nimport { Configuration as Config } from \"./configuration\";\nimport { Channel as Chan } from \"./channel\";\nimport { Device as Dev } from \"./device\";\nimport { DeviceList as DevList } from \"./device-list\";\nimport { DeviceResponse as DevResponse } from \"./device-response\";\nimport { GetDataPointResponse as GetResponse } from \"./get-data-point-response\";\nimport { SetDataPointResponse as SetResponse } from \"./set-data-point-response\";\nimport { VirtualDeviceResponse as VDeviceResponse } from \"./virtual-device-response\";\nimport { Logger } from \"./logger\";\n\nconst { Channel } = createCheckers(ChannelTypeSuite, InOutPutTypeSuite);\n\nconst { Configuration } = createCheckers(\n ConfigurationTypeSuite,\n DevicesTypeSuite,\n DeviceTypeSuite,\n ChannelTypeSuite,\n InOutPutTypeSuite,\n FloorsTypeSuite,\n RoomsTypeSuite,\n SysApTypeSuite,\n UsersTypeSuite,\n ErrorTypeSuite\n);\n\nconst { Device } = createCheckers(\n DeviceTypeSuite,\n ChannelTypeSuite,\n InOutPutTypeSuite\n);\n\nconst { DeviceList } = createCheckers(DeviceListTypeSuite);\n\nconst { DeviceResponse } = createCheckers(\n DeviceResponseTypeSuite,\n DevicesTypeSuite,\n DeviceTypeSuite,\n ChannelTypeSuite,\n InOutPutTypeSuite\n);\n\nconst { GetDataPointResponse } = createCheckers(GetDataPointResponseTypeSuite);\n\nconst { SetDataPointResponse } = createCheckers(SetDataPointResponseTypeSuite);\n\nconst { VirtualDeviceResponse } = createCheckers(\n VirtualDeviceResponseTypeSuite\n);\n\nconst { WebSocketMessage } = createCheckers(\n WebSocketMessageTypeSuite,\n DevicesTypeSuite,\n DeviceTypeSuite,\n ChannelTypeSuite,\n InOutPutTypeSuite,\n ScenesTriggeredTypeSuite\n);\n\nfunction check(\n obj: unknown,\n checker: Checker,\n logger: Logger,\n verbose: boolean\n): boolean {\n if (verbose) {\n try {\n checker.check(obj);\n return true;\n } catch (error) {\n logger.error(\"Object validation failed!\", error);\n return false;\n }\n }\n\n return checker.test(obj);\n}\n\n/**\n * Determines whether the specified object is a web socket message.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a web socket message.\n */\nexport function isWebSocketMessage(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is Message {\n return check(obj, WebSocketMessage, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a configuration.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a configuration.\n */\nexport function isConfiguration(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is Config {\n return check(obj, Configuration, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a device list.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a device list.\n */\nexport function isDeviceList(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is DevList {\n return check(obj, DeviceList, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a device response.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a device response.\n */\nexport function isDeviceResponse(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is DevResponse {\n return check(obj, DeviceResponse, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a valid response to a get data point request.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a response to a get data point request.\n */\nexport function isGetDataPointResponse(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is GetResponse {\n return check(obj, GetDataPointResponse, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a valid response to a set data point request.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a response to a set data point request.\n */\nexport function isSetDataPointResponse(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is SetResponse {\n return check(obj, SetDataPointResponse, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a virtual device response.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a response to a virtual device request.\n */\nexport function isVirtualDeviceResponse(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is VDeviceResponse {\n return check(obj, VirtualDeviceResponse, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a channel.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a channel.\n */\nexport function isChannel(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is Chan {\n return check(obj, Channel, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a device.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a device.\n */\nexport function isDevice(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is Dev {\n return check(obj, Device, logger, verbose);\n}\n","/** Defines a virtual device. */\nexport interface VirtualDevice {\n /** The virtual device type. */\n type: VirtualDeviceType;\n /** The virtual device properties */\n properties?: {\n /** The time to live value indicates the number of seconds the system access point will wait for a message before it assumes the device to be unresponsive. */\n ttl?: string;\n /** The display name for the virtual device. */\n displayname?: string;\n };\n}\n\n/** Defines the possible types of virtual devices. */\nexport enum VirtualDeviceType {\n /** A binary sensor */\n BinarySensor = \"BinarySensor\",\n /** A blind actuator */\n BlindActuator = \"BlindActuator\",\n /** A switching actuator */\n SwitchingActuator = \"SwitchingActuator\",\n /** A ceiling fan actuator */\n CeilingFanActuator = \"CeilingFanActuator\",\n /** A real time clock */\n RTC = \"RTC\",\n /** A dimmer actuator */\n DimActuator = \"DimActuator\",\n /** A charger for an electronic vehicle */\n EVCharging = \"evcharging\",\n /** A window sensor */\n WindowSensor = \"WindowSensor\",\n /** A simple door lock */\n SimpleDoorlock = \"simple_doorlock\",\n /** A shutter actuator */\n ShutterActuator = \"ShutterActuator\",\n /** A weather station */\n WeatherStation = \"WeatherStation\",\n /** A temperature sensor */\n WeatherTemperatureSensor = \"Weather-TemperatureSensor\",\n /** A wind sensor */\n WeatherWindSensor = \"Weather-WindSensor\",\n /** A brightness sensor */\n WeatherBrightnessSensor = \"Weather-BrightnessSensor\",\n /** A rain sensor */\n WeatherRainSensor = \"Weather-RainSensor\",\n /** A window actuator */\n WindowActuator = \"WindowActuator\",\n /** A detector for carbon monoxide (CO) */\n CODetector = \"CODetector\",\n /** A fire detector */\n FireDetector = \"FireDetector\",\n /** A KNX switch sensor */\n KNXSwitchSensor = \"KNX-SwitchSensor\",\n /** A media player */\n MediaPlayer = \"MediaPlayer\",\n /** A battery */\n EnergyBattery = \"EnergyBattery\",\n /** An inverter */\n EnergyInverter = \"EnergyInverter\",\n /** An energy meter */\n EnergyMeter = \"EnergyMeter\",\n /** A device combining inverter and battery characteristics */\n EnergyInverterBattery = \"EnergyInverterBattery\",\n /** A device combining inverter and energy meter characteristics */\n EnergyInverterMeter = \"EnergyInverterMeter\",\n /** A device combining inverter, battery and energy meter characteristics */\n EnergyInverterMeterBattery = \"EnergyInverterMeterBattery\",\n /** A device combining battery and energy meter characteristics */\n EnergyMeterBattery = \"EnergyMeterBattery\",\n /** An air quality sensor measuring carbon dioxide (CO2) */\n AirQualityCO2 = \"AirQualityCO2\",\n /** An air quality sensor measuring carbon monoxide (CO) */\n AirQualityCO = \"AirQualityCO\",\n /** An full air quality sensor */\n AirQualityFull = \"AirQualityFull\",\n /** An air quality sensor measuring humidity */\n AirQualityHumidity = \"AirQualityHumidity\",\n /** An air quality sensor measuring nitrogen dioxide (NO2) */\n AirQualityNO2 = \"AirQualityNO2\",\n /** An air quality sensor measuring ozone (O3) */\n AirQualityO3 = \"AirQualityO3\",\n /** An air quality sensor measuring coarse particulate matter with in the 10 micron scale */\n AirQualityPM10 = \"AirQualityPM10\",\n /** An air quality sensor measuring coarse particulate matter with in the 25 micron scale */\n AirQualityPM25 = \"AirQualityPM25\",\n /** An air quality sensor measuring barometric pressure */\n AirQualityPressure = \"AirQualityPressure\",\n /** An air quality sensor measuring temperature */\n AirQualityTemperature = \"AirQualityTemperature\",\n /** An air quality sensor measuring volatile organic compounds */\n AirQualityVOC = \"AirQualityVOC\",\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n};\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","export var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\n//# sourceMappingURL=NotificationFactories.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"WebSocket\"]: () => __WEBPACK_EXTERNAL_MODULE_ws__.WebSocket });","import { Observable, Subject } from \"rxjs\";\nimport { ClientOptions, RawData, WebSocket } from \"ws\";\nimport { EventEmitter } from \"events\";\nimport {\n Configuration,\n DeviceList,\n DeviceResponse,\n GetDataPointResponse,\n isDeviceList,\n isDeviceResponse,\n isWebSocketMessage,\n isGetDataPointResponse,\n isSetDataPointResponse,\n isConfiguration,\n SetDataPointResponse,\n WebSocketMessage,\n VirtualDevice,\n VirtualDeviceResponse,\n Logger,\n} from \"./model\";\nimport { isVirtualDeviceResponse } from \"./model/validator\";\n\n/** The HTTP request method */\ntype HttpRequestMethod = \"GET\" | \"POST\" | \"DELETE\" | \"PATCH\" | \"PUT\";\n\n/** The class representing a System Access Point. */\nexport class SystemAccessPoint extends EventEmitter {\n /** The basic authentication key used for requests. */\n public readonly basicAuthKey: string;\n /** The host name of the system access point. */\n public readonly hostName: string;\n /** Determines whether requests to the system access point will use TLS. */\n public readonly tlsEnabled: boolean;\n private readonly logger: Logger;\n private verboseErrors: boolean;\n private webSocket?: WebSocket;\n private readonly webSocketMessageSubject = new Subject<WebSocketMessage>();\n\n /**\n * Constructs a new SystemAccessPoint instance\n *\n * @constructor\n * @param hostName {string} The system access point host name.\n * @param userName {string} The user name that shall be used to authenticate with the system access point.\n * @param password {string} The password that shall be used to authenticate with the system access point.\n * @param tlsEnabled {boolean} Determines whether the communication with the system access point shall be protected by TLS.\n * @param verboseErrors {boolean} Determines whether verbose error messages shall be used, for example for message validation.\n * @param logger {Logger} The logger instance to be used. If no explicit implementation is provided, the this.logger will be used for logging.\n */\n constructor(\n hostName: string,\n userName: string,\n password: string,\n tlsEnabled = true,\n verboseErrors = false,\n logger?: Logger\n ) {\n super();\n\n // Configure logging\n this.logger = logger ?? console;\n\n // Create Basic Authentication key\n this.basicAuthKey = Buffer.from(`${userName}:${password}`, \"utf8\").toString(\n \"base64\"\n );\n this.hostName = hostName;\n this.tlsEnabled = tlsEnabled;\n this.verboseErrors = verboseErrors;\n }\n\n /**\n * Connects to the System Access Point web socket.\n * @param certificateVerification {boolean} Determines whether the TLS certificate presented by the server will be verified.\n */\n public connectWebSocket(certificateVerification = true): void {\n if (this.webSocket && this.webSocket.readyState === WebSocket.OPEN) {\n throw new Error(\"Web socket is already connected\");\n }\n\n this.webSocket = this.createWebSocket(certificateVerification);\n }\n\n /**\n * Creates a new virtual device.\n * @param sysApUuid {string} The UUID identifying the system access point.\n * @param deviceSerial {string} The serial number to be assigned to the device.\n * @param virtualDevice {VirtualDevice} The virtual device to be created.\n * @returns {Promise.<VirtualDeviceResponse>} The response to the virtual device request.\n */\n public async createVirtualDevice(\n sysApUuid: string,\n deviceSerial: string,\n virtualDevice: VirtualDevice\n ): Promise<VirtualDeviceResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"PUT\",\n `virtualdevice/${sysApUuid}/${deviceSerial}`,\n JSON.stringify(virtualDevice)\n );\n\n // Process response\n return this.processRestResponse(response, isVirtualDeviceResponse);\n }\n\n private createWebSocket(certificateVerification: boolean): WebSocket {\n // Disabling certificate verification is discouraged, issue a warning\n if (this.tlsEnabled && !certificateVerification) {\n this.logger.warn(\n \"TLS certificate verification is disabled! This poses a security risk, activating certificate verification is strictly recommended.\"\n );\n }\n\n const url = `${this.tlsEnabled ? \"wss\" : \"ws\"}://${\n this.hostName\n }/fhapi/v1/api/ws`;\n const options: ClientOptions = {\n rejectUnauthorized: this.tlsEnabled && certificateVerification,\n headers: {\n Authorization: `Basic ${this.basicAuthKey}`,\n },\n };\n const webSocket = new WebSocket(url, options);\n webSocket.on(\"error\", (error: Error) => {\n this.emit(\"websocket-error\", error);\n this.logger.error(\"Error received\", error);\n });\n webSocket.on(\"ping\", (data: Buffer) => {\n this.emit(\"websocket-ping\", data);\n this.logger.debug(\"Ping received\", data.toString(\"ascii\"));\n });\n webSocket.on(\"pong\", (data: Buffer) => {\n this.emit(\"websocket-pong\", data);\n this.logger.debug(\"Pong received\", data.toString(\"ascii\"));\n });\n webSocket.on(\"unexpected-response\", (request, response) => {\n this.emit(\"websocket-unexpected-response\", request, response);\n this.logger.error(\"Unexpected response received\");\n });\n webSocket.on(\"upgrade\", (request) => {\n this.emit(\"websocket-upgrade\", request);\n this.logger.debug(\"Upgrade request received\");\n });\n webSocket.on(\"open\", () => {\n this.emit(\"websocket-open\");\n this.logger.log(\"Connection opened\");\n });\n webSocket.on(\"close\", (code, reason) => {\n this.emit(\"websocket-close\", code, reason);\n this.logger.log(\"Connection closed\");\n });\n webSocket.on(\"message\", (data: RawData, isBinary: boolean) => {\n this.emit(\"websocket-message\", data, isBinary);\n this.processWebSocketMessage(data, isBinary);\n });\n return webSocket;\n }\n\n /**\n * Disconnects from the System Access Point web socket.\n * @param force {boolean} Determines whether or not the connection will be closed forcibly.\n */\n public disconnectWebSocket(force = false): void {\n if (!this.webSocket || this.webSocket.readyState === WebSocket.CLOSED) {\n throw new Error(\"Web socket is not open\");\n }\n\n if (force) {\n this.webSocket.terminate();\n } else {\n this.webSocket.close();\n }\n }\n\n /**\n * Gets the configuration from the system access point.\n * @returns {Promise.<Configuration>} The system access point configuration.\n */\n public async getConfiguration(): Promise<Configuration> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"GET\",\n \"configuration\"\n );\n\n // Process response\n return this.processRestResponse(response, isConfiguration);\n }\n\n /**\n * Gets the device list from the system access point.\n * @returns {Promise.<DeviceList>} The requested device list.\n */\n public async getDeviceList(): Promise<DeviceList> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\"GET\", \"devicelist\");\n\n // Process response\n return this.processRestResponse(response, isDeviceList);\n }\n\n /**\n * Gets the specified device from the system access point.\n * @param sysApUuid {string} The UUID identifying the system access point.\n * @param deviceSerial {string} The device serial number.\n * @returns {Promise.<DeviceResponse>} The response to the device request.\n */\n public async getDevice(\n sysApUuid: string,\n deviceSerial: string\n ): Promise<DeviceResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"GET\",\n `device/${sysApUuid}/${deviceSerial}`\n );\n\n // Process response\n return this.processRestResponse(response, isDeviceResponse);\n }\n\n /**\n * Gets the specified data point from the system access point.\n * @param sysApUuid {string} The UUID idenfifying the system access point.\n * @param deviceSerial {string} The device serial number.\n * @param channel {string} The channel identifier.\n * @param dataPoint {string} The datapoint identifier.\n * @returns {Promise.<GetDataPointResponse>} The response to the get data point request.\n */\n public async getDatapoint(\n sysApUuid: string,\n deviceSerial: string,\n channel: string,\n dataPoint: string\n ): Promise<GetDataPointResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"GET\",\n `datapoint/${sysApUuid}/${deviceSerial}.${channel}.${dataPoint}`\n );\n\n // Process response\n return this.processRestResponse(response, isGetDataPointResponse);\n }\n\n /**\n * Gets the web socket messages.\n * @returns {Observable.<WebSocketMessage>} An observable that is updated with the messages received from the web socket.\n */\n public getWebSocketMessages(): Observable<WebSocketMessage> {\n return this.webSocketMessageSubject.asObservable();\n }\n\n /**\n * Sets a new value for the specificed data point.\n * @param sysApUuid {string} The UUID idenfifying the system access point.\n * @param deviceSerial {string} The device serial number.\n * @param channel {string} The channel identifier.\n * @param dataPoint {string} The datapoint identifier.\n * @param value {string} The new value to be set.\n * @returns {Promise.<SetDataPointResponse>} The response to the set data point request.\n */\n public async setDatapoint(\n sysApUuid: string,\n deviceSerial: string,\n channel: string,\n dataPoint: string,\n value: string\n ): Promise<SetDataPointResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"PUT\",\n `datapoint/${sysApUuid}/${deviceSerial}.${channel}.${dataPoint}`,\n value\n );\n\n // Process response\n return this.processRestResponse(response, isSetDataPointResponse);\n }\n\n /**\n * Triggeres the given action for the specified proxy device. Please note that this method is part of the experimental API!\n * @param sysApUuid {string} The UUID idenfifying the system access point.\n * @param deviceClass {string} The device class.\n * @param deviceSerial {string} The device serial number.\n * @param action {string} The action to be triggered.\n * @returns {Promise.<DeviceResponse>} The response to the request.\n */\n public async triggerProxyDevice(\n sysApUuid: string,\n deviceClass: string,\n deviceSerial: string,\n action: string\n ): Promise<DeviceResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"GET\",\n `proxydevice/${sysApUuid}/${deviceClass}/${deviceSerial}/action/${action}`\n );\n\n // Process response\n return this.processRestResponse(response, isDeviceResponse);\n }\n\n /**\n * Sets the given value for the specified proxy device. Please note that this method is part of the experimental API!\n * @param sysApUuid {string} The UUID idenfifying the system access point.\n * @param deviceClass {string} The device class.\n * @param deviceSerial {string} The device serial number.\n * @param value {string} The value to be set.\n * @returns {Promise.<DeviceResponse>} The response to the request.\n */\n public async setProxyDeviceValue(\n sysApUuid: string,\n deviceClass: string,\n deviceSerial: string,\n value: string\n ): Promise<DeviceResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"PUT\",\n `proxydevice/${sysApUuid}/${deviceClass}/${deviceSerial}/value/${value}`\n );\n\n // Process response\n return this.processRestResponse(response, isDeviceResponse);\n }\n\n private async fetchDataViaRest(\n method: HttpRequestMethod,\n route: string,\n body: BodyInit | null | undefined = undefined\n ): Promise<Response> {\n // Set up request info\n const info: RequestInfo = `${this.tlsEnabled ? \"https\" : \"http\"}://${\n this.hostName\n }/fhapi/v1/api/rest/${route}`;\n\n // Set up request init\n const init: RequestInit = {\n method: method,\n headers: {\n Authorization: `Basic ${this.basicAuthKey}`,\n },\n body: body,\n };\n\n // Get response from system access point\n return fetch(info, init);\n }\n\n private async processRestResponse<TResponse>(\n response: Response,\n typeGuard: (\n obj: unknown,\n logger: Logger,\n verbose: boolean\n ) => obj is TResponse\n ): Promise<TResponse> {\n let body: unknown;\n let message: string;\n\n // Process response\n switch (response.status) {\n case 200:\n body = await response.json();\n if (!typeGuard(body, this.logger, this.verboseErrors)) {\n message = \"Received message has an unexpected type!\";\n this.logger.error(message, body);\n throw new Error(message);\n }\n\n return body;\n case 401:\n message = \"Authentication information is missing or invalid.\";\n this.logger.error(message);\n throw new Error(message);\n case 502:\n message = await response.text();\n this.logger.error(message);\n throw new Error(message);\n default:\n message = `Received HTTP ${\n response.status\n } status code unexpectedly: ${await response.text()}`;\n this.logger.error(message);\n throw new Error(message);\n }\n }\n\n private processWebSocketMessage(data: RawData, isBinary: boolean): void {\n // Do not process binary messages\n if (isBinary) {\n this.logger.warn(\n \"Binary message received. Binary messages are not processed.\"\n );\n return;\n }\n\n this.logger.debug(\"Message received\");\n /*\n * Deserialize the message.\n * The message is expected to be deserializable as a web socket message.\n * If that is not the case, that's an error case.\n */\n const serialized = data.toString();\n const message: unknown = JSON.parse(serialized);\n\n if (isWebSocketMessage(message, this.logger, this.verboseErrors)) {\n this.webSocketMessageSubject.next(message);\n return;\n }\n\n this.logger.error(\"Received message has an unexpected type!\", serialized);\n }\n}\n"],"names":["ReflectOwnKeys","R","Reflect","ReflectApply","apply","target","receiver","args","Function","prototype","call","ownKeys","Object","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","value","EventEmitter","init","this","module","exports","once","emitter","name","Promise","resolve","reject","errorListener","err","removeListener","resolver","slice","arguments","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","undefined","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","type","prepend","m","events","existing","warning","create","newListener","emit","unshift","push","length","warned","w","Error","String","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","bind","_listeners","unwrap","evlistener","arr","ret","Array","i","unwrapListeners","arrayClone","listenerCount","n","copy","addEventListener","wrapListener","arg","removeEventListener","defineProperty","enumerable","get","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","index","pop","spliceOne","off","removeAllListeners","key","keys","rawListeners","eventNames","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","obj","prop","hasOwnProperty","y","__WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__","array","createCheckers","iface","indexKey","opt","x","ChannelTypeSuite","Channel","displayName","functionID","room","floor","inputs","outputs","ConfigurationTypeSuite","Configuration","DeviceTypeSuite","Device","interface","nativeId","channels","DeviceListTypeSuite","DeviceList","DeviceResponseTypeSuite","DeviceResponse","devices","DevicesTypeSuite","Devices","ErrorTypeSuite","code","detail","title","FloorsTypeSuite","Floors","rooms","GetDataPointResponseTypeSuite","GetDataPointResponse","values","InOutPutTypeSuite","InOutPut","pairingID","RoomsTypeSuite","Rooms","ScenesTriggeredTypeSuite","ScenesTriggered","SetDataPointResponseTypeSuite","SetDataPointResponse","SysApTypeSuite","SysAP","floorplan","floors","sysapName","users","UsersTypeSuite","Users","enabled","grantedPermissions","jid","requestedPermissions","role","VirtualDeviceResponseTypeSuite","VirtualDeviceResponse","serial","WebSocketMessageTypeSuite","WebSocketMessage","datapoints","devicesAdded","devicesRemoved","scenesTriggered","VirtualDeviceType","check","checker","logger","verbose","test","isWebSocketMessage","isConfiguration","isDeviceList","isDeviceResponse","isGetDataPointResponse","isSetDataPointResponse","isVirtualDeviceResponse","isChannel","isDevice","extendStatics","b","setPrototypeOf","__proto__","p","__extends","__","constructor","__values","s","Symbol","iterator","next","done","__read","r","e","ar","__spreadArray","to","from","pack","l","isFunction","createErrorClass","createImpl","ctorFunc","instance","stack","UnsubscriptionError","_super","errors","map","toString","join","arrRemove","item","indexOf","splice","Subscription","initialTeardown","closed","_parentage","_finalizers","empty","unsubscribe","e_1","_a","e_2","_b","isArray","_parentage_1","_parentage_1_1","remove","e_1_1","return","initialFinalizer","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","add","teardown","_hasParent","_addParent","parent","includes","_removeParent","EMPTY","EMPTY_SUBSCRIPTION","isSubscription","config","timeoutProvider","setTimeout","timeout","_i","delegate","clearTimeout","handle","noop","COMPLETE_NOTIFICATION","createNotification","kind","errorContext","cb","isRoot","errorThrown","Subscriber","destination","_this","isStopped","EMPTY_OBSERVER","complete","SafeSubscriber","handleStoppedNotification","nextNotification","_next","_error","_complete","_bind","fn","thisArg","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","reportUnhandledError","notification","subscriber","onStoppedNotification","observable","identity","Observable","subscribe","_subscribe","lift","operator","source","isObserver","_trySubscribe","sink","forEach","promiseCtor","getPromiseCtor","pipe","operations","fns","input","reduce","prev","toPromise","ObjectUnsubscribedError","Subject","currentObservers","observers","hasError","thrownError","subject","AnonymousSubject","_throwIfClosed","_c","configurable","_checkFinalizedStatuses","_innerSubscribe","asObservable","__WEBPACK_EXTERNAL_MODULE_ws__","WebSocket","SystemAccessPoint","hostName","userName","password","tlsEnabled","verboseErrors","super","webSocketMessageSubject","basicAuthKey","Buffer","connectWebSocket","certificateVerification","webSocket","readyState","OPEN","createWebSocket","createVirtualDevice","sysApUuid","deviceSerial","virtualDevice","response","fetchDataViaRest","JSON","stringify","processRestResponse","url","options","rejectUnauthorized","headers","Authorization","data","debug","request","log","reason","isBinary","processWebSocketMessage","disconnectWebSocket","force","CLOSED","terminate","close","getConfiguration","getDeviceList","getDevice","getDatapoint","channel","dataPoint","getWebSocketMessages","setDatapoint","triggerProxyDevice","deviceClass","action","setProxyDeviceValue","method","route","body","info","fetch","typeGuard","status","json","text","serialized","parse"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.js","mappings":"2EAuBA,IAOIA,EAPAC,EAAuB,iBAAZC,QAAuBA,QAAU,KAC5CC,EAAeF,GAAwB,mBAAZA,EAAEG,MAC7BH,EAAEG,MACF,SAAsBC,EAAQC,EAAUC,GACxC,OAAOC,SAASC,UAAUL,MAAMM,KAAKL,EAAQC,EAAUC,EACzD,EAIAP,EADEC,GAA0B,mBAAdA,EAAEU,QACCV,EAAEU,QACVC,OAAOC,sBACC,SAAwBR,GACvC,OAAOO,OAAOE,oBAAoBT,GAC/BU,OAAOH,OAAOC,sBAAsBR,GACzC,EAEiB,SAAwBA,GACvC,OAAOO,OAAOE,oBAAoBT,EACpC,EAOF,IAAIW,EAAcC,OAAOC,OAAS,SAAqBC,GACrD,OAAOA,GAAUA,CACnB,EAEA,SAASC,IACPA,EAAaC,KAAKX,KAAKY,KACzB,CACAC,EAAOC,QAAUJ,EACjBG,EAAOC,QAAQC,KAwYf,SAAcC,EAASC,GACrB,OAAO,IAAIC,SAAQ,SAAUC,EAASC,GACpC,SAASC,EAAcC,GACrBN,EAAQO,eAAeN,EAAMO,GAC7BJ,EAAOE,EACT,CAEA,SAASE,IAC+B,mBAA3BR,EAAQO,gBACjBP,EAAQO,eAAe,QAASF,GAElCF,EAAQ,GAAGM,MAAMzB,KAAK0B,WACxB,CAEAC,EAA+BX,EAASC,EAAMO,EAAU,CAAET,MAAM,IACnD,UAATE,GAMR,SAAuCD,EAASY,EAASC,GAC7B,mBAAfb,EAAQc,IACjBH,EAA+BX,EAAS,QAASY,EAPO,CAAEb,MAAM,GASpE,CATMgB,CAA8Bf,EAASK,EAE3C,GACF,EAxZAX,EAAaA,aAAeA,EAE5BA,EAAaX,UAAUiC,aAAUC,EACjCvB,EAAaX,UAAUmC,aAAe,EACtCxB,EAAaX,UAAUoC,mBAAgBF,EAIvC,IAAIG,EAAsB,GAE1B,SAASC,EAAcC,GACrB,GAAwB,mBAAbA,EACT,MAAM,IAAIC,UAAU,0EAA4ED,EAEpG,CAoCA,SAASE,EAAiBC,GACxB,YAA2BR,IAAvBQ,EAAKN,cACAzB,EAAa0B,oBACfK,EAAKN,aACd,CAkDA,SAASO,EAAa/C,EAAQgD,EAAML,EAAUM,GAC5C,IAAIC,EACAC,EACAC,EA1HsBC,EAgJ1B,GApBAX,EAAcC,QAGCL,KADfa,EAASnD,EAAOqC,UAEdc,EAASnD,EAAOqC,QAAU9B,OAAO+C,OAAO,MACxCtD,EAAOuC,aAAe,SAIKD,IAAvBa,EAAOI,cACTvD,EAAOwD,KAAK,cAAeR,EACfL,EAASA,SAAWA,EAASA,SAAWA,GAIpDQ,EAASnD,EAAOqC,SAElBe,EAAWD,EAAOH,SAGHV,IAAbc,EAEFA,EAAWD,EAAOH,GAAQL,IACxB3C,EAAOuC,kBAeT,GAbwB,mBAAba,EAETA,EAAWD,EAAOH,GAChBC,EAAU,CAACN,EAAUS,GAAY,CAACA,EAAUT,GAErCM,EACTG,EAASK,QAAQd,GAEjBS,EAASM,KAAKf,IAIhBO,EAAIL,EAAiB7C,IACb,GAAKoD,EAASO,OAAST,IAAME,EAASQ,OAAQ,CACpDR,EAASQ,QAAS,EAGlB,IAAIC,EAAI,IAAIC,MAAM,+CACEV,EAASO,OAAS,IAAMI,OAAOf,GADjC,qEAIlBa,EAAEvC,KAAO,8BACTuC,EAAExC,QAAUrB,EACZ6D,EAAEb,KAAOA,EACTa,EAAEG,MAAQZ,EAASO,OA7KGN,EA8KHQ,EA7KnBI,SAAWA,QAAQC,MAAMD,QAAQC,KAAKb,EA8KxC,CAGF,OAAOrD,CACT,CAaA,SAASmE,IACP,IAAKlD,KAAKmD,MAGR,OAFAnD,KAAKjB,OAAO4B,eAAeX,KAAK+B,KAAM/B,KAAKoD,QAC3CpD,KAAKmD,OAAQ,EACY,IAArBrC,UAAU4B,OACL1C,KAAK0B,SAAStC,KAAKY,KAAKjB,QAC1BiB,KAAK0B,SAAS5C,MAAMkB,KAAKjB,OAAQ+B,UAE5C,CAEA,SAASuC,EAAUtE,EAAQgD,EAAML,GAC/B,IAAI4B,EAAQ,CAAEH,OAAO,EAAOC,YAAQ/B,EAAWtC,OAAQA,EAAQgD,KAAMA,EAAML,SAAUA,GACjF6B,EAAUL,EAAYM,KAAKF,GAG/B,OAFAC,EAAQ7B,SAAWA,EACnB4B,EAAMF,OAASG,EACRA,CACT,CAyHA,SAASE,EAAW1E,EAAQgD,EAAM2B,GAChC,IAAIxB,EAASnD,EAAOqC,QAEpB,QAAeC,IAAXa,EACF,MAAO,GAET,IAAIyB,EAAazB,EAAOH,GACxB,YAAmBV,IAAfsC,EACK,GAEiB,mBAAfA,EACFD,EAAS,CAACC,EAAWjC,UAAYiC,GAAc,CAACA,GAElDD,EAsDT,SAAyBE,GAEvB,IADA,IAAIC,EAAM,IAAIC,MAAMF,EAAIlB,QACfqB,EAAI,EAAGA,EAAIF,EAAInB,SAAUqB,EAChCF,EAAIE,GAAKH,EAAIG,GAAGrC,UAAYkC,EAAIG,GAElC,OAAOF,CACT,CA3DIG,CAAgBL,GAAcM,EAAWN,EAAYA,EAAWjB,OACpE,CAmBA,SAASwB,EAAcnC,GACrB,IAAIG,EAASlC,KAAKoB,QAElB,QAAeC,IAAXa,EAAsB,CACxB,IAAIyB,EAAazB,EAAOH,GAExB,GAA0B,mBAAf4B,EACT,OAAO,EACF,QAAmBtC,IAAfsC,EACT,OAAOA,EAAWjB,MAEtB,CAEA,OAAO,CACT,CAMA,SAASuB,EAAWL,EAAKO,GAEvB,IADA,IAAIC,EAAO,IAAIN,MAAMK,GACZJ,EAAI,EAAGA,EAAII,IAAKJ,EACvBK,EAAKL,GAAKH,EAAIG,GAChB,OAAOK,CACT,CA2CA,SAASrD,EAA+BX,EAASC,EAAMqB,EAAUT,GAC/D,GAA0B,mBAAfb,EAAQc,GACbD,EAAMd,KACRC,EAAQD,KAAKE,EAAMqB,GAEnBtB,EAAQc,GAAGb,EAAMqB,OAEd,IAAwC,mBAA7BtB,EAAQiE,iBAYxB,MAAM,IAAI1C,UAAU,6EAA+EvB,GATnGA,EAAQiE,iBAAiBhE,GAAM,SAASiE,EAAaC,GAG/CtD,EAAMd,MACRC,EAAQoE,oBAAoBnE,EAAMiE,GAEpC5C,EAAS6C,EACX,GAGF,CACF,CAraAjF,OAAOmF,eAAe3E,EAAc,sBAAuB,CACzD4E,YAAY,EACZC,IAAK,WACH,OAAOnD,CACT,EACAoD,IAAK,SAASL,GACZ,GAAmB,iBAARA,GAAoBA,EAAM,GAAK7E,EAAY6E,GACpD,MAAM,IAAIM,WAAW,kGAAoGN,EAAM,KAEjI/C,EAAsB+C,CACxB,IAGFzE,EAAaC,KAAO,gBAEGsB,IAAjBrB,KAAKoB,SACLpB,KAAKoB,UAAY9B,OAAOwF,eAAe9E,MAAMoB,UAC/CpB,KAAKoB,QAAU9B,OAAO+C,OAAO,MAC7BrC,KAAKsB,aAAe,GAGtBtB,KAAKuB,cAAgBvB,KAAKuB,oBAAiBF,CAC7C,EAIAvB,EAAaX,UAAU4F,gBAAkB,SAAyBZ,GAChE,GAAiB,iBAANA,GAAkBA,EAAI,GAAKzE,EAAYyE,GAChD,MAAM,IAAIU,WAAW,gFAAkFV,EAAI,KAG7G,OADAnE,KAAKuB,cAAgB4C,EACdnE,IACT,EAQAF,EAAaX,UAAU6F,gBAAkB,WACvC,OAAOpD,EAAiB5B,KAC1B,EAEAF,EAAaX,UAAUoD,KAAO,SAAcR,GAE1C,IADA,IAAI9C,EAAO,GACF8E,EAAI,EAAGA,EAAIjD,UAAU4B,OAAQqB,IAAK9E,EAAKwD,KAAK3B,UAAUiD,IAC/D,IAAIkB,EAAoB,UAATlD,EAEXG,EAASlC,KAAKoB,QAClB,QAAeC,IAAXa,EACF+C,EAAWA,QAA4B5D,IAAjBa,EAAOgD,WAC1B,IAAKD,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAIE,EAGJ,GAFIlG,EAAKyD,OAAS,IAChByC,EAAKlG,EAAK,IACRkG,aAActC,MAGhB,MAAMsC,EAGR,IAAIzE,EAAM,IAAImC,MAAM,oBAAsBsC,EAAK,KAAOA,EAAGC,QAAU,IAAM,KAEzE,MADA1E,EAAI2E,QAAUF,EACRzE,CACR,CAEA,IAAIM,EAAUkB,EAAOH,GAErB,QAAgBV,IAAZL,EACF,OAAO,EAET,GAAuB,mBAAZA,EACTnC,EAAamC,EAAShB,KAAMf,OAE5B,KAAIqG,EAAMtE,EAAQ0B,OACd6C,EAAYtB,EAAWjD,EAASsE,GACpC,IAASvB,EAAI,EAAGA,EAAIuB,IAAOvB,EACzBlF,EAAa0G,EAAUxB,GAAI/D,KAAMf,EAHX,CAM1B,OAAO,CACT,EAgEAa,EAAaX,UAAUqG,YAAc,SAAqBzD,EAAML,GAC9D,OAAOI,EAAa9B,KAAM+B,EAAML,GAAU,EAC5C,EAEA5B,EAAaX,UAAU+B,GAAKpB,EAAaX,UAAUqG,YAEnD1F,EAAaX,UAAUsG,gBACnB,SAAyB1D,EAAML,GAC7B,OAAOI,EAAa9B,KAAM+B,EAAML,GAAU,EAC5C,EAoBJ5B,EAAaX,UAAUgB,KAAO,SAAc4B,EAAML,GAGhD,OAFAD,EAAcC,GACd1B,KAAKkB,GAAGa,EAAMsB,EAAUrD,KAAM+B,EAAML,IAC7B1B,IACT,EAEAF,EAAaX,UAAUuG,oBACnB,SAA6B3D,EAAML,GAGjC,OAFAD,EAAcC,GACd1B,KAAKyF,gBAAgB1D,EAAMsB,EAAUrD,KAAM+B,EAAML,IAC1C1B,IACT,EAGJF,EAAaX,UAAUwB,eACnB,SAAwBoB,EAAML,GAC5B,IAAIiE,EAAMzD,EAAQ0D,EAAU7B,EAAG8B,EAK/B,GAHApE,EAAcC,QAGCL,KADfa,EAASlC,KAAKoB,SAEZ,OAAOpB,KAGT,QAAaqB,KADbsE,EAAOzD,EAAOH,IAEZ,OAAO/B,KAET,GAAI2F,IAASjE,GAAYiE,EAAKjE,WAAaA,EACb,KAAtB1B,KAAKsB,aACTtB,KAAKoB,QAAU9B,OAAO+C,OAAO,cAEtBH,EAAOH,GACVG,EAAOvB,gBACTX,KAAKuC,KAAK,iBAAkBR,EAAM4D,EAAKjE,UAAYA,SAElD,GAAoB,mBAATiE,EAAqB,CAGrC,IAFAC,GAAY,EAEP7B,EAAI4B,EAAKjD,OAAS,EAAGqB,GAAK,EAAGA,IAChC,GAAI4B,EAAK5B,KAAOrC,GAAYiE,EAAK5B,GAAGrC,WAAaA,EAAU,CACzDmE,EAAmBF,EAAK5B,GAAGrC,SAC3BkE,EAAW7B,EACX,KACF,CAGF,GAAI6B,EAAW,EACb,OAAO5F,KAEQ,IAAb4F,EACFD,EAAKG,QAiIf,SAAmBH,EAAMI,GACvB,KAAOA,EAAQ,EAAIJ,EAAKjD,OAAQqD,IAC9BJ,EAAKI,GAASJ,EAAKI,EAAQ,GAC7BJ,EAAKK,KACP,CAnIUC,CAAUN,EAAMC,GAGE,IAAhBD,EAAKjD,SACPR,EAAOH,GAAQ4D,EAAK,SAEQtE,IAA1Ba,EAAOvB,gBACTX,KAAKuC,KAAK,iBAAkBR,EAAM8D,GAAoBnE,EAC1D,CAEA,OAAO1B,IACT,EAEJF,EAAaX,UAAU+G,IAAMpG,EAAaX,UAAUwB,eAEpDb,EAAaX,UAAUgH,mBACnB,SAA4BpE,GAC1B,IAAIwD,EAAWrD,EAAQ6B,EAGvB,QAAe1C,KADfa,EAASlC,KAAKoB,SAEZ,OAAOpB,KAGT,QAA8BqB,IAA1Ba,EAAOvB,eAUT,OATyB,IAArBG,UAAU4B,QACZ1C,KAAKoB,QAAU9B,OAAO+C,OAAO,MAC7BrC,KAAKsB,aAAe,QACMD,IAAjBa,EAAOH,KACY,KAAtB/B,KAAKsB,aACTtB,KAAKoB,QAAU9B,OAAO+C,OAAO,aAEtBH,EAAOH,IAEX/B,KAIT,GAAyB,IAArBc,UAAU4B,OAAc,CAC1B,IACI0D,EADAC,EAAO/G,OAAO+G,KAAKnE,GAEvB,IAAK6B,EAAI,EAAGA,EAAIsC,EAAK3D,SAAUqB,EAEjB,oBADZqC,EAAMC,EAAKtC,KAEX/D,KAAKmG,mBAAmBC,GAK1B,OAHApG,KAAKmG,mBAAmB,kBACxBnG,KAAKoB,QAAU9B,OAAO+C,OAAO,MAC7BrC,KAAKsB,aAAe,EACbtB,IACT,CAIA,GAAyB,mBAFzBuF,EAAYrD,EAAOH,IAGjB/B,KAAKW,eAAeoB,EAAMwD,QACrB,QAAkBlE,IAAdkE,EAET,IAAKxB,EAAIwB,EAAU7C,OAAS,EAAGqB,GAAK,EAAGA,IACrC/D,KAAKW,eAAeoB,EAAMwD,EAAUxB,IAIxC,OAAO/D,IACT,EAmBJF,EAAaX,UAAUoG,UAAY,SAAmBxD,GACpD,OAAO0B,EAAWzD,KAAM+B,GAAM,EAChC,EAEAjC,EAAaX,UAAUmH,aAAe,SAAsBvE,GAC1D,OAAO0B,EAAWzD,KAAM+B,GAAM,EAChC,EAEAjC,EAAaoE,cAAgB,SAAS9D,EAAS2B,GAC7C,MAAqC,mBAA1B3B,EAAQ8D,cACV9D,EAAQ8D,cAAcnC,GAEtBmC,EAAc9E,KAAKgB,EAAS2B,EAEvC,EAEAjC,EAAaX,UAAU+E,cAAgBA,EAiBvCpE,EAAaX,UAAUoH,WAAa,WAClC,OAAOvG,KAAKsB,aAAe,EAAI5C,EAAesB,KAAKoB,SAAW,EAChE,C,GCxaIoF,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBrF,IAAjBsF,EACH,OAAOA,EAAazG,QAGrB,IAAID,EAASuG,EAAyBE,GAAY,CAGjDxG,QAAS,CAAC,GAOX,OAHA0G,EAAoBF,GAAUzG,EAAQA,EAAOC,QAASuG,GAG/CxG,EAAOC,OACf,CCrBAuG,EAAoBI,EAAI,CAAC3G,EAAS4G,KACjC,IAAI,IAAIV,KAAOU,EACXL,EAAoBM,EAAED,EAAYV,KAASK,EAAoBM,EAAE7G,EAASkG,IAC5E9G,OAAOmF,eAAevE,EAASkG,EAAK,CAAE1B,YAAY,EAAMC,IAAKmC,EAAWV,IAE1E,ECNDK,EAAoBM,EAAI,CAACC,EAAKC,IAAU3H,OAAOH,UAAU+H,eAAe9H,KAAK4H,EAAKC,G,2HCElF,MAAM,GAFEE,EAE+B,CAAE,MAAW,IAAMC,EAA0DC,MAAO,eAAoB,IAAMD,EAA0DE,eAAgB,MAAW,IAAMF,EAA0DG,MAAO,SAAc,IAAMH,EAA0DI,SAAU,IAAS,IAAMJ,EAA0DK,KAF/bC,EAAI,CAAC,EAAGjB,EAAoBI,EAAEa,EAAGP,GAAWO,GCoBlDC,EAA+B,CAC1CC,SAnBc,IAAAL,OAAM,GAAI,CACxBM,aAAa,IAAAJ,KAAI,UACjBK,YAAY,IAAAL,KAAI,UAChBM,MAAM,IAAAN,KAAI,UACVO,OAAO,IAAAP,KAAI,UACXQ,QAAQ,IAAAR,MACN,IAAAF,OAAM,GAAI,CACR,CAAC,EAAAC,UAAW,cAGhBU,SAAS,IAAAT,MACP,IAAAF,OAAM,GAAI,CACR,CAAC,EAAAC,UAAW,cAGhBzF,MAAM,IAAA0F,KAAI,aCXCU,EAAqC,CAChDC,eALoB,IAAAb,OAAM,GAAI,CAC9B,CAAC,EAAAC,UAAW,WCYDa,EAA8B,CACzCC,QAda,IAAAf,OAAM,GAAI,CACvBM,aAAa,IAAAJ,KAAI,UACjBM,MAAM,IAAAN,KAAI,UACVO,OAAO,IAAAP,KAAI,UACXc,WAAW,IAAAd,KAAI,UACfe,UAAU,IAAAf,KAAI,UACdgB,UAAU,IAAAhB,MACR,IAAAF,OAAM,GAAI,CACR,CAAC,EAAAC,UAAW,gBCJLkB,EAAkC,CAC7CC,YALiB,IAAApB,OAAM,GAAI,CAC3B,CAAC,EAAAC,WAAW,IAAAH,OAAM,aCKPuB,EAAsC,CACjDC,gBAPqB,IAAAtB,OAAM,GAAI,CAC/B,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpBuB,QAAS,eCEAC,EAA+B,CAC1CC,SALc,IAAAzB,OAAM,GAAI,CACxB,CAAC,EAAAC,UAAW,YCKDyB,EAA6B,CACxCpG,OAPY,IAAA0E,OAAM,GAAI,CACtB2B,KAAM,SACNC,OAAQ,SACRC,MAAO,YCIIC,EAA8B,CACzCC,QARa,IAAA/B,OAAM,GAAI,CACvB,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpBlH,KAAM,SACNkJ,MAAO,aCGEC,EAA4C,CACvDC,sBAP2B,IAAAlC,OAAM,GAAI,CACrC,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpBmC,QAAQ,IAAArC,OAAM,eCGLsC,EAAgC,CAC3CC,UANe,IAAArC,OAAM,GAAI,CACzB1H,OAAO,IAAA4H,KAAI,UACXoC,WAAW,IAAApC,KAAI,aCIJqC,EAA6B,CACxCC,OAPY,IAAAxC,OAAM,GAAI,CACtB,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpBlH,KAAM,cCaG2J,EAAuC,CAClDC,iBAhBsB,IAAA1C,OAAM,GAAI,CAChC,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpBkB,UAAU,IAAAlB,OAAM,GAAI,CAClB,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpBW,SAAS,IAAAX,OAAM,GAAI,CACjB,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpB1H,MAAO,SACPgK,UAAW,sBCDVK,EAA4C,CACvDC,sBAP2B,IAAA5C,OAAM,GAAI,CACrC,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpB,CAAC,EAAAC,UAAW,cCQH4C,EAA6B,CACxCC,OAXY,IAAA9C,OAAM,GAAI,CACtBuB,QAAS,UACTwB,WAAW,IAAA/C,OAAM,GAAI,CACnBgD,OAAQ,WAEVC,UAAW,SACXC,MAAO,QACPvF,OAAO,IAAAuC,KAAI,YCKAiD,EAA6B,CACxCC,OAbY,IAAApD,OAAM,GAAI,CACtB,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpBqD,QAAS,UACT3J,OAAO,IAAAoG,OAAM,UACbwD,oBAAoB,IAAAxD,OAAM,UAC1ByD,IAAK,SACLzK,KAAM,SACN0K,sBAAsB,IAAA1D,OAAM,UAC5B2D,KAAM,cCEGC,EAA6C,CACxDC,uBAX4B,IAAA3D,OAAM,GAAI,CACtC,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpBuB,SAAS,IAAAvB,OAAM,GAAI,CACjB,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpB4D,OAAQ,kBCUHC,EAAwC,CACnDC,kBAfuB,IAAA9D,OAAM,GAAI,CACjC,CAAC,EAAAC,WAAW,IAAAD,OAAM,GAAI,CACpB+D,YAAY,IAAA/D,OAAM,GAAI,CACpB,CAAC,EAAAC,UAAW,WAEdsB,SAAS,IAAAvB,OAAM,GAAI,CACjB,CAAC,EAAAC,UAAW,YAEd+D,cAAc,IAAAlE,OAAM,UACpBmE,gBAAgB,IAAAnE,OAAM,UACtBoE,gBAAiB,wBCmBb7D,QAAO,IAAK,IAAAN,gBAAeK,EAAkBgC,IAE7CvB,cAAa,IAAK,IAAAd,gBACxBa,EACAY,EACAV,EACAV,EACAgC,EACAN,EACAS,EACAM,EACAM,EACAzB,IAGMX,OAAM,IAAK,IAAAhB,gBACjBe,EACAV,EACAgC,IAGMhB,WAAU,IAAK,IAAArB,gBAAeoB,IAE9BG,eAAc,IAAK,IAAAvB,gBACzBsB,EACAG,EACAV,EACAV,EACAgC,IAGMF,qBAAoB,IAAK,IAAAnC,gBAAekC,IAExCW,qBAAoB,IAAK,IAAA7C,gBAAe4C,IAExCgB,sBAAqB,IAAK,IAAA5D,gBAChC2D,IAGMI,iBAAgB,IAAK,IAAA/D,gBAC3B8D,EACArC,EACAV,EACAV,EACAgC,EACAK,GlB5EM7C,MAAWO,EmBcPgE,EDiEZ,SAASC,EACP3E,EACA4E,EACAC,EACAC,GAEA,GAAIA,EACF,IAEE,OADAF,EAAQD,MAAM3E,IACP,C,CACP,MAAO9B,GAEP,OADA2G,EAAO3G,MAAM,4BAA6BA,IACnC,C,CAIX,OAAO0G,EAAQG,KAAK/E,EACtB,CASO,SAASgF,EACdhF,EACA6E,EACAC,GAAU,GAEV,OAAOH,EAAM3E,EAAK,EAAkB6E,EAAQC,EAC9C,CASO,SAASG,EACdjF,EACA6E,EACAC,GAAU,GAEV,OAAOH,EAAM3E,EAAK,EAAe6E,EAAQC,EAC3C,CASO,SAASI,EACdlF,EACA6E,EACAC,GAAU,GAEV,OAAOH,EAAM3E,EAAK,EAAY6E,EAAQC,EACxC,CASO,SAASK,EACdnF,EACA6E,EACAC,GAAU,GAEV,OAAOH,EAAM3E,EAAK,EAAgB6E,EAAQC,EAC5C,CASO,SAASM,EACdpF,EACA6E,EACAC,GAAU,GAEV,OAAOH,EAAM3E,EAAK,EAAsB6E,EAAQC,EAClD,CASO,SAASO,EACdrF,EACA6E,EACAC,GAAU,GAEV,OAAOH,EAAM3E,EAAK,EAAsB6E,EAAQC,EAClD,CASO,SAASQ,EACdtF,EACA6E,EACAC,GAAU,GAEV,OAAOH,EAAM3E,EAAK,EAAuB6E,EAAQC,EACnD,CASO,SAASS,EACdvF,EACA6E,EACAC,GAAU,GAEV,OAAOH,EAAM3E,EAAK,EAAS6E,EAAQC,EACrC,CASO,SAASU,EACdxF,EACA6E,EACAC,GAAU,GAEV,OAAOH,EAAM3E,EAAK,EAAQ6E,EAAQC,EACpC,ECzNA,SAAYJ,GAEV,8BAEA,gCAEA,wCAEA,0CAEA,YAEA,4BAEA,0BAEA,8BAEA,mCAEA,oCAEA,kCAEA,uDAEA,yCAEA,qDAEA,yCAEA,kCAEA,0BAEA,8BAEA,qCAEA,4BAEA,gCAEA,kCAEA,4BAEA,gDAEA,4CAEA,0DAEA,0CAEA,gCAEA,8BAEA,kCAEA,0CAEA,gCAEA,8BAEA,kCAEA,kCAEA,0CAEA,gDAEA,+BACD,CA7ED,CAAYA,IAAAA,EAAiB,KCE7B,IAAIe,EAAgB,SAAS5F,EAAG6F,GAI9B,OAHAD,EAAgBnN,OAAOqN,gBAClB,CAAEC,UAAW,cAAgB9I,OAAS,SAAU+C,EAAG6F,GAAK7F,EAAE+F,UAAYF,CAAG,GAC1E,SAAU7F,EAAG6F,GAAK,IAAK,IAAIG,KAAKH,EAAOpN,OAAOH,UAAU+H,eAAe9H,KAAKsN,EAAGG,KAAIhG,EAAEgG,GAAKH,EAAEG,GAAI,EAC7FJ,EAAc5F,EAAG6F,EAC1B,EAEO,SAASI,EAAUjG,EAAG6F,GAC3B,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI/K,UAAU,uBAAyBmB,OAAO4J,GAAK,iCAE7D,SAASK,IAAO/M,KAAKgN,YAAcnG,CAAG,CADtC4F,EAAc5F,EAAG6F,GAEjB7F,EAAE1H,UAAkB,OAANuN,EAAapN,OAAO+C,OAAOqK,IAAMK,EAAG5N,UAAYuN,EAAEvN,UAAW,IAAI4N,EACjF,CA2IO,SAASE,EAASlG,GACvB,IAAImG,EAAsB,mBAAXC,QAAyBA,OAAOC,SAAUnL,EAAIiL,GAAKnG,EAAEmG,GAAInJ,EAAI,EAC5E,GAAI9B,EAAG,OAAOA,EAAE7C,KAAK2H,GACrB,GAAIA,GAAyB,iBAAbA,EAAErE,OAAqB,MAAO,CAC1C2K,KAAM,WAEF,OADItG,GAAKhD,GAAKgD,EAAErE,SAAQqE,OAAI,GACrB,CAAElH,MAAOkH,GAAKA,EAAEhD,KAAMuJ,MAAOvG,EACxC,GAEJ,MAAM,IAAIpF,UAAUuL,EAAI,0BAA4B,kCACtD,CAEO,SAASK,EAAOxG,EAAG5C,GACxB,IAAIlC,EAAsB,mBAAXkL,QAAyBpG,EAAEoG,OAAOC,UACjD,IAAKnL,EAAG,OAAO8E,EACf,IAAmByG,EAAYC,EAA3B1J,EAAI9B,EAAE7C,KAAK2H,GAAO2G,EAAK,GAC3B,IACI,WAAc,IAANvJ,GAAgBA,KAAM,MAAQqJ,EAAIzJ,EAAEsJ,QAAQC,MAAMI,EAAGjL,KAAK+K,EAAE3N,MACxE,CACA,MAAOqF,GAASuI,EAAI,CAAEvI,MAAOA,EAAS,CACtC,QACI,IACQsI,IAAMA,EAAEF,OAASrL,EAAI8B,EAAU,SAAI9B,EAAE7C,KAAK2E,EAClD,CACA,QAAU,GAAI0J,EAAG,MAAMA,EAAEvI,KAAO,CACpC,CACA,OAAOwI,CACT,CAkBO,SAASC,EAAcC,EAAIC,EAAMC,GACtC,GAAIA,GAA6B,IAArBhN,UAAU4B,OAAc,IAAK,IAA4BgL,EAAxB3J,EAAI,EAAGgK,EAAIF,EAAKnL,OAAYqB,EAAIgK,EAAGhK,KACxE2J,GAAQ3J,KAAK8J,IACRH,IAAIA,EAAK5J,MAAM3E,UAAU0B,MAAMzB,KAAKyO,EAAM,EAAG9J,IAClD2J,EAAG3J,GAAK8J,EAAK9J,IAGrB,OAAO6J,EAAGnO,OAAOiO,GAAM5J,MAAM3E,UAAU0B,MAAMzB,KAAKyO,GACpD,CC7NO,SAASG,EAAWnO,GACvB,MAAwB,mBAAVA,CAClB,CCFO,SAASoO,EAAiBC,GAC7B,IAIIC,EAAWD,GAJF,SAAUE,GACnBvL,MAAMzD,KAAKgP,GACXA,EAASC,OAAQ,IAAIxL,OAAQwL,KACjC,IAIA,OAFAF,EAAShP,UAAYG,OAAO+C,OAAOQ,MAAM1D,WACzCgP,EAAShP,UAAU6N,YAAcmB,EAC1BA,CACX,CF+I6B7O,OAAO+C,OA0GX/C,OAAO+C,OAyDkB,mBAApBiM,iBAAiCA,gBG1TxD,IAAIC,EAAsBN,GAAiB,SAAUO,GACxD,OAAO,SAAiCC,GACpCD,EAAOxO,MACPA,KAAKoF,QAAUqJ,EACTA,EAAO/L,OAAS,4CAA8C+L,EAAOC,KAAI,SAAUhO,EAAKqD,GAAK,OAAOA,EAAI,EAAI,KAAOrD,EAAIiO,UAAY,IAAGC,KAAK,QAC3I,GACN5O,KAAKK,KAAO,sBACZL,KAAKyO,OAASA,CAClB,CACJ,ICVO,SAASI,EAAUjL,EAAKkL,GAC3B,GAAIlL,EAAK,CACL,IAAImC,EAAQnC,EAAImL,QAAQD,GACxB,GAAK/I,GAASnC,EAAIoL,OAAOjJ,EAAO,EACpC,CACJ,CCDA,IAAIkJ,EAAgB,WAChB,SAASA,EAAaC,GAClBlP,KAAKkP,gBAAkBA,EACvBlP,KAAKmP,QAAS,EACdnP,KAAKoP,WAAa,KAClBpP,KAAKqP,YAAc,IACvB,CA+GqB,IACbC,EAIR,OAnHAL,EAAa9P,UAAUoQ,YAAc,WACjC,IAAIC,EAAKC,EAAIC,EAAKC,EACdlB,EACJ,IAAKzO,KAAKmP,OAAQ,CACdnP,KAAKmP,QAAS,EACd,IAAIC,EAAapP,KAAKoP,WACtB,GAAIA,EAEA,GADApP,KAAKoP,WAAa,KACdtL,MAAM8L,QAAQR,GACd,IACI,IAAK,IAAIS,EAAe5C,EAASmC,GAAaU,EAAiBD,EAAaxC,QAASyC,EAAexC,KAAMwC,EAAiBD,EAAaxC,OACrHyC,EAAejQ,MACrBkQ,OAAO/P,KAExB,CACA,MAAOgQ,GAASR,EAAM,CAAEtK,MAAO8K,EAAS,CACxC,QACI,IACQF,IAAmBA,EAAexC,OAASmC,EAAKI,EAAaI,SAASR,EAAGrQ,KAAKyQ,EACtF,CACA,QAAU,GAAIL,EAAK,MAAMA,EAAItK,KAAO,CACxC,MAGAkK,EAAWW,OAAO/P,MAG1B,IAAIkQ,EAAmBlQ,KAAKkP,gBAC5B,GAAIlB,EAAWkC,GACX,IACIA,GACJ,CACA,MAAOzC,GACHgB,EAAShB,aAAac,EAAsBd,EAAEgB,OAAS,CAAChB,EAC5D,CAEJ,IAAI4B,EAAcrP,KAAKqP,YACvB,GAAIA,EAAa,CACbrP,KAAKqP,YAAc,KACnB,IACI,IAAK,IAAIc,EAAgBlD,EAASoC,GAAce,EAAkBD,EAAc9C,QAAS+C,EAAgB9C,KAAM8C,EAAkBD,EAAc9C,OAAQ,CACnJ,IAAIgD,EAAYD,EAAgBvQ,MAChC,IACIyQ,GAAcD,EAClB,CACA,MAAO3P,GACH+N,EAASA,QAAuCA,EAAS,GACrD/N,aAAe6N,EACfE,EAASd,EAAcA,EAAc,GAAIJ,EAAOkB,IAAUlB,EAAO7M,EAAI+N,SAGrEA,EAAOhM,KAAK/B,EAEpB,CACJ,CACJ,CACA,MAAO6P,GAASb,EAAM,CAAExK,MAAOqL,EAAS,CACxC,QACI,IACQH,IAAoBA,EAAgB9C,OAASqC,EAAKQ,EAAcF,SAASN,EAAGvQ,KAAK+Q,EACzF,CACA,QAAU,GAAIT,EAAK,MAAMA,EAAIxK,KAAO,CACxC,CACJ,CACA,GAAIuJ,EACA,MAAM,IAAIF,EAAoBE,EAEtC,CACJ,EACAQ,EAAa9P,UAAUqR,IAAM,SAAUC,GACnC,IAAIhB,EACJ,GAAIgB,GAAYA,IAAazQ,KACzB,GAAIA,KAAKmP,OACLmB,GAAcG,OAEb,CACD,GAAIA,aAAoBxB,EAAc,CAClC,GAAIwB,EAAStB,QAAUsB,EAASC,WAAW1Q,MACvC,OAEJyQ,EAASE,WAAW3Q,KACxB,EACCA,KAAKqP,YAA0C,QAA3BI,EAAKzP,KAAKqP,mBAAgC,IAAPI,EAAgBA,EAAK,IAAIhN,KAAKgO,EAC1F,CAER,EACAxB,EAAa9P,UAAUuR,WAAa,SAAUE,GAC1C,IAAIxB,EAAapP,KAAKoP,WACtB,OAAOA,IAAewB,GAAW9M,MAAM8L,QAAQR,IAAeA,EAAWyB,SAASD,EACtF,EACA3B,EAAa9P,UAAUwR,WAAa,SAAUC,GAC1C,IAAIxB,EAAapP,KAAKoP,WACtBpP,KAAKoP,WAAatL,MAAM8L,QAAQR,IAAeA,EAAW3M,KAAKmO,GAASxB,GAAcA,EAAa,CAACA,EAAYwB,GAAUA,CAC9H,EACA3B,EAAa9P,UAAU2R,cAAgB,SAAUF,GAC7C,IAAIxB,EAAapP,KAAKoP,WAClBA,IAAewB,EACf5Q,KAAKoP,WAAa,KAEbtL,MAAM8L,QAAQR,IACnBP,EAAUO,EAAYwB,EAE9B,EACA3B,EAAa9P,UAAU4Q,OAAS,SAAUU,GACtC,IAAIpB,EAAcrP,KAAKqP,YACvBA,GAAeR,EAAUQ,EAAaoB,GAClCA,aAAoBxB,GACpBwB,EAASK,cAAc9Q,KAE/B,EACAiP,EAAa8B,QACLzB,EAAQ,IAAIL,GACVE,QAAS,EACRG,GAEJL,CACX,CA3HmB,GA6HR+B,GAAqB/B,EAAa8B,MACtC,SAASE,GAAepR,GAC3B,OAAQA,aAAiBoP,GACpBpP,GAAS,WAAYA,GAASmO,EAAWnO,EAAMkQ,SAAW/B,EAAWnO,EAAM2Q,MAAQxC,EAAWnO,EAAM0P,YAC7G,CACA,SAASe,GAAcD,GACfrC,EAAWqC,GACXA,IAGAA,EAAUd,aAElB,CC7IO,IAAI2B,GACW,KADXA,GAEgB,KAFhBA,QAGE7P,EAHF6P,IAIgC,EAJhCA,IAKmB,ECJnBC,GAAkB,CACzBC,WAAY,SAAUpQ,EAASqQ,GAE3B,IADA,IAAIpS,EAAO,GACFqS,EAAK,EAAGA,EAAKxQ,UAAU4B,OAAQ4O,IACpCrS,EAAKqS,EAAK,GAAKxQ,UAAUwQ,GAE7B,IAAIC,EAAWJ,GAAgBI,SAC/B,OAAIA,aAA2C,EAASA,EAASH,YACtDG,EAASH,WAAWtS,MAAMyS,EAAU5D,EAAc,CAAC3M,EAASqQ,GAAU9D,EAAOtO,KAEjFmS,WAAWtS,WAAM,EAAQ6O,EAAc,CAAC3M,EAASqQ,GAAU9D,EAAOtO,IAC7E,EACAuS,aAAc,SAAUC,GACpB,IAAIF,EAAWJ,GAAgBI,SAC/B,QAASA,aAA2C,EAASA,EAASC,eAAiBA,cAAcC,EACzG,EACAF,cAAUlQ,GCjBP,SAASqQ,KAAS,CCAlB,IAAIC,GAA8CC,GAAmB,SAAKvQ,OAAWA,GAOrF,SAASuQ,GAAmBC,EAAMhS,EAAOqF,GAC5C,MAAO,CACH2M,KAAMA,EACNhS,MAAOA,EACPqF,MAAOA,EAEf,CCZA,IAAIG,GAAU,KACP,SAASyM,GAAaC,GACzB,GAAIb,GAA8C,CAC9C,IAAIc,GAAU3M,GAKd,GAJI2M,IACA3M,GAAU,CAAE4M,aAAa,EAAO/M,MAAO,OAE3C6M,IACIC,EAAQ,CACR,IAAIvC,EAAKpK,GAAS4M,EAAcxC,EAAGwC,YAAa/M,EAAQuK,EAAGvK,MAE3D,GADAG,GAAU,KACN4M,EACA,MAAM/M,CAEd,CACJ,MAEI6M,GAER,CCXA,IAAIG,GAAc,SAAU1D,GAExB,SAAS0D,EAAWC,GAChB,IAAIC,EAAQ5D,EAAOpP,KAAKY,OAASA,KAWjC,OAVAoS,EAAMC,WAAY,EACdF,GACAC,EAAMD,YAAcA,EAChBlB,GAAekB,IACfA,EAAY3B,IAAI4B,IAIpBA,EAAMD,YAAcG,GAEjBF,CACX,CAwDA,OAtEAtF,EAAUoF,EAAY1D,GAetB0D,EAAW7P,OAAS,SAAUgL,EAAMnI,EAAOqN,GACvC,OAAO,IAAIC,GAAenF,EAAMnI,EAAOqN,EAC3C,EACAL,EAAW/S,UAAUkO,KAAO,SAAUxN,GAC9BG,KAAKqS,UACLI,GF1BL,SAA0B5S,GAC7B,OAAO+R,GAAmB,IAAK/R,OAAOwB,EAC1C,CEwBsCqR,CAAiB7S,GAAQG,MAGnDA,KAAK2S,MAAM9S,EAEnB,EACAqS,EAAW/S,UAAU+F,MAAQ,SAAUxE,GAC/BV,KAAKqS,UACLI,GFpCDb,GAAmB,SAAKvQ,EEoCqBX,GAAMV,OAGlDA,KAAKqS,WAAY,EACjBrS,KAAK4S,OAAOlS,GAEpB,EACAwR,EAAW/S,UAAUoT,SAAW,WACxBvS,KAAKqS,UACLI,GAA0Bd,GAAuB3R,OAGjDA,KAAKqS,WAAY,EACjBrS,KAAK6S,YAEb,EACAX,EAAW/S,UAAUoQ,YAAc,WAC1BvP,KAAKmP,SACNnP,KAAKqS,WAAY,EACjB7D,EAAOrP,UAAUoQ,YAAYnQ,KAAKY,MAClCA,KAAKmS,YAAc,KAE3B,EACAD,EAAW/S,UAAUwT,MAAQ,SAAU9S,GACnCG,KAAKmS,YAAY9E,KAAKxN,EAC1B,EACAqS,EAAW/S,UAAUyT,OAAS,SAAUlS,GACpC,IACIV,KAAKmS,YAAYjN,MAAMxE,EAC3B,CACA,QACIV,KAAKuP,aACT,CACJ,EACA2C,EAAW/S,UAAU0T,UAAY,WAC7B,IACI7S,KAAKmS,YAAYI,UACrB,CACA,QACIvS,KAAKuP,aACT,CACJ,EACO2C,CACX,CAxEiB,CAwEfjD,GAEE6D,GAAQ5T,SAASC,UAAUqE,KAC/B,SAASA,GAAKuP,EAAIC,GACd,OAAOF,GAAM1T,KAAK2T,EAAIC,EAC1B,CACA,IAAIC,GAAoB,WACpB,SAASA,EAAiBC,GACtBlT,KAAKkT,gBAAkBA,CAC3B,CAqCA,OApCAD,EAAiB9T,UAAUkO,KAAO,SAAUxN,GACxC,IAAIqT,EAAkBlT,KAAKkT,gBAC3B,GAAIA,EAAgB7F,KAChB,IACI6F,EAAgB7F,KAAKxN,EACzB,CACA,MAAOqF,GACHiO,GAAqBjO,EACzB,CAER,EACA+N,EAAiB9T,UAAU+F,MAAQ,SAAUxE,GACzC,IAAIwS,EAAkBlT,KAAKkT,gBAC3B,GAAIA,EAAgBhO,MAChB,IACIgO,EAAgBhO,MAAMxE,EAC1B,CACA,MAAOwE,GACHiO,GAAqBjO,EACzB,MAGAiO,GAAqBzS,EAE7B,EACAuS,EAAiB9T,UAAUoT,SAAW,WAClC,IAAIW,EAAkBlT,KAAKkT,gBAC3B,GAAIA,EAAgBX,SAChB,IACIW,EAAgBX,UACpB,CACA,MAAOrN,GACHiO,GAAqBjO,EACzB,CAER,EACO+N,CACX,CAzCuB,GA0CnBT,GAAkB,SAAUhE,GAE5B,SAASgE,EAAeY,EAAgBlO,EAAOqN,GAC3C,IACIW,EASIG,EAVJjB,EAAQ5D,EAAOpP,KAAKY,OAASA,KAyBjC,OAvBIgO,EAAWoF,KAAoBA,EAC/BF,EAAkB,CACd7F,KAAO+F,QAAuDA,OAAiB/R,EAC/E6D,MAAOA,QAAqCA,OAAQ7D,EACpDkR,SAAUA,QAA2CA,OAAWlR,GAKhE+Q,GAASlB,KACTmC,EAAY/T,OAAO+C,OAAO+Q,IAChB7D,YAAc,WAAc,OAAO6C,EAAM7C,aAAe,EAClE2D,EAAkB,CACd7F,KAAM+F,EAAe/F,MAAQ7J,GAAK4P,EAAe/F,KAAMgG,GACvDnO,MAAOkO,EAAelO,OAAS1B,GAAK4P,EAAelO,MAAOmO,GAC1Dd,SAAUa,EAAeb,UAAY/O,GAAK4P,EAAeb,SAAUc,KAIvEH,EAAkBE,EAG1BhB,EAAMD,YAAc,IAAIc,GAAiBC,GAClCd,CACX,CACA,OA7BAtF,EAAU0F,EAAgBhE,GA6BnBgE,CACX,CA/BqB,CA+BnBN,IAEF,SAASiB,GAAqBjO,GD7IvB,IAAsBxE,EC8IrBwQ,ID9IqBxQ,EC+IRwE,ED9IbgM,IAAgD7L,KAChDA,GAAQ4M,aAAc,EACtB5M,GAAQH,MAAQxE,IEtBjB,SAA8BA,GACjCyQ,GAAgBC,YAAW,WAEvB,IADuBF,GAKnB,MAAMxQ,EALawQ,GAEFxQ,EAKzB,GACJ,CD2JQ4S,CAAqBpO,EAE7B,CAIA,SAASuN,GAA0Bc,EAAcC,GAC7C,IAAIC,EAAwBvC,GAC5BuC,GAAyBtC,GAAgBC,YAAW,WAAc,OAAOqC,EAAsBF,EAAcC,EAAa,GAC9H,CACO,IAAIlB,GAAiB,CACxBnD,QAAQ,EACR9B,KAAMqE,GACNxM,MAVJ,SAA6BxE,GACzB,MAAMA,CACV,EASI6R,SAAUb,IErLHgC,GAAsD,mBAAXvG,QAAyBA,OAAOuG,YAAe,eCA9F,SAASC,GAASjM,GACrB,OAAOA,CACX,CCKA,IAAIkM,GAAc,WACd,SAASA,EAAWC,GACZA,IACA7T,KAAK8T,WAAaD,EAE1B,CA4EA,OA3EAD,EAAWzU,UAAU4U,KAAO,SAAUC,GAClC,IAAIN,EAAa,IAAIE,EAGrB,OAFAF,EAAWO,OAASjU,KACpB0T,EAAWM,SAAWA,EACfN,CACX,EACAE,EAAWzU,UAAU0U,UAAY,SAAUT,EAAgBlO,EAAOqN,GAC9D,IA8Ec1S,EA9EVuS,EAAQpS,KACRwT,GA6EU3T,EA7EgBuT,IA8EjBvT,aAAiBqS,IAJtC,SAAoBrS,GAChB,OAAOA,GAASmO,EAAWnO,EAAMwN,OAASW,EAAWnO,EAAMqF,QAAU8I,EAAWnO,EAAM0S,SAC1F,CAEsD2B,CAAWrU,IAAUoR,GAAepR,GA9ElCuT,EAAiB,IAAIZ,GAAeY,EAAgBlO,EAAOqN,GAY3G,OAXAT,IAAa,WACT,IAAIrC,EAAK2C,EAAO4B,EAAWvE,EAAGuE,SAAUC,EAASxE,EAAGwE,OACpDT,EAAWhD,IAAIwD,EAEPA,EAAS5U,KAAKoU,EAAYS,GAC5BA,EAEM7B,EAAM0B,WAAWN,GAEjBpB,EAAM+B,cAAcX,GACpC,IACOA,CACX,EACAI,EAAWzU,UAAUgV,cAAgB,SAAUC,GAC3C,IACI,OAAOpU,KAAK8T,WAAWM,EAC3B,CACA,MAAO1T,GACH0T,EAAKlP,MAAMxE,EACf,CACJ,EACAkT,EAAWzU,UAAUkV,QAAU,SAAUhH,EAAMiH,GAC3C,IAAIlC,EAAQpS,KAEZ,OAAO,IADPsU,EAAcC,GAAeD,KACN,SAAU/T,EAASC,GACtC,IAAIgT,EAAa,IAAIhB,GAAe,CAChCnF,KAAM,SAAUxN,GACZ,IACIwN,EAAKxN,EACT,CACA,MAAOa,GACHF,EAAOE,GACP8S,EAAWjE,aACf,CACJ,EACArK,MAAO1E,EACP+R,SAAUhS,IAEd6R,EAAMyB,UAAUL,EACpB,GACJ,EACAI,EAAWzU,UAAU2U,WAAa,SAAUN,GACxC,IAAI/D,EACJ,OAA8B,QAAtBA,EAAKzP,KAAKiU,cAA2B,IAAPxE,OAAgB,EAASA,EAAGoE,UAAUL,EAChF,EACAI,EAAWzU,UAAU,IAAqB,WACtC,OAAOa,IACX,EACA4T,EAAWzU,UAAUqV,KAAO,WAExB,IADA,IAAIC,EAAa,GACRnD,EAAK,EAAGA,EAAKxQ,UAAU4B,OAAQ4O,IACpCmD,EAAWnD,GAAMxQ,UAAUwQ,GAE/B,OClEe,KADOoD,EDmEDD,GClEjB/R,OACGiR,GAEQ,IAAfe,EAAIhS,OACGgS,EAAI,GAER,SAAeC,GAClB,OAAOD,EAAIE,QAAO,SAAUC,EAAM9B,GAAM,OAAOA,EAAG8B,EAAO,GAAGF,EAChE,GD0DqC3U,MCnElC,IAAuB0U,CDoE1B,EACAd,EAAWzU,UAAU2V,UAAY,SAAUR,GACvC,IAAIlC,EAAQpS,KAEZ,OAAO,IADPsU,EAAcC,GAAeD,KACN,SAAU/T,EAASC,GACtC,IAAIX,EACJuS,EAAMyB,WAAU,SAAUnM,GAAK,OAAQ7H,EAAQ6H,CAAI,IAAG,SAAUhH,GAAO,OAAOF,EAAOE,EAAM,IAAG,WAAc,OAAOH,EAAQV,EAAQ,GACvI,GACJ,EACA+T,EAAWvR,OAAS,SAAUwR,GAC1B,OAAO,IAAID,EAAWC,EAC1B,EACOD,CACX,CAlFiB,GAoFjB,SAASW,GAAeD,GACpB,IAAI7E,EACJ,OAAgG,QAAxFA,EAAK6E,QAAiDA,EAAcpD,UAAmC,IAAPzB,EAAgBA,EAAKnP,OACjI,CE7FO,IAAIyU,GAA0B9G,GAAiB,SAAUO,GAC5D,OAAO,WACHA,EAAOxO,MACPA,KAAKK,KAAO,0BACZL,KAAKoF,QAAU,qBACnB,CACJ,ICDI4P,GAAW,SAAUxG,GAErB,SAASwG,IACL,IAAI5C,EAAQ5D,EAAOpP,KAAKY,OAASA,KAOjC,OANAoS,EAAMjD,QAAS,EACfiD,EAAM6C,iBAAmB,KACzB7C,EAAM8C,UAAY,GAClB9C,EAAMC,WAAY,EAClBD,EAAM+C,UAAW,EACjB/C,EAAMgD,YAAc,KACbhD,CACX,CAkHA,OA5HAtF,EAAUkI,EAASxG,GAWnBwG,EAAQ7V,UAAU4U,KAAO,SAAUC,GAC/B,IAAIqB,EAAU,IAAIC,GAAiBtV,KAAMA,MAEzC,OADAqV,EAAQrB,SAAWA,EACZqB,CACX,EACAL,EAAQ7V,UAAUoW,eAAiB,WAC/B,GAAIvV,KAAKmP,OACL,MAAM,IAAI4F,EAElB,EACAC,EAAQ7V,UAAUkO,KAAO,SAAUxN,GAC/B,IAAIuS,EAAQpS,KACZ8R,IAAa,WACT,IAAItC,EAAKC,EAET,GADA2C,EAAMmD,kBACDnD,EAAMC,UAAW,CACbD,EAAM6C,mBACP7C,EAAM6C,iBAAmBnR,MAAM+J,KAAKuE,EAAM8C,YAE9C,IACI,IAAK,IAAIvF,EAAK1C,EAASmF,EAAM6C,kBAAmBO,EAAK7F,EAAGtC,QAASmI,EAAGlI,KAAMkI,EAAK7F,EAAGtC,OAC/DmI,EAAG3V,MACTwN,KAAKxN,EAEtB,CACA,MAAOmQ,GAASR,EAAM,CAAEtK,MAAO8K,EAAS,CACxC,QACI,IACQwF,IAAOA,EAAGlI,OAASmC,EAAKE,EAAGM,SAASR,EAAGrQ,KAAKuQ,EACpD,CACA,QAAU,GAAIH,EAAK,MAAMA,EAAItK,KAAO,CACxC,CACJ,CACJ,GACJ,EACA8P,EAAQ7V,UAAU+F,MAAQ,SAAUxE,GAChC,IAAI0R,EAAQpS,KACZ8R,IAAa,WAET,GADAM,EAAMmD,kBACDnD,EAAMC,UAAW,CAClBD,EAAM+C,SAAW/C,EAAMC,WAAY,EACnCD,EAAMgD,YAAc1U,EAEpB,IADA,IAAIwU,EAAY9C,EAAM8C,UACfA,EAAUxS,QACbwS,EAAUpP,QAAQZ,MAAMxE,EAEhC,CACJ,GACJ,EACAsU,EAAQ7V,UAAUoT,SAAW,WACzB,IAAIH,EAAQpS,KACZ8R,IAAa,WAET,GADAM,EAAMmD,kBACDnD,EAAMC,UAAW,CAClBD,EAAMC,WAAY,EAElB,IADA,IAAI6C,EAAY9C,EAAM8C,UACfA,EAAUxS,QACbwS,EAAUpP,QAAQyM,UAE1B,CACJ,GACJ,EACAyC,EAAQ7V,UAAUoQ,YAAc,WAC5BvP,KAAKqS,UAAYrS,KAAKmP,QAAS,EAC/BnP,KAAKkV,UAAYlV,KAAKiV,iBAAmB,IAC7C,EACA3V,OAAOmF,eAAeuQ,EAAQ7V,UAAW,WAAY,CACjDwF,IAAK,WACD,IAAI8K,EACJ,OAAkC,QAAzBA,EAAKzP,KAAKkV,iBAA8B,IAAPzF,OAAgB,EAASA,EAAG/M,QAAU,CACpF,EACAgC,YAAY,EACZ+Q,cAAc,IAElBT,EAAQ7V,UAAUgV,cAAgB,SAAUX,GAExC,OADAxT,KAAKuV,iBACE/G,EAAOrP,UAAUgV,cAAc/U,KAAKY,KAAMwT,EACrD,EACAwB,EAAQ7V,UAAU2U,WAAa,SAAUN,GAGrC,OAFAxT,KAAKuV,iBACLvV,KAAK0V,wBAAwBlC,GACtBxT,KAAK2V,gBAAgBnC,EAChC,EACAwB,EAAQ7V,UAAUwW,gBAAkB,SAAUnC,GAC1C,IAAIpB,EAAQpS,KACRyP,EAAKzP,KAAMmV,EAAW1F,EAAG0F,SAAU9C,EAAY5C,EAAG4C,UAAW6C,EAAYzF,EAAGyF,UAChF,OAAIC,GAAY9C,EACLrB,IAEXhR,KAAKiV,iBAAmB,KACxBC,EAAUzS,KAAK+Q,GACR,IAAIvE,GAAa,WACpBmD,EAAM6C,iBAAmB,KACzBpG,EAAUqG,EAAW1B,EACzB,IACJ,EACAwB,EAAQ7V,UAAUuW,wBAA0B,SAAUlC,GAClD,IAAI/D,EAAKzP,KAAMmV,EAAW1F,EAAG0F,SAAUC,EAAc3F,EAAG2F,YAAa/C,EAAY5C,EAAG4C,UAChF8C,EACA3B,EAAWtO,MAAMkQ,GAEZ/C,GACLmB,EAAWjB,UAEnB,EACAyC,EAAQ7V,UAAUyW,aAAe,WAC7B,IAAIlC,EAAa,IAAIE,GAErB,OADAF,EAAWO,OAASjU,KACb0T,CACX,EACAsB,EAAQ3S,OAAS,SAAU8P,EAAa8B,GACpC,OAAO,IAAIqB,GAAiBnD,EAAa8B,EAC7C,EACOe,CACX,CA9Hc,CA8HZpB,IAEE0B,GAAoB,SAAU9G,GAE9B,SAAS8G,EAAiBnD,EAAa8B,GACnC,IAAI7B,EAAQ5D,EAAOpP,KAAKY,OAASA,KAGjC,OAFAoS,EAAMD,YAAcA,EACpBC,EAAM6B,OAASA,EACR7B,CACX,CAiBA,OAvBAtF,EAAUwI,EAAkB9G,GAO5B8G,EAAiBnW,UAAUkO,KAAO,SAAUxN,GACxC,IAAI4P,EAAIE,EACwE,QAA/EA,EAAiC,QAA3BF,EAAKzP,KAAKmS,mBAAgC,IAAP1C,OAAgB,EAASA,EAAGpC,YAAyB,IAAPsC,GAAyBA,EAAGvQ,KAAKqQ,EAAI5P,EACjI,EACAyV,EAAiBnW,UAAU+F,MAAQ,SAAUxE,GACzC,IAAI+O,EAAIE,EACyE,QAAhFA,EAAiC,QAA3BF,EAAKzP,KAAKmS,mBAAgC,IAAP1C,OAAgB,EAASA,EAAGvK,aAA0B,IAAPyK,GAAyBA,EAAGvQ,KAAKqQ,EAAI/O,EAClI,EACA4U,EAAiBnW,UAAUoT,SAAW,WAClC,IAAI9C,EAAIE,EAC4E,QAAnFA,EAAiC,QAA3BF,EAAKzP,KAAKmS,mBAAgC,IAAP1C,OAAgB,EAASA,EAAG8C,gBAA6B,IAAP5C,GAAyBA,EAAGvQ,KAAKqQ,EACjI,EACA6F,EAAiBnW,UAAU2U,WAAa,SAAUN,GAC9C,IAAI/D,EAAIE,EACR,OAAmG,QAA3FA,EAA4B,QAAtBF,EAAKzP,KAAKiU,cAA2B,IAAPxE,OAAgB,EAASA,EAAGoE,UAAUL,UAAgC,IAAP7D,EAAgBA,EAAKqB,EACpI,EACOsE,CACX,CAzBuB,CAyBrBN,IC7JF,MAAM,GAFE7N,KAAO,IAAIO,EAAI,CAAC,EAAgC,OAA7BjB,EAAoBI,EAAEa,EAAGP,GAAWO,CAAC,EAE3B,CAAE,CAAE,UAAe,IAAMmO,EAA+BC,Y,qTCwBtF,MAAMC,WAA0B,GAAAjW,aAuBrCkN,YACEgJ,EACAC,EACAC,EACAC,GAAa,EACbC,GAAgB,EAChBvK,GAEAwK,QArBe,KAAAC,wBAA0B,IAAItB,GAwB7ChV,KAAK6L,OAASA,QAAAA,EAAU7I,QAGxBhD,KAAKuW,aAAeC,OAAO3I,KAAK,GAAGoI,KAAYC,IAAY,QAAQvH,SACjE,UAEF3O,KAAKgW,SAAWA,EAChBhW,KAAKmW,WAAaA,EAClBnW,KAAKoW,cAAgBA,CACvB,CAMOK,iBAAiBC,GAA0B,GAChD,GAAI1W,KAAK2W,WAAa3W,KAAK2W,UAAUC,aAAe,GAAAd,UAAUe,KAC5D,MAAM,IAAIhU,MAAM,mCAGlB7C,KAAK2W,UAAY3W,KAAK8W,gBAAgBJ,EACxC,CASaK,oBACXC,EACAC,EACAC,G,0CAGA,MAAMC,QAA2BnX,KAAKoX,iBACpC,MACA,iBAAiBJ,KAAaC,IAC9BI,KAAKC,UAAUJ,IAIjB,OAAOlX,KAAKuX,oBAAoBJ,EAAU7K,EAC5C,G,CAEQwK,gBAAgBJ,GAElB1W,KAAKmW,aAAeO,GACtB1W,KAAK6L,OAAO5I,KACV,sIAIJ,MAAMuU,EAAM,GAAGxX,KAAKmW,WAAa,MAAQ,UACvCnW,KAAKgW,2BAEDyB,EAAyB,CAC7BC,mBAAoB1X,KAAKmW,YAAcO,EACvCiB,QAAS,CACPC,cAAe,SAAS5X,KAAKuW,iBAG3BI,EAAY,IAAI,GAAAb,UAAU0B,EAAKC,GAiCrC,OAhCAd,EAAUzV,GAAG,SAAUgE,IACrBlF,KAAKuC,KAAK,kBAAmB2C,GAC7BlF,KAAK6L,OAAO3G,MAAM,iBAAkBA,EAAM,IAE5CyR,EAAUzV,GAAG,QAAS2W,IACpB7X,KAAKuC,KAAK,iBAAkBsV,GAC5B7X,KAAK6L,OAAOiM,MAAM,gBAAiBD,EAAKlJ,SAAS,SAAS,IAE5DgI,EAAUzV,GAAG,QAAS2W,IACpB7X,KAAKuC,KAAK,iBAAkBsV,GAC5B7X,KAAK6L,OAAOiM,MAAM,gBAAiBD,EAAKlJ,SAAS,SAAS,IAE5DgI,EAAUzV,GAAG,uBAAuB,CAAC6W,EAASZ,KAC5CnX,KAAKuC,KAAK,gCAAiCwV,EAASZ,GACpDnX,KAAK6L,OAAO3G,MAAM,+BAA+B,IAEnDyR,EAAUzV,GAAG,WAAY6W,IACvB/X,KAAKuC,KAAK,oBAAqBwV,GAC/B/X,KAAK6L,OAAOiM,MAAM,2BAA2B,IAE/CnB,EAAUzV,GAAG,QAAQ,KACnBlB,KAAKuC,KAAK,kBACVvC,KAAK6L,OAAOmM,IAAI,oBAAoB,IAEtCrB,EAAUzV,GAAG,SAAS,CAACgI,EAAM+O,KAC3BjY,KAAKuC,KAAK,kBAAmB2G,EAAM+O,GACnCjY,KAAK6L,OAAOmM,IAAI,oBAAoB,IAEtCrB,EAAUzV,GAAG,WAAW,CAAC2W,EAAeK,KACtClY,KAAKuC,KAAK,oBAAqBsV,EAAMK,GACrClY,KAAKmY,wBAAwBN,EAAMK,EAAS,IAEvCvB,CACT,CAMOyB,oBAAoBC,GAAQ,GACjC,IAAKrY,KAAK2W,WAAa3W,KAAK2W,UAAUC,aAAe,GAAAd,UAAUwC,OAC7D,MAAM,IAAIzV,MAAM,0BAGdwV,EACFrY,KAAK2W,UAAU4B,YAEfvY,KAAK2W,UAAU6B,OAEnB,CAMaC,mB,0CAEX,MAAMtB,QAA2BnX,KAAKoX,iBACpC,MACA,iBAIF,OAAOpX,KAAKuX,oBAAoBJ,EAAUlL,EAC5C,G,CAMayM,gB,0CAEX,MAAMvB,QAA2BnX,KAAKoX,iBAAiB,MAAO,cAG9D,OAAOpX,KAAKuX,oBAAoBJ,EAAUjL,EAC5C,G,CAQayM,UACX3B,EACAC,G,0CAGA,MAAME,QAA2BnX,KAAKoX,iBACpC,MACA,UAAUJ,KAAaC,KAIzB,OAAOjX,KAAKuX,oBAAoBJ,EAAUhL,EAC5C,G,CAUayM,aACX5B,EACAC,EACA4B,EACAC,G,0CAGA,MAAM3B,QAA2BnX,KAAKoX,iBACpC,MACA,aAAaJ,KAAaC,KAAgB4B,KAAWC,KAIvD,OAAO9Y,KAAKuX,oBAAoBJ,EAAU/K,EAC5C,G,CAMO2M,uBACL,OAAO/Y,KAAKsW,wBAAwBV,cACtC,CAWaoD,aACXhC,EACAC,EACA4B,EACAC,EACAjZ,G,0CAGA,MAAMsX,QAA2BnX,KAAKoX,iBACpC,MACA,aAAaJ,KAAaC,KAAgB4B,KAAWC,IACrDjZ,GAIF,OAAOG,KAAKuX,oBAAoBJ,EAAU9K,EAC5C,G,CAUa4M,mBACXjC,EACAkC,EACAjC,EACAkC,G,0CAGA,MAAMhC,QAA2BnX,KAAKoX,iBACpC,MACA,eAAeJ,KAAakC,KAAejC,YAAuBkC,KAIpE,OAAOnZ,KAAKuX,oBAAoBJ,EAAUhL,EAC5C,G,CAUaiN,oBACXpC,EACAkC,EACAjC,EACApX,G,0CAGA,MAAMsX,QAA2BnX,KAAKoX,iBACpC,MACA,eAAeJ,KAAakC,KAAejC,WAAsBpX,KAInE,OAAOG,KAAKuX,oBAAoBJ,EAAUhL,EAC5C,G,CAEciL,iBACZiC,EACAC,EACAC,OAAoClY,G,0CAGpC,MAAMmY,EAAoB,GAAGxZ,KAAKmW,WAAa,QAAU,YACvDnW,KAAKgW,8BACesD,IAGhBvZ,EAAoB,CACxBsZ,OAAQA,EACR1B,QAAS,CACPC,cAAe,SAAS5X,KAAKuW,gBAE/BgD,KAAMA,GAIR,OAAOE,MAAMD,EAAMzZ,EACrB,G,CAEcwX,oBACZJ,EACAuC,G,0CAMA,IAAIH,EACAnU,EAGJ,OAAQ+R,EAASwC,QACf,KAAK,IAEH,GADAJ,QAAapC,EAASyC,QACjBF,EAAUH,EAAMvZ,KAAK6L,OAAQ7L,KAAKoW,eAGrC,MAFAhR,EAAU,2CACVpF,KAAK6L,OAAO3G,MAAME,EAASmU,GACrB,IAAI1W,MAAMuC,GAGlB,OAAOmU,EACT,KAAK,IAGH,MAFAnU,EAAU,oDACVpF,KAAK6L,OAAO3G,MAAME,GACZ,IAAIvC,MAAMuC,GAClB,KAAK,IAGH,MAFAA,QAAgB+R,EAAS0C,OACzB7Z,KAAK6L,OAAO3G,MAAME,GACZ,IAAIvC,MAAMuC,GAClB,QAKE,MAJAA,EAAU,iBACR+R,EAASwC,0CACyBxC,EAAS0C,SAC7C7Z,KAAK6L,OAAO3G,MAAME,GACZ,IAAIvC,MAAMuC,GAEtB,G,CAEQ+S,wBAAwBN,EAAeK,GAE7C,GAAIA,EAIF,YAHAlY,KAAK6L,OAAO5I,KACV,+DAKJjD,KAAK6L,OAAOiM,MAAM,oBAMlB,MAAMgC,EAAajC,EAAKlJ,WAClBvJ,EAAmBiS,KAAK0C,MAAMD,GAEhC9N,EAAmB5G,EAASpF,KAAK6L,OAAQ7L,KAAKoW,eAChDpW,KAAKsW,wBAAwBjJ,KAAKjI,GAIpCpF,KAAK6L,OAAO3G,MAAM,2CAA4C4U,EAChE,E","sources":["webpack://freeathome-local-api-client/./node_modules/events/events.js","webpack://freeathome-local-api-client/webpack/bootstrap","webpack://freeathome-local-api-client/webpack/runtime/define property getters","webpack://freeathome-local-api-client/webpack/runtime/hasOwnProperty shorthand","webpack://freeathome-local-api-client/external module \"ts-interface-checker\"","webpack://freeathome-local-api-client/./src/model/validation/channel-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/configuration-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/device-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/device-list-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/device-response-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/devices-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/error-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/floors-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/get-data-point-response-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/in-out-put-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/rooms-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/scenes-triggered-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/set-data-point-response-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/sys-ap-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/users-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/virtual-device-response-ti.ts","webpack://freeathome-local-api-client/./src/model/validation/websocket-message-ti.ts","webpack://freeathome-local-api-client/./src/model/validator.ts","webpack://freeathome-local-api-client/./src/model/virtual-device.ts","webpack://freeathome-local-api-client/./node_modules/tslib/tslib.es6.mjs","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/isFunction.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/Subscription.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/config.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/noop.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/NotificationFactories.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/errorContext.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/Subscriber.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/symbol/observable.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/identity.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/Observable.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/pipe.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","webpack://freeathome-local-api-client/./node_modules/rxjs/dist/esm5/internal/Subject.js","webpack://freeathome-local-api-client/external module \"ws\"","webpack://freeathome-local-api-client/./src/system-access-point.ts"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"array\"]: () => __WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__.array, [\"createCheckers\"]: () => __WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__.createCheckers, [\"iface\"]: () => __WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__.iface, [\"indexKey\"]: () => __WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__.indexKey, [\"opt\"]: () => __WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__.opt });","import { ITypeSuite, iface, indexKey, opt } from \"ts-interface-checker\";\n\nconst Channel = iface([], {\n displayName: opt(\"string\"),\n functionID: opt(\"string\"),\n room: opt(\"string\"),\n floor: opt(\"string\"),\n inputs: opt(\n iface([], {\n [indexKey]: \"InOutPut\",\n })\n ),\n outputs: opt(\n iface([], {\n [indexKey]: \"InOutPut\",\n })\n ),\n type: opt(\"string\"),\n});\n\nexport const ChannelTypeSuite: ITypeSuite = {\n Channel,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst Configuration = iface([], {\n [indexKey]: \"SysAP\",\n});\n\nexport const ConfigurationTypeSuite: ITypeSuite = {\n Configuration,\n};\n","import { iface, indexKey, opt, ITypeSuite } from \"ts-interface-checker\";\n\nconst Device = iface([], {\n displayName: opt(\"string\"),\n room: opt(\"string\"),\n floor: opt(\"string\"),\n interface: opt(\"string\"),\n nativeId: opt(\"string\"),\n channels: opt(\n iface([], {\n [indexKey]: \"Channel\",\n })\n ),\n});\n\nexport const DeviceTypeSuite: ITypeSuite = {\n Device,\n};\n","import { array, iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst DeviceList = iface([], {\n [indexKey]: array(\"string\"),\n});\n\nexport const DeviceListTypeSuite: ITypeSuite = {\n DeviceList,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst DeviceResponse = iface([], {\n [indexKey]: iface([], {\n devices: \"Devices\",\n }),\n});\n\nexport const DeviceResponseTypeSuite: ITypeSuite = {\n DeviceResponse,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst Devices = iface([], {\n [indexKey]: \"Device\",\n});\n\nexport const DevicesTypeSuite: ITypeSuite = {\n Devices,\n};\n","import { iface, ITypeSuite } from \"ts-interface-checker\";\n\nconst Error = iface([], {\n code: \"string\",\n detail: \"string\",\n title: \"string\",\n});\n\nexport const ErrorTypeSuite: ITypeSuite = {\n Error,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst Floors = iface([], {\n [indexKey]: iface([], {\n name: \"string\",\n rooms: \"Rooms\",\n }),\n});\n\nexport const FloorsTypeSuite: ITypeSuite = {\n Floors,\n};\n","import { array, iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst GetDataPointResponse = iface([], {\n [indexKey]: iface([], {\n values: array(\"string\"),\n }),\n});\n\nexport const GetDataPointResponseTypeSuite: ITypeSuite = {\n GetDataPointResponse,\n};\n","import { iface, opt, ITypeSuite } from \"ts-interface-checker\";\n\nconst InOutPut = iface([], {\n value: opt(\"string\"),\n pairingID: opt(\"number\"),\n});\n\nexport const InOutPutTypeSuite: ITypeSuite = {\n InOutPut,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst Rooms = iface([], {\n [indexKey]: iface([], {\n name: \"string\",\n }),\n});\n\nexport const RoomsTypeSuite: ITypeSuite = {\n Rooms,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst ScenesTriggered = iface([], {\n [indexKey]: iface([], {\n channels: iface([], {\n [indexKey]: iface([], {\n outputs: iface([], {\n [indexKey]: iface([], {\n value: \"string\",\n pairingID: \"number\",\n }),\n }),\n }),\n }),\n }),\n});\n\nexport const ScenesTriggeredTypeSuite: ITypeSuite = {\n ScenesTriggered,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst SetDataPointResponse = iface([], {\n [indexKey]: iface([], {\n [indexKey]: \"string\",\n }),\n});\n\nexport const SetDataPointResponseTypeSuite: ITypeSuite = {\n SetDataPointResponse,\n};\n","import { iface, opt, ITypeSuite } from \"ts-interface-checker\";\n\nconst SysAP = iface([], {\n devices: \"Devices\",\n floorplan: iface([], {\n floors: \"Floors\",\n }),\n sysapName: \"string\",\n users: \"Users\",\n error: opt(\"Error\"),\n});\n\nexport const SysApTypeSuite: ITypeSuite = {\n SysAP,\n};\n","import { array, iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst Users = iface([], {\n [indexKey]: iface([], {\n enabled: \"boolean\",\n flags: array(\"string\"),\n grantedPermissions: array(\"string\"),\n jid: \"string\",\n name: \"string\",\n requestedPermissions: array(\"string\"),\n role: \"string\",\n }),\n});\n\nexport const UsersTypeSuite: ITypeSuite = {\n Users,\n};\n","import { iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst VirtualDeviceResponse = iface([], {\n [indexKey]: iface([], {\n devices: iface([], {\n [indexKey]: iface([], {\n serial: \"string\",\n }),\n }),\n }),\n});\n\nexport const VirtualDeviceResponseTypeSuite: ITypeSuite = {\n VirtualDeviceResponse,\n};\n","import { array, iface, indexKey, ITypeSuite } from \"ts-interface-checker\";\n\nconst WebSocketMessage = iface([], {\n [indexKey]: iface([], {\n datapoints: iface([], {\n [indexKey]: \"string\",\n }),\n devices: iface([], {\n [indexKey]: \"Devices\",\n }),\n devicesAdded: array(\"string\"),\n devicesRemoved: array(\"string\"),\n scenesTriggered: \"ScenesTriggered\",\n }),\n});\n\nexport const WebSocketMessageTypeSuite: ITypeSuite = {\n WebSocketMessage,\n};\n","import {\n ChannelTypeSuite,\n DeviceTypeSuite,\n DevicesTypeSuite,\n InOutPutTypeSuite,\n ScenesTriggeredTypeSuite,\n WebSocketMessageTypeSuite,\n DeviceListTypeSuite,\n SetDataPointResponseTypeSuite,\n GetDataPointResponseTypeSuite,\n ConfigurationTypeSuite,\n FloorsTypeSuite,\n RoomsTypeSuite,\n SysApTypeSuite,\n UsersTypeSuite,\n ErrorTypeSuite,\n DeviceResponseTypeSuite,\n VirtualDeviceResponseTypeSuite,\n} from \"./validation\";\nimport { Checker, createCheckers } from \"ts-interface-checker\";\nimport { WebSocketMessage as Message } from \"./websocket-message\";\nimport { Configuration as Config } from \"./configuration\";\nimport { Channel as Chan } from \"./channel\";\nimport { Device as Dev } from \"./device\";\nimport { DeviceList as DevList } from \"./device-list\";\nimport { DeviceResponse as DevResponse } from \"./device-response\";\nimport { GetDataPointResponse as GetResponse } from \"./get-data-point-response\";\nimport { SetDataPointResponse as SetResponse } from \"./set-data-point-response\";\nimport { VirtualDeviceResponse as VDeviceResponse } from \"./virtual-device-response\";\nimport { Logger } from \"./logger\";\n\nconst { Channel } = createCheckers(ChannelTypeSuite, InOutPutTypeSuite);\n\nconst { Configuration } = createCheckers(\n ConfigurationTypeSuite,\n DevicesTypeSuite,\n DeviceTypeSuite,\n ChannelTypeSuite,\n InOutPutTypeSuite,\n FloorsTypeSuite,\n RoomsTypeSuite,\n SysApTypeSuite,\n UsersTypeSuite,\n ErrorTypeSuite\n);\n\nconst { Device } = createCheckers(\n DeviceTypeSuite,\n ChannelTypeSuite,\n InOutPutTypeSuite\n);\n\nconst { DeviceList } = createCheckers(DeviceListTypeSuite);\n\nconst { DeviceResponse } = createCheckers(\n DeviceResponseTypeSuite,\n DevicesTypeSuite,\n DeviceTypeSuite,\n ChannelTypeSuite,\n InOutPutTypeSuite\n);\n\nconst { GetDataPointResponse } = createCheckers(GetDataPointResponseTypeSuite);\n\nconst { SetDataPointResponse } = createCheckers(SetDataPointResponseTypeSuite);\n\nconst { VirtualDeviceResponse } = createCheckers(\n VirtualDeviceResponseTypeSuite\n);\n\nconst { WebSocketMessage } = createCheckers(\n WebSocketMessageTypeSuite,\n DevicesTypeSuite,\n DeviceTypeSuite,\n ChannelTypeSuite,\n InOutPutTypeSuite,\n ScenesTriggeredTypeSuite\n);\n\nfunction check(\n obj: unknown,\n checker: Checker,\n logger: Logger,\n verbose: boolean\n): boolean {\n if (verbose) {\n try {\n checker.check(obj);\n return true;\n } catch (error) {\n logger.error(\"Object validation failed!\", error);\n return false;\n }\n }\n\n return checker.test(obj);\n}\n\n/**\n * Determines whether the specified object is a web socket message.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a web socket message.\n */\nexport function isWebSocketMessage(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is Message {\n return check(obj, WebSocketMessage, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a configuration.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a configuration.\n */\nexport function isConfiguration(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is Config {\n return check(obj, Configuration, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a device list.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a device list.\n */\nexport function isDeviceList(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is DevList {\n return check(obj, DeviceList, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a device response.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a device response.\n */\nexport function isDeviceResponse(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is DevResponse {\n return check(obj, DeviceResponse, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a valid response to a get data point request.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a response to a get data point request.\n */\nexport function isGetDataPointResponse(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is GetResponse {\n return check(obj, GetDataPointResponse, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a valid response to a set data point request.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a response to a set data point request.\n */\nexport function isSetDataPointResponse(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is SetResponse {\n return check(obj, SetDataPointResponse, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a virtual device response.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a response to a virtual device request.\n */\nexport function isVirtualDeviceResponse(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is VDeviceResponse {\n return check(obj, VirtualDeviceResponse, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a channel.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a channel.\n */\nexport function isChannel(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is Chan {\n return check(obj, Channel, logger, verbose);\n}\n\n/**\n * Determines whether the specified object is a device.\n * @param obj {object} The object to be tested\n * @param logger {Logger} The logger instance to be used.\n * @param verbose {boolean} Determines whether validation errors shall be logged. Default value is false.\n * @returns {boolean} A value indicating whether the specified object is a device.\n */\nexport function isDevice(\n obj: unknown,\n logger: Logger,\n verbose = false\n): obj is Dev {\n return check(obj, Device, logger, verbose);\n}\n","/** Defines a virtual device. */\nexport interface VirtualDevice {\n /** The virtual device type. */\n type: VirtualDeviceType;\n /** The virtual device properties */\n properties?: {\n /** The time to live value indicates the number of seconds the system access point will wait for a message before it assumes the device to be unresponsive. */\n ttl?: string;\n /** The display name for the virtual device. */\n displayname?: string;\n };\n}\n\n/** Defines the possible types of virtual devices. */\nexport enum VirtualDeviceType {\n /** A binary sensor */\n BinarySensor = \"BinarySensor\",\n /** A blind actuator */\n BlindActuator = \"BlindActuator\",\n /** A switching actuator */\n SwitchingActuator = \"SwitchingActuator\",\n /** A ceiling fan actuator */\n CeilingFanActuator = \"CeilingFanActuator\",\n /** A real time clock */\n RTC = \"RTC\",\n /** A dimmer actuator */\n DimActuator = \"DimActuator\",\n /** A charger for an electronic vehicle */\n EVCharging = \"evcharging\",\n /** A window sensor */\n WindowSensor = \"WindowSensor\",\n /** A simple door lock */\n SimpleDoorlock = \"simple_doorlock\",\n /** A shutter actuator */\n ShutterActuator = \"ShutterActuator\",\n /** A weather station */\n WeatherStation = \"WeatherStation\",\n /** A temperature sensor */\n WeatherTemperatureSensor = \"Weather-TemperatureSensor\",\n /** A wind sensor */\n WeatherWindSensor = \"Weather-WindSensor\",\n /** A brightness sensor */\n WeatherBrightnessSensor = \"Weather-BrightnessSensor\",\n /** A rain sensor */\n WeatherRainSensor = \"Weather-RainSensor\",\n /** A window actuator */\n WindowActuator = \"WindowActuator\",\n /** A detector for carbon monoxide (CO) */\n CODetector = \"CODetector\",\n /** A fire detector */\n FireDetector = \"FireDetector\",\n /** A KNX switch sensor */\n KNXSwitchSensor = \"KNX-SwitchSensor\",\n /** A media player */\n MediaPlayer = \"MediaPlayer\",\n /** A battery */\n EnergyBattery = \"EnergyBattery\",\n /** An inverter */\n EnergyInverter = \"EnergyInverter\",\n /** An energy meter */\n EnergyMeter = \"EnergyMeter\",\n /** A device combining inverter and battery characteristics */\n EnergyInverterBattery = \"EnergyInverterBattery\",\n /** A device combining inverter and energy meter characteristics */\n EnergyInverterMeter = \"EnergyInverterMeter\",\n /** A device combining inverter, battery and energy meter characteristics */\n EnergyInverterMeterBattery = \"EnergyInverterMeterBattery\",\n /** A device combining battery and energy meter characteristics */\n EnergyMeterBattery = \"EnergyMeterBattery\",\n /** An air quality sensor measuring carbon dioxide (CO2) */\n AirQualityCO2 = \"AirQualityCO2\",\n /** An air quality sensor measuring carbon monoxide (CO) */\n AirQualityCO = \"AirQualityCO\",\n /** An full air quality sensor */\n AirQualityFull = \"AirQualityFull\",\n /** An air quality sensor measuring humidity */\n AirQualityHumidity = \"AirQualityHumidity\",\n /** An air quality sensor measuring nitrogen dioxide (NO2) */\n AirQualityNO2 = \"AirQualityNO2\",\n /** An air quality sensor measuring ozone (O3) */\n AirQualityO3 = \"AirQualityO3\",\n /** An air quality sensor measuring coarse particulate matter with in the 10 micron scale */\n AirQualityPM10 = \"AirQualityPM10\",\n /** An air quality sensor measuring coarse particulate matter with in the 25 micron scale */\n AirQualityPM25 = \"AirQualityPM25\",\n /** An air quality sensor measuring barometric pressure */\n AirQualityPressure = \"AirQualityPressure\",\n /** An air quality sensor measuring temperature */\n AirQualityTemperature = \"AirQualityTemperature\",\n /** An air quality sensor measuring volatile organic compounds */\n AirQualityVOC = \"AirQualityVOC\",\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","export var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\n//# sourceMappingURL=NotificationFactories.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"WebSocket\"]: () => __WEBPACK_EXTERNAL_MODULE_ws__.WebSocket });","import { Observable, Subject } from \"rxjs\";\nimport { ClientOptions, RawData, WebSocket } from \"ws\";\nimport { EventEmitter } from \"events\";\nimport {\n Configuration,\n DeviceList,\n DeviceResponse,\n GetDataPointResponse,\n isDeviceList,\n isDeviceResponse,\n isWebSocketMessage,\n isGetDataPointResponse,\n isSetDataPointResponse,\n isConfiguration,\n SetDataPointResponse,\n WebSocketMessage,\n VirtualDevice,\n VirtualDeviceResponse,\n Logger,\n} from \"./model\";\nimport { isVirtualDeviceResponse } from \"./model/validator\";\n\n/** The HTTP request method */\ntype HttpRequestMethod = \"GET\" | \"POST\" | \"DELETE\" | \"PATCH\" | \"PUT\";\n\n/** The class representing a System Access Point. */\nexport class SystemAccessPoint extends EventEmitter {\n /** The basic authentication key used for requests. */\n public readonly basicAuthKey: string;\n /** The host name of the system access point. */\n public readonly hostName: string;\n /** Determines whether requests to the system access point will use TLS. */\n public readonly tlsEnabled: boolean;\n private readonly logger: Logger;\n private verboseErrors: boolean;\n private webSocket?: WebSocket;\n private readonly webSocketMessageSubject = new Subject<WebSocketMessage>();\n\n /**\n * Constructs a new SystemAccessPoint instance\n *\n * @constructor\n * @param hostName {string} The system access point host name.\n * @param userName {string} The user name that shall be used to authenticate with the system access point.\n * @param password {string} The password that shall be used to authenticate with the system access point.\n * @param tlsEnabled {boolean} Determines whether the communication with the system access point shall be protected by TLS.\n * @param verboseErrors {boolean} Determines whether verbose error messages shall be used, for example for message validation.\n * @param logger {Logger} The logger instance to be used. If no explicit implementation is provided, the this.logger will be used for logging.\n */\n constructor(\n hostName: string,\n userName: string,\n password: string,\n tlsEnabled = true,\n verboseErrors = false,\n logger?: Logger\n ) {\n super();\n\n // Configure logging\n this.logger = logger ?? console;\n\n // Create Basic Authentication key\n this.basicAuthKey = Buffer.from(`${userName}:${password}`, \"utf8\").toString(\n \"base64\"\n );\n this.hostName = hostName;\n this.tlsEnabled = tlsEnabled;\n this.verboseErrors = verboseErrors;\n }\n\n /**\n * Connects to the System Access Point web socket.\n * @param certificateVerification {boolean} Determines whether the TLS certificate presented by the server will be verified.\n */\n public connectWebSocket(certificateVerification = true): void {\n if (this.webSocket && this.webSocket.readyState === WebSocket.OPEN) {\n throw new Error(\"Web socket is already connected\");\n }\n\n this.webSocket = this.createWebSocket(certificateVerification);\n }\n\n /**\n * Creates a new virtual device.\n * @param sysApUuid {string} The UUID identifying the system access point.\n * @param deviceSerial {string} The serial number to be assigned to the device.\n * @param virtualDevice {VirtualDevice} The virtual device to be created.\n * @returns {Promise.<VirtualDeviceResponse>} The response to the virtual device request.\n */\n public async createVirtualDevice(\n sysApUuid: string,\n deviceSerial: string,\n virtualDevice: VirtualDevice\n ): Promise<VirtualDeviceResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"PUT\",\n `virtualdevice/${sysApUuid}/${deviceSerial}`,\n JSON.stringify(virtualDevice)\n );\n\n // Process response\n return this.processRestResponse(response, isVirtualDeviceResponse);\n }\n\n private createWebSocket(certificateVerification: boolean): WebSocket {\n // Disabling certificate verification is discouraged, issue a warning\n if (this.tlsEnabled && !certificateVerification) {\n this.logger.warn(\n \"TLS certificate verification is disabled! This poses a security risk, activating certificate verification is strictly recommended.\"\n );\n }\n\n const url = `${this.tlsEnabled ? \"wss\" : \"ws\"}://${\n this.hostName\n }/fhapi/v1/api/ws`;\n const options: ClientOptions = {\n rejectUnauthorized: this.tlsEnabled && certificateVerification,\n headers: {\n Authorization: `Basic ${this.basicAuthKey}`,\n },\n };\n const webSocket = new WebSocket(url, options);\n webSocket.on(\"error\", (error: Error) => {\n this.emit(\"websocket-error\", error);\n this.logger.error(\"Error received\", error);\n });\n webSocket.on(\"ping\", (data: Buffer) => {\n this.emit(\"websocket-ping\", data);\n this.logger.debug(\"Ping received\", data.toString(\"ascii\"));\n });\n webSocket.on(\"pong\", (data: Buffer) => {\n this.emit(\"websocket-pong\", data);\n this.logger.debug(\"Pong received\", data.toString(\"ascii\"));\n });\n webSocket.on(\"unexpected-response\", (request, response) => {\n this.emit(\"websocket-unexpected-response\", request, response);\n this.logger.error(\"Unexpected response received\");\n });\n webSocket.on(\"upgrade\", (request) => {\n this.emit(\"websocket-upgrade\", request);\n this.logger.debug(\"Upgrade request received\");\n });\n webSocket.on(\"open\", () => {\n this.emit(\"websocket-open\");\n this.logger.log(\"Connection opened\");\n });\n webSocket.on(\"close\", (code, reason) => {\n this.emit(\"websocket-close\", code, reason);\n this.logger.log(\"Connection closed\");\n });\n webSocket.on(\"message\", (data: RawData, isBinary: boolean) => {\n this.emit(\"websocket-message\", data, isBinary);\n this.processWebSocketMessage(data, isBinary);\n });\n return webSocket;\n }\n\n /**\n * Disconnects from the System Access Point web socket.\n * @param force {boolean} Determines whether or not the connection will be closed forcibly.\n */\n public disconnectWebSocket(force = false): void {\n if (!this.webSocket || this.webSocket.readyState === WebSocket.CLOSED) {\n throw new Error(\"Web socket is not open\");\n }\n\n if (force) {\n this.webSocket.terminate();\n } else {\n this.webSocket.close();\n }\n }\n\n /**\n * Gets the configuration from the system access point.\n * @returns {Promise.<Configuration>} The system access point configuration.\n */\n public async getConfiguration(): Promise<Configuration> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"GET\",\n \"configuration\"\n );\n\n // Process response\n return this.processRestResponse(response, isConfiguration);\n }\n\n /**\n * Gets the device list from the system access point.\n * @returns {Promise.<DeviceList>} The requested device list.\n */\n public async getDeviceList(): Promise<DeviceList> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\"GET\", \"devicelist\");\n\n // Process response\n return this.processRestResponse(response, isDeviceList);\n }\n\n /**\n * Gets the specified device from the system access point.\n * @param sysApUuid {string} The UUID identifying the system access point.\n * @param deviceSerial {string} The device serial number.\n * @returns {Promise.<DeviceResponse>} The response to the device request.\n */\n public async getDevice(\n sysApUuid: string,\n deviceSerial: string\n ): Promise<DeviceResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"GET\",\n `device/${sysApUuid}/${deviceSerial}`\n );\n\n // Process response\n return this.processRestResponse(response, isDeviceResponse);\n }\n\n /**\n * Gets the specified data point from the system access point.\n * @param sysApUuid {string} The UUID idenfifying the system access point.\n * @param deviceSerial {string} The device serial number.\n * @param channel {string} The channel identifier.\n * @param dataPoint {string} The datapoint identifier.\n * @returns {Promise.<GetDataPointResponse>} The response to the get data point request.\n */\n public async getDatapoint(\n sysApUuid: string,\n deviceSerial: string,\n channel: string,\n dataPoint: string\n ): Promise<GetDataPointResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"GET\",\n `datapoint/${sysApUuid}/${deviceSerial}.${channel}.${dataPoint}`\n );\n\n // Process response\n return this.processRestResponse(response, isGetDataPointResponse);\n }\n\n /**\n * Gets the web socket messages.\n * @returns {Observable.<WebSocketMessage>} An observable that is updated with the messages received from the web socket.\n */\n public getWebSocketMessages(): Observable<WebSocketMessage> {\n return this.webSocketMessageSubject.asObservable();\n }\n\n /**\n * Sets a new value for the specificed data point.\n * @param sysApUuid {string} The UUID idenfifying the system access point.\n * @param deviceSerial {string} The device serial number.\n * @param channel {string} The channel identifier.\n * @param dataPoint {string} The datapoint identifier.\n * @param value {string} The new value to be set.\n * @returns {Promise.<SetDataPointResponse>} The response to the set data point request.\n */\n public async setDatapoint(\n sysApUuid: string,\n deviceSerial: string,\n channel: string,\n dataPoint: string,\n value: string\n ): Promise<SetDataPointResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"PUT\",\n `datapoint/${sysApUuid}/${deviceSerial}.${channel}.${dataPoint}`,\n value\n );\n\n // Process response\n return this.processRestResponse(response, isSetDataPointResponse);\n }\n\n /**\n * Triggeres the given action for the specified proxy device. Please note that this method is part of the experimental API!\n * @param sysApUuid {string} The UUID idenfifying the system access point.\n * @param deviceClass {string} The device class.\n * @param deviceSerial {string} The device serial number.\n * @param action {string} The action to be triggered.\n * @returns {Promise.<DeviceResponse>} The response to the request.\n */\n public async triggerProxyDevice(\n sysApUuid: string,\n deviceClass: string,\n deviceSerial: string,\n action: string\n ): Promise<DeviceResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"GET\",\n `proxydevice/${sysApUuid}/${deviceClass}/${deviceSerial}/action/${action}`\n );\n\n // Process response\n return this.processRestResponse(response, isDeviceResponse);\n }\n\n /**\n * Sets the given value for the specified proxy device. Please note that this method is part of the experimental API!\n * @param sysApUuid {string} The UUID idenfifying the system access point.\n * @param deviceClass {string} The device class.\n * @param deviceSerial {string} The device serial number.\n * @param value {string} The value to be set.\n * @returns {Promise.<DeviceResponse>} The response to the request.\n */\n public async setProxyDeviceValue(\n sysApUuid: string,\n deviceClass: string,\n deviceSerial: string,\n value: string\n ): Promise<DeviceResponse> {\n // Get response from system access point\n const response: Response = await this.fetchDataViaRest(\n \"PUT\",\n `proxydevice/${sysApUuid}/${deviceClass}/${deviceSerial}/value/${value}`\n );\n\n // Process response\n return this.processRestResponse(response, isDeviceResponse);\n }\n\n private async fetchDataViaRest(\n method: HttpRequestMethod,\n route: string,\n body: BodyInit | null | undefined = undefined\n ): Promise<Response> {\n // Set up request info\n const info: RequestInfo = `${this.tlsEnabled ? \"https\" : \"http\"}://${\n this.hostName\n }/fhapi/v1/api/rest/${route}`;\n\n // Set up request init\n const init: RequestInit = {\n method: method,\n headers: {\n Authorization: `Basic ${this.basicAuthKey}`,\n },\n body: body,\n };\n\n // Get response from system access point\n return fetch(info, init);\n }\n\n private async processRestResponse<TResponse>(\n response: Response,\n typeGuard: (\n obj: unknown,\n logger: Logger,\n verbose: boolean\n ) => obj is TResponse\n ): Promise<TResponse> {\n let body: unknown;\n let message: string;\n\n // Process response\n switch (response.status) {\n case 200:\n body = await response.json();\n if (!typeGuard(body, this.logger, this.verboseErrors)) {\n message = \"Received message has an unexpected type!\";\n this.logger.error(message, body);\n throw new Error(message);\n }\n\n return body;\n case 401:\n message = \"Authentication information is missing or invalid.\";\n this.logger.error(message);\n throw new Error(message);\n case 502:\n message = await response.text();\n this.logger.error(message);\n throw new Error(message);\n default:\n message = `Received HTTP ${\n response.status\n } status code unexpectedly: ${await response.text()}`;\n this.logger.error(message);\n throw new Error(message);\n }\n }\n\n private processWebSocketMessage(data: RawData, isBinary: boolean): void {\n // Do not process binary messages\n if (isBinary) {\n this.logger.warn(\n \"Binary message received. Binary messages are not processed.\"\n );\n return;\n }\n\n this.logger.debug(\"Message received\");\n /*\n * Deserialize the message.\n * The message is expected to be deserializable as a web socket message.\n * If that is not the case, that's an error case.\n */\n const serialized = data.toString();\n const message: unknown = JSON.parse(serialized);\n\n if (isWebSocketMessage(message, this.logger, this.verboseErrors)) {\n this.webSocketMessageSubject.next(message);\n return;\n }\n\n this.logger.error(\"Received message has an unexpected type!\", serialized);\n }\n}\n"],"names":["ReflectOwnKeys","R","Reflect","ReflectApply","apply","target","receiver","args","Function","prototype","call","ownKeys","Object","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","value","EventEmitter","init","this","module","exports","once","emitter","name","Promise","resolve","reject","errorListener","err","removeListener","resolver","slice","arguments","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","undefined","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","type","prepend","m","events","existing","warning","create","newListener","emit","unshift","push","length","warned","w","Error","String","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","bind","_listeners","unwrap","evlistener","arr","ret","Array","i","unwrapListeners","arrayClone","listenerCount","n","copy","addEventListener","wrapListener","arg","removeEventListener","defineProperty","enumerable","get","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","index","pop","spliceOne","off","removeAllListeners","key","keys","rawListeners","eventNames","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","obj","prop","hasOwnProperty","y","__WEBPACK_EXTERNAL_MODULE_ts_interface_checker_865cda28__","array","createCheckers","iface","indexKey","opt","x","ChannelTypeSuite","Channel","displayName","functionID","room","floor","inputs","outputs","ConfigurationTypeSuite","Configuration","DeviceTypeSuite","Device","interface","nativeId","channels","DeviceListTypeSuite","DeviceList","DeviceResponseTypeSuite","DeviceResponse","devices","DevicesTypeSuite","Devices","ErrorTypeSuite","code","detail","title","FloorsTypeSuite","Floors","rooms","GetDataPointResponseTypeSuite","GetDataPointResponse","values","InOutPutTypeSuite","InOutPut","pairingID","RoomsTypeSuite","Rooms","ScenesTriggeredTypeSuite","ScenesTriggered","SetDataPointResponseTypeSuite","SetDataPointResponse","SysApTypeSuite","SysAP","floorplan","floors","sysapName","users","UsersTypeSuite","Users","enabled","grantedPermissions","jid","requestedPermissions","role","VirtualDeviceResponseTypeSuite","VirtualDeviceResponse","serial","WebSocketMessageTypeSuite","WebSocketMessage","datapoints","devicesAdded","devicesRemoved","scenesTriggered","VirtualDeviceType","check","checker","logger","verbose","test","isWebSocketMessage","isConfiguration","isDeviceList","isDeviceResponse","isGetDataPointResponse","isSetDataPointResponse","isVirtualDeviceResponse","isChannel","isDevice","extendStatics","b","setPrototypeOf","__proto__","p","__extends","__","constructor","__values","s","Symbol","iterator","next","done","__read","r","e","ar","__spreadArray","to","from","pack","l","isFunction","createErrorClass","createImpl","ctorFunc","instance","stack","SuppressedError","UnsubscriptionError","_super","errors","map","toString","join","arrRemove","item","indexOf","splice","Subscription","initialTeardown","closed","_parentage","_finalizers","empty","unsubscribe","e_1","_a","e_2","_b","isArray","_parentage_1","_parentage_1_1","remove","e_1_1","return","initialFinalizer","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","add","teardown","_hasParent","_addParent","parent","includes","_removeParent","EMPTY","EMPTY_SUBSCRIPTION","isSubscription","config","timeoutProvider","setTimeout","timeout","_i","delegate","clearTimeout","handle","noop","COMPLETE_NOTIFICATION","createNotification","kind","errorContext","cb","isRoot","errorThrown","Subscriber","destination","_this","isStopped","EMPTY_OBSERVER","complete","SafeSubscriber","handleStoppedNotification","nextNotification","_next","_error","_complete","_bind","fn","thisArg","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","reportUnhandledError","notification","subscriber","onStoppedNotification","observable","identity","Observable","subscribe","_subscribe","lift","operator","source","isObserver","_trySubscribe","sink","forEach","promiseCtor","getPromiseCtor","pipe","operations","fns","input","reduce","prev","toPromise","ObjectUnsubscribedError","Subject","currentObservers","observers","hasError","thrownError","subject","AnonymousSubject","_throwIfClosed","_c","configurable","_checkFinalizedStatuses","_innerSubscribe","asObservable","__WEBPACK_EXTERNAL_MODULE_ws__","WebSocket","SystemAccessPoint","hostName","userName","password","tlsEnabled","verboseErrors","super","webSocketMessageSubject","basicAuthKey","Buffer","connectWebSocket","certificateVerification","webSocket","readyState","OPEN","createWebSocket","createVirtualDevice","sysApUuid","deviceSerial","virtualDevice","response","fetchDataViaRest","JSON","stringify","processRestResponse","url","options","rejectUnauthorized","headers","Authorization","data","debug","request","log","reason","isBinary","processWebSocketMessage","disconnectWebSocket","force","CLOSED","terminate","close","getConfiguration","getDeviceList","getDevice","getDatapoint","channel","dataPoint","getWebSocketMessages","setDatapoint","triggerProxyDevice","deviceClass","action","setProxyDeviceValue","method","route","body","info","fetch","typeGuard","status","json","text","serialized","parse"],"sourceRoot":""}
|
package/dist/esm/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "freeathome-local-api-client",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.12",
|
|
4
4
|
"preview": true,
|
|
5
5
|
"description": "A client library for the BUSCH-JAEGER free@home local API implemented in TypeScript",
|
|
6
6
|
"repository": {
|
|
@@ -56,30 +56,30 @@
|
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
|
59
|
-
"@types/jasmine": "^4.3.
|
|
59
|
+
"@types/jasmine": "^4.3.5",
|
|
60
60
|
"@types/webpack": "^5.28.1",
|
|
61
|
-
"@types/ws": "^8.5.
|
|
62
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
63
|
-
"@typescript-eslint/parser": "^5.
|
|
61
|
+
"@types/ws": "^8.5.5",
|
|
62
|
+
"@typescript-eslint/eslint-plugin": "^5.60.1",
|
|
63
|
+
"@typescript-eslint/parser": "^5.60.1",
|
|
64
64
|
"better-docs": "^2.7.2",
|
|
65
|
-
"eslint": "^8.
|
|
65
|
+
"eslint": "^8.43.0",
|
|
66
66
|
"eslint-config-prettier": "^8.8.0",
|
|
67
67
|
"eslint-plugin-import": "^2.27.5",
|
|
68
|
-
"eslint-plugin-n": "^16.0.
|
|
68
|
+
"eslint-plugin-n": "^16.0.1",
|
|
69
69
|
"eslint-plugin-prettier": "^4.2.1",
|
|
70
70
|
"eslint-plugin-promise": "^6.1.1",
|
|
71
|
-
"jasmine": "^
|
|
71
|
+
"jasmine": "^5.0.2",
|
|
72
72
|
"jasmine-spec-reporter": "^7.0.0",
|
|
73
|
-
"jsdoc": "^
|
|
73
|
+
"jsdoc": "^4.0.2",
|
|
74
74
|
"nyc": "^15.1.0",
|
|
75
75
|
"prettier": "^2.8.8",
|
|
76
76
|
"rimraf": "^5.0.1",
|
|
77
77
|
"ts-interface-builder": "^0.3.3",
|
|
78
|
-
"ts-loader": "^9.4.
|
|
78
|
+
"ts-loader": "^9.4.4",
|
|
79
79
|
"ts-node": "^10.9.1",
|
|
80
|
-
"typescript": "^5.1.
|
|
81
|
-
"webpack": "^5.
|
|
82
|
-
"webpack-cli": "^5.
|
|
80
|
+
"typescript": "^5.1.6",
|
|
81
|
+
"webpack": "^5.88.1",
|
|
82
|
+
"webpack-cli": "^5.1.4"
|
|
83
83
|
},
|
|
84
84
|
"type": "module"
|
|
85
85
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "freeathome-local-api-client",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.12",
|
|
4
4
|
"preview": true,
|
|
5
5
|
"description": "A client library for the BUSCH-JAEGER free@home local API implemented in TypeScript",
|
|
6
6
|
"repository": {
|
|
@@ -56,29 +56,29 @@
|
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
|
59
|
-
"@types/jasmine": "^4.3.
|
|
59
|
+
"@types/jasmine": "^4.3.5",
|
|
60
60
|
"@types/webpack": "^5.28.1",
|
|
61
|
-
"@types/ws": "^8.5.
|
|
62
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
63
|
-
"@typescript-eslint/parser": "^5.
|
|
61
|
+
"@types/ws": "^8.5.5",
|
|
62
|
+
"@typescript-eslint/eslint-plugin": "^5.60.1",
|
|
63
|
+
"@typescript-eslint/parser": "^5.60.1",
|
|
64
64
|
"better-docs": "^2.7.2",
|
|
65
|
-
"eslint": "^8.
|
|
65
|
+
"eslint": "^8.43.0",
|
|
66
66
|
"eslint-config-prettier": "^8.8.0",
|
|
67
67
|
"eslint-plugin-import": "^2.27.5",
|
|
68
|
-
"eslint-plugin-n": "^16.0.
|
|
68
|
+
"eslint-plugin-n": "^16.0.1",
|
|
69
69
|
"eslint-plugin-prettier": "^4.2.1",
|
|
70
70
|
"eslint-plugin-promise": "^6.1.1",
|
|
71
|
-
"jasmine": "^
|
|
71
|
+
"jasmine": "^5.0.2",
|
|
72
72
|
"jasmine-spec-reporter": "^7.0.0",
|
|
73
|
-
"jsdoc": "^
|
|
73
|
+
"jsdoc": "^4.0.2",
|
|
74
74
|
"nyc": "^15.1.0",
|
|
75
75
|
"prettier": "^2.8.8",
|
|
76
76
|
"rimraf": "^5.0.1",
|
|
77
77
|
"ts-interface-builder": "^0.3.3",
|
|
78
|
-
"ts-loader": "^9.4.
|
|
78
|
+
"ts-loader": "^9.4.4",
|
|
79
79
|
"ts-node": "^10.9.1",
|
|
80
|
-
"typescript": "^5.1.
|
|
81
|
-
"webpack": "^5.
|
|
82
|
-
"webpack-cli": "^5.
|
|
80
|
+
"typescript": "^5.1.6",
|
|
81
|
+
"webpack": "^5.88.1",
|
|
82
|
+
"webpack-cli": "^5.1.4"
|
|
83
83
|
}
|
|
84
84
|
}
|