text: !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).OSC=e()}(this,(function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function n(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function i(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?o(Object(n),!0).forEach((function(e){r(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&u(t,e)}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function u(t,e){return(u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function c(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function f(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=a(t);if(e){var o=a(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return c(this,n)}}function h(t,e,n){return(h="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=a(t)););return t}(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(n):o.value}})(t,e,n||t)}function l(t){return Number(t)===t&&t%1==0}function d(t){return Number(t)===t&&t%1!=0}function p(t){return"string"==typeof t}function v(t){return"[object Array]"===Object.prototype.toString.call(t)}function w(t){return"[object Object]"===Object.prototype.toString.call(t)}function y(t){return"function"==typeof t}function g(t){return t instanceof Uint8Array}function k(t){return t instanceof Date}function b(t){return void 0===t}function m(t){return t+3&-4}function S(t){return Object.prototype.hasOwnProperty.call("undefined"!=typeof global?global:window,t)}function O(t){return t.buffer?new DataView(t.buffer):t instanceof ArrayBuffer?new DataView(t):new DataView(new Uint8Array(t))}function E(t){if(l(t))return"i";if(d(t))return"f";if(p(t))return"s";if(g(t))return"b";throw new Error("OSC typeTag() found unknown value type")}function C(t){var e="";if(v(t))return"/".concat(t.join("/"));if(p(t))return(e=t).length>1&&"/"===e[e.length-1]&&(e=e.slice(0,e.length-1)),e.length>1&&"/"!==e[0]&&(e="/".concat(e)),e;throw new Error("OSC prepareAddress() needs addresses of type array or string")}function P(t){if(!p(t))throw new Error("OSC prepareRegExPattern() needs strings");return t.replace(/\./g,"\\.").replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!/g,"[^").replace(/\?/g,".").replace(/\*/g,".*")}var A=function(){function e(){t(this,e),this.data=[],this.byteLength=0}return n(e,[{key:"add",value:function(t){var e=t.pack();return this.byteLength+=e.byteLength,this.data.push(e),this}},{key:"merge",value:function(){var t=new Uint8Array(this.byteLength),e=0;return this.data.forEach((function(n){t.set(n,e),e+=n.byteLength})),t}}]),e}(),D=function(){function e(n){t(this,e),this.value=n,this.offset=0}return n(e,[{key:"pack",value:function(t,e){if(!t||!e)throw new Error("OSC Atomic cant't be packed without given method or byteLength");var n=new Uint8Array(e),r=new DataView(n.buffer);if(b(this.value))throw new Error("OSC Atomic cant't be encoded with empty value");return r[t](this.offset,this.value,!1),n}},{key:"unpack",value:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(!(t&&e&&n))throw new Error("OSC Atomic cant't be unpacked without given dataView, method or byteLength");if(!(t instanceof DataView))throw new Error("OSC Atomic expects an instance of type DataView");return this.value=t[e](r,!1),this.offset=r+n,this.offset}}]),e}(),j=function(e){s(o,e);var r=f(o);function o(e){if(t(this,o),e&&!l(e))throw new Error("OSC AtomicInt32 constructor expects value of type number");return r.call(this,e)}return n(o,[{key:"pack",value:function(){return h(a(o.prototype),"pack",this).call(this,"setInt32",4)}},{key:"unpack",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return h(a(o.prototype),"unpack",this).call(this,t,"getInt32",4,e)}}]),o}(D),x="utf-8";function H(t){if(S("Buffer"))return Buffer.from(t).toString(x);if(S("TextDecoder"))return new TextDecoder(x).decode(new Int8Array(t));for(var e="",n=0;n<t.length;n+=65537)e+=String.fromCharCode.apply(null,t.slice(n,n+65537));return e}var I=function(e){s(o,e);var r=f(o);function o(e){if(t(this,o),e&&!p(e))throw new Error("OSC AtomicString constructor expects value of type string");return r.call(this,e)}return n(o,[{key:"pack",value:function(){if(b(this.value))throw new Error("OSC AtomicString can not be encoded with empty value");for(var t="".concat(this.value,"\0"),e=m(t.length),n=new Uint8Array(e),r=0;r<t.length;r+=1)n[r]=t.charCodeAt(r);return n}},{key:"unpack",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicString expects an instance of type DataView");for(var n,r=e,o=[];r<t.byteLength;r+=1){if(0===(n=t.getUint8(r))){r+=1;break}o.push(n)}if(r===t.length)throw new Error("OSC AtomicString found a malformed OSC string");return this.offset=m(r),this.value=H(o),this.offset}}]),o}(D),L=2208988800,_=4294967296,B=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(t(this,e),!l(n)||!l(r))throw new Error("OSC Timetag constructor expects values of type integer number");this.seconds=n,this.fractions=r}return n(e,[{key:"timestamp",value:function(t){var e;if("number"==typeof t){e=t/1e3;var n=Math.floor(e);return this.seconds=n+L,this.fractions=Math.round(_*(e-n)),t}return 1e3*((e=this.seconds-L)+Math.round(this.fractions/_))}}]),e}(),T=function(e){s(o,e);var r=f(o);function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Date.now();t(this,o);var n=new B;return e instanceof B?n=e:l(e)?n.timestamp(e):k(e)&&n.timestamp(e.getTime()),r.call(this,n)}return n(o,[{key:"pack",value:function(){if(b(this.value))throw new Error("OSC AtomicTimetag can not be encoded with empty value");var t=this.value,e=t.seconds,n=t.fractions,r=new Uint8Array(8),o=new DataView(r.buffer);return o.setInt32(0,e,!1),o.setInt32(4,n,!1),r}},{key:"unpack",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicTimetag expects an instance of type DataView");var n=t.getUint32(e,!1),r=t.getUint32(e+4,!1);return this.value=new B(n,r),this.offset=e+8,this.offset}}]),o}(D),V=function(e){s(o,e);var r=f(o);function o(e){if(t(this,o),e&&!g(e))throw new Error("OSC AtomicBlob constructor expects value of type Uint8Array");return r.call(this,e)}return n(o,[{key:"pack",value:function(){if(b(this.value))throw new Error("OSC AtomicBlob can not be encoded with empty value");var t=m(this.value.byteLength),e=new Uint8Array(t+4);return new DataView(e.buffer).setInt32(0,this.value.byteLength,!1),e.set(this.value,4),e}},{key:"unpack",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicBlob expects an instance of type DataView");var n=t.getInt32(e,!1);return this.value=new Uint8Array(t.buffer,e+4,n),this.offset=m(e+4+n),this.offset}}]),o}(D),M=function(e){s(o,e);var r=f(o);function o(e){if(t(this,o),e&&!d(e))throw new Error("OSC AtomicFloat32 constructor expects value of type float");return r.call(this,e)}return n(o,[{key:"pack",value:function(){return h(a(o.prototype),"pack",this).call(this,"setFloat32",4)}},{key:"unpack",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return h(a(o.prototype),"unpack",this).call(this,t,"getFloat32",4,e)}}]),o}(D),N=function(){function e(){t(this,e),this.offset=0,this.address="",this.types="",this.args=[];for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];if(r.length>0){if(!p(r[0])&&!v(r[0]))throw new Error("OSC Message constructor first argument (address) must be a string or array");this.address=C(r.shift()),this.types=r.map((function(t){return E(t)})).join(""),this.args=r}}return n(e,[{key:"add",value:function(t){if(b(t))throw new Error("OSC Message needs a valid OSC Atomic Data Type");this.args.push(t),this.types+=E(t)}},{key:"pack",value:function(){if(0===this.address.length||"/"!==this.address[0])throw new Error("OSC Message has an invalid address");var t,e=new A;(e.add(new I(this.address)),e.add(new I(",".concat(this.types))),this.args.length>0)&&this.args.forEach((function(n){if(l(n))t=new j(n);else if(d(n))t=new M(n);else if(p(n))t=new I(n);else{if(!g(n))throw new Error("OSC Message found unknown argument type");t=new V(n)}e.add(t)}));return e.merge()}},{key:"unpack",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC Message expects an instance of type DataView.");var n=new I;n.unpack(t,e);var r=new I;if(r.unpack(t,n.offset),0===n.value.length||"/"!==n.value[0])throw new Error("OSC Message found malformed or missing address string");if(0===r.value.length&&","!==r.value[0])throw new Error("OSC Message found malformed or missing type string");for(var o,i,s=r.offset,a=[],u=1;u<r.value.length;u+=1){if("i"===(i=r.value[u]))o=new j;else if("f"===i)o=new M;else if("s"===i)o=new I;else{if("b"!==i)throw new Error("OSC Message found non-standard argument type");o=new V}s=o.unpack(t,s),a.push(o.value)}return this.offset=s,this.address=n.value,this.types=r.value,this.args=a,this.offset}}]),e}(),U="#bundle",R=function(){function e(){var n=this;t(this,e),this.offset=0,this.timetag=new T,this.bundleElements=[];for(var r=arguments.length,o=new Array(r),i=0;i<r;i++)o[i]=arguments[i];o.length>0&&(o[0]instanceof Date||l(o[0])?this.timetag=new T(o[0]):v(o[0])?(o[0].forEach((function(t){n.add(t)})),o.length>1&&(o[1]instanceof Date||l(o[0]))&&(this.timetag=new T(o[1]))):o.forEach((function(t){n.add(t)})))}return n(e,[{key:"timestamp",value:function(t){if(!l(t))throw new Error("OSC Bundle needs an integer for setting the timestamp");this.timetag=new T(t)}},{key:"add",value:function(t){if(!(t instanceof N||t instanceof e))throw new Error("OSC Bundle contains only Messages and Bundles");this.bundleElements.push(t)}},{key:"pack",value:function(){var t=new A;return t.add(new I(U)),this.timetag||(this.timetag=new T),t.add(this.timetag),this.bundleElements.forEach((function(e){t.add(new j(e.pack().byteLength)),t.add(e)})),t.merge()}},{key:"unpack",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC Bundle expects an instance of type DataView");var r=new I;if(r.unpack(t,n),r.value!==U)throw new Error("OSC Bundle does not contain a valid #bundle head");var o=new T,i=o.unpack(t,r.offset);for(this.bundleElements=[];i<t.byteLength;){var s=new I,a=new j;i=a.unpack(t,i);var u=void 0;s.unpack(t,i),i=(u=s.value===U?new e:new N).unpack(t,i),this.bundleElements.push(u)}return this.offset=i,this.timetag=o,this.offset}}]),e}(),W=function(){function e(n){if(t(this,e),n&&!(n instanceof N||n instanceof R))throw new Error("OSC Packet value has to be Message or Bundle");this.value=n,this.offset=0}return n(e,[{key:"pack",value:function(){if(!this.value)throw new Error("OSC Packet can not be encoded with empty body");return this.value.pack()}},{key:"unpack",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC Packet expects an instance of type DataView");if(t.byteLength%4!=0)throw new Error("OSC Packet byteLength has to be a multiple of four");var n,r=new I;return r.unpack(t,e),(n=r.value===U?new R:new N).unpack(t,e),this.offset=n.offset,this.value=n,this.offset}}]),e}(),q={discardLateMessages:!1},F=function(){function e(n){t(this,e),this.options=i(i({},q),n),this.addressHandlers=[],this.eventHandlers={open:[],error:[],close:[]},this.uuid=0}return n(e,[{key:"dispatch",value:function(t,e){var n=this;if(!(t instanceof W))throw new Error("OSC EventHander dispatch() accepts only arguments of type Packet");if(!t.value)throw new Error("OSC EventHander dispatch() can't read empty Packets");if(t.value instanceof R){var r=t.value;return r.bundleElements.forEach((function(t){if(t instanceof R){if(r.timetag.value.timestamp()<t.timetag.value.timestamp())throw new Error("OSC Bundle timestamp is older than the timestamp of enclosed Bundles");return n.dispatch(t)}if(t instanceof N){var o=t;return n.notify(o.address,o,r.timetag.value.timestamp(),e)}throw new Error("OSC EventHander dispatch() can't dispatch unknown Packet value")}))}if(t.value instanceof N){var o=t.value;return this.notify(o.address,o,0,e)}throw new Error("OSC EventHander dispatch() can't dispatch unknown Packet value")}},{key:"call",value:function(t,e,n){var r=!1;if(p(t)&&t in this.eventHandlers)return this.eventHandlers[t].forEach((function(t){t.callback(e,n),r=!0})),r;var o=Object.keys(this.addressHandlers),i=this.addressHandlers;return o.forEach((function(o){var s=!1,a=new RegExp(P(C(t)),"g");if(a.test(o)&&o.length===a.lastIndex&&(s=!0),!s){var u=new RegExp(P(C(o)),"g");u.test(t)&&t.length===u.lastIndex&&(s=!0)}s&&i[o].forEach((function(t){t.callback(e,n),r=!0}))})),r}},{key:"notify",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];if(0===e.length)throw new Error("OSC EventHandler can not be called without any argument");if(e[0]instanceof W)return this.dispatch(e[0],e[1]);if(e[0]instanceof R||e[0]instanceof N)return this.dispatch(new W(e[0]),e[1]);if(!p(e[0])){var r=new W;return r.unpack(O(e[0])),this.dispatch(r,e[1])}var o=e[0],i=null;e.length>1&&(i=e[1]);var s=null;if(e.length>2)if(l(e[2]))s=e[2];else{if(!(e[2]instanceof Date))throw new Error("OSC EventHandler timestamp has to be a number or Date");s=e[2].getTime()}var a=null;if(e.length>=3&&(a=e[3]),s){var u=Date.now();if(u>s&&!this.options.discardLateMessages)return this.call(o,i,a);var c=this;return setTimeout((function(){c.call(o,i,a)}),s-u),!0}return this.call(o,i,a)}},{key:"on",value:function(t,e){if(!p(t)&&!v(t))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!y(e))throw new Error("OSC EventHandler callback has to be a function");this.uuid+=1;var n={id:this.uuid,callback:e};if(p(t)&&t in this.eventHandlers)return this.eventHandlers[t].push(n),this.uuid;var r=C(t);return r in this.addressHandlers||(this.addressHandlers[r]=[]),this.addressHandlers[r].push(n),this.uuid}},{key:"off",value:function(t,e){if(!p(t)&&!v(t))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!l(e))throw new Error("OSC EventHandler subscription id has to be a number");var n,r;return p(t)&&t in this.eventHandlers?(n=t,r=this.eventHandlers):(n=C(t),r=this.addressHandlers),n in r&&r[n].some((function(t,o){return t.id===e&&(r[n].splice(o,1),!0)}))}}]),e}(),z="undefined"!=typeof __dirname?require("dgram"):void 0,G=-1,Z=0,J=1,K=2,Q=3,X={type:"udp4",open:{host:"localhost",port:41234,exclusive:!1},send:{host:"localhost",port:41235}};function Y(t,e){return i(i(i(i({},X),t),e),{},{open:i(i(i({},X.open),t.open),e.open),send:i(i(i({},X.send),t.send),e.send)})}var $=function(){function e(){var n=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t(this,e),!z)throw new Error("DatagramPlugin can not be used in browser context");this.options=Y({},r),this.socket=z.createSocket(this.options.type),this.socketStatus=G,this.socket.on("message",(function(t,e){n.notify(t,e)})),this.socket.on("error",(function(t){n.notify("error",t)})),this.notify=function(){}}return n(e,[{key:"registerNotify",value:function(t){this.notify=t}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=i(i({},this.options.open),e),r=n.port,o=n.exclusive;this.socketStatus=Z,this.socket.bind({address:n.host,port:r,exclusive:o},(function(){t.socketStatus=J,t.notify("open")}))}},{key:"close",value:function(){var t=this;this.socketStatus=K,this.socket.close((function(){t.socketStatus=Q,t.notify("close")}))}},{key:"send",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=i(i({},this.options.send),e),r=n.port,o=n.host;this.socket.send(Buffer.from(t),0,t.byteLength,r,o)}}]),e}(),tt="undefined"!=typeof __dirname?require("dgram"):void 0,et="undefined"!=typeof __dirname?require("isomorphic-ws").Server:void 0,nt=-1,rt=0,ot=1,it=2,st=3,at={udpServer:{host:"localhost",port:41234,exclusive:!1},udpClient:{host:"localhost",port:41235},wsServer:{host:"localhost",port:8080},receiver:"ws"};function ut(t,e){return i(i(i(i({},at),t),e),{},{udpServer:i(i(i({},at.udpServer),t.udpServer),e.udpServer),udpClient:i(i(i({},at.udpClient),t.udpClient),e.udpClient),wsServer:i(i(i({},at.wsServer),t.wsServer),e.wsServer)})}var ct=function(){function e(){var n=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t(this,e),!tt||!et)throw new Error("BridgePlugin can not be used in browser context");this.options=ut({},r),this.websocket=null,this.socket=tt.createSocket("udp4"),this.socketStatus=nt,this.socket.on("message",(function(t){n.send(t,{receiver:"ws"}),n.notify(t.buffer)})),this.socket.on("error",(function(t){n.notify("error",t)})),this.notify=function(){}}return n(e,[{key:"registerNotify",value:function(t){this.notify=t}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=ut(this.options,e);this.socketStatus=rt,this.socket.bind({address:n.udpServer.host,port:n.udpServer.port,exclusive:n.udpServer.exclusive},(function(){t.websocket=new et({host:n.wsServer.host,port:n.wsServer.port}),t.websocket.binaryType="arraybuffer",t.websocket.on("listening",(function(){t.socketStatus=ot,t.notify("open")})),t.websocket.on("error",(function(e){t.notify("error",e)})),t.websocket.on("connection",(function(e){e.on("message",(function(e,n){t.send(e,{receiver:"udp"}),t.notify(new Uint8Array(e),n)}))}))}))}},{key:"close",value:function(){var t=this;this.socketStatus=it,this.socket.close((function(){t.websocket.close((function(){t.socketStatus=st,t.notify("close")}))}))}},{key:"send",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=ut(this.options,e),r=n.receiver;if("udp"===r){var o=t instanceof Buffer?t:Buffer.from(t);this.socket.send(o,0,o.byteLength,n.udpClient.port,n.udpClient.host)}else{if("ws"!==r)throw new Error("BridgePlugin can not send message to unknown receiver");this.websocket.clients.forEach((function(e){e.send(t,{binary:!0})}))}}}]),e}(),ft="undefined"==typeof global?window:global,ht="undefined"==typeof __dirname?ft.WebSocket:require("isomorphic-ws"),lt=-1,dt=0,pt=1,vt=2,wt=3,yt={host:"localhost",port:8080,secure:!1},gt=function(){function e(n){if(t(this,e),!ht)throw new Error("WebsocketClientPlugin can't find a WebSocket class");this.options=i(i({},yt),n),this.socket=null,this.socketStatus=lt,this.notify=function(){}}return n(e,[{key:"registerNotify",value:function(t){this.notify=t}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=i(i({},this.options),e),r=n.port,o=n.host,s=n.secure;this.socket&&this.close();var a=s?"wss":"ws",u={address:o,family:a,port:r,size:0};this.socket=new ht("".concat(a,"://").concat(o,":").concat(r)),this.socket.binaryType="arraybuffer",this.socketStatus=dt,this.socket.onopen=function(){t.socketStatus=pt,t.notify("open")},this.socket.onclose=function(){t.socketStatus=wt,t.notify("close")},this.socket.onerror=function(e){t.notify("error",e)},this.socket.onmessage=function(e){t.notify(e.data,u)}}},{key:"close",value:function(){this.socketStatus=vt,this.socket.close()}},{key:"send",value:function(t){this.socket.send(t)}}]),e}(),kt="undefined"!=typeof __dirname?require("isomorphic-ws").Server:void 0,bt=-1,mt=0,St=1,Ot=2,Et=3,Ct={host:"localhost",port:8080},Pt=function(){function e(n){if(t(this,e),!kt)throw new Error("WebsocketServerPlugin can not be used in browser context");this.options=i(i({},Ct),n),this.socket=null,this.socketStatus=bt,this.notify=function(){}}return n(e,[{key:"registerNotify",value:function(t){this.notify=t}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=i(i({},this.options),e),r=n.port,o=n.host,s={address:o,family:"wsserver",port:r,size:0};this.socket&&this.close(),this.socket=new kt({host:o,port:r}),this.socket.binaryType="arraybuffer",this.socketStatus=mt,this.socket.on("listening",(function(){t.socketStatus=St,t.notify("open")})),this.socket.on("error",(function(e){t.notify("error",e)})),this.socket.on("connection",(function(e){e.on("message",(function(e){t.notify(new Uint8Array(e),s)}))}))}},{key:"close",value:function(){var t=this;this.socketStatus=Ot,this.socket.close((function(){t.socketStatus=Et,t.notify("close")}))}},{key:"send",value:function(t){this.socket.clients.forEach((function(e){e.send(t,{binary:!0})}))}}]),e}(),At={discardLateMessages:!1,plugin:new gt},Dt=function(){function e(n){if(t(this,e),n&&!w(n))throw new Error("OSC options argument has to be an object.");this.options=i(i({},At),n),this.eventHandler=new F({discardLateMessages:this.options.discardLateMessages});var r=this.eventHandler;this.options.plugin&&this.options.plugin.registerNotify&&this.options.plugin.registerNotify((function(){return r.notify.apply(r,arguments)}))}return n(e,[{key:"on",value:function(t,e){if(!p(t)||!y(e))throw new Error("OSC on() needs event- or address string and callback function");return this.eventHandler.on(t,e)}},{key:"off",value:function(t,e){if(!p(t)||!l(e))throw new Error("OSC off() needs string and number (subscriptionId) to unsubscribe");return this.eventHandler.off(t,e)}},{key:"open",value:function(t){if(t&&!w(t))throw new Error("OSC open() options argument needs to be an object");if(!this.options.plugin||!y(this.options.plugin.open))throw new Error("OSC Plugin API #open is not implemented!");return this.options.plugin.open(t)}},{key:"status",value:function(){if(!this.options.plugin||!y(this.options.plugin.status))throw new Error("OSC Plugin API #status is not implemented!");return this.options.plugin.status()}},{key:"close",value:function(){if(!this.options.plugin||!y(this.options.plugin.close))throw new Error("OSC Plugin API #close is not implemented!");return this.options.plugin.close()}},{key:"send",value:function(t,e){if(!this.options.plugin||!y(this.options.plugin.send))throw new Error("OSC Plugin API #send is not implemented!");if(!(t instanceof N||t instanceof R||t instanceof W))throw new Error("OSC send() needs Messages, Bundles or Packets");if(e&&!w(e))throw new Error("OSC send() options argument has to be an object");return this.options.plugin.send(t.pack(),e)}}]),e}();return Dt.STATUS={IS_NOT_INITIALIZED:-1,IS_CONNECTING:0,IS_OPEN:1,IS_CLOSING:2,IS_CLOSED:3},Dt.Packet=W,Dt.Bundle=R,Dt.Message=N,Dt.DatagramPlugin=$,Dt.WebsocketClientPlugin=gt,Dt.WebsocketServerPlugin=Pt,Dt.BridgePlugin=ct,Dt}));
  //# sourceMappingURL=osc.min.js.map
  