Scheduler:SchedulerType = (function (): SchedulerType {const global: Window | NodeJS.Global = Function("return this;")();// IE 9 & 10 are currently supported by StreamLinkJS. This script does not support// either version.// IE 9: Worker is not supportedconst isWorkerUnavailable = !("Worker" in global);// IE 10: Worker support is available. However, a SecurityError (5502) is erroneously// thrown when instantiating a Worker instance with an object url that has been// created with a Blob.// IE 11: Worker support is available, but performance is unacceptable at our throughput// rates.const unsupportedBrowser =//@ts-expect-error: Property 'navigator' does not exist on type 'Global'.global.navigator &&//@ts-expect-error: Property 'navigator' does not exist on type 'Global'.new RegExp("(MSIE |Trident/)").test(global.navigator.userAgent);// This native timer fallback code can be deleted once IE 9 & 10 are no longer// supported by StreamLinkJSif (isWorkerUnavailable || unsupportedBrowser) {return {setTimeout: (func, delay) => global.setTimeout(func, delay),clearTimeout: (id) => global.clearTimeout(id),setInterval: (func, delay) => global.setInterval(func, delay),clearInterval: (id) => global.clearInterval(id),_clearAll: () => {},_getScheduledIds: () => [],};}function _initialiseWorker() {var id = 0;var funcs = new Map();var worker;(function () {function timerImpl() {/* global self *///@ts-expect-error: Property '_intervalMap' does not exist on type 'Window & typeof globalThis'.self._intervalMap = new Map();//@ts-expect-error: Property '_timeoutMap' does not exist on type 'Window & typeof globalThis'.self._timeoutMap = new Map();self.addEventListener("message",function (evt) {var id = evt.data.id;var delay = evt.data.delay;if (evt.data.reset === true) {//@ts-expect-error: Property '_reset' does not exist on type 'Window & typeof globalThis'.self._reset();return;}if (typeof id === "undefined") {return;}if (typeof delay !== "undefined") {//@ts-expect-error: Property 'initialiseTimer' does not exist on type 'Window & typeof globalThis'.self.initialiseTimer(id, delay, evt.data.interval);} else if (evt.data.clear === true) {//@ts-expect-error: Property 'cancelTimer' does not exist on type 'Window & typeof globalThis'.self.cancelTimer(id, evt.data.interval);}},false);//@ts-expect-error: Property 'initialiseTimer' does not exist on type 'Window & typeof globalThis'.self.initialiseTimer = function (id, delay, isInterval) {if (isInterval === true) {//@ts-expect-error: Property '_intervalMap' does not exist on type 'Window & typeof globalThis'.self._intervalMap.set(id,setInterval(function () {//@ts-expect-error: Property 'postMessage' does not exist on type 'Window & typeof globalThis'.self.postMessage({ id: id, interval: true });}, delay));} else {if (delay === 0) {//@ts-expect-error: Property 'postMessage' does not exist on type 'Window & typeof globalThis'.self.postMessage({ id: id, interval: false });return;}//@ts-expect-error: Property '_timeoutMap' does not exist on type 'Window & typeof globalThis'.self._timeoutMap.set(id,setTimeout(function () {//@ts-expect-error: Property 'postMessage' does not exist on type 'Window & typeof globalThis'.self.postMessage({ id: id, interval: false });//@ts-expect-error: Property '_timeoutMap' does not exist on type 'Window & typeof globalThis'.self._timeoutMap.delete(id);}, delay));}};//@ts-expect-error: Property 'cancelTimer' does not exist on type 'Window & typeof globalThis'.self.cancelTimer = function (id, isInterval) {if (isInterval === true) {//@ts-expect-error: Property '_intervalMap' does not exist on type 'Window & typeof globalThis'.clearInterval(self._intervalMap.get(id));//@ts-expect-error: Property '_intervalMap' does not exist on type 'Window & typeof globalThis'.self._intervalMap.delete(id);} else {//@ts-expect-error: Property '_intervalMap' does not exist on type 'Window & typeof globalThis'.clearTimeout(self._timeoutMap.get(id));//@ts-expect-error: Property '_intervalMap' does not exist on type 'Window & typeof globalThis'.self._timeoutMap.delete(id);}//@ts-expect-error: Property 'postMessage' does not exist on type 'Window & typeof globalThis'.self.postMessage({ id: id, cleared: true, interval: isInterval });};//@ts-expect-error: Property '_reset' does not exist on type 'Window & typeof globalThis'.self._reset = function () {//@ts-expect-error: Property '_intervalMap' does not exist on type 'Window & typeof globalThis'.self._intervalMap.forEach(function (intervalId, key /*, idx, arr*/) {this.cancelTimer(intervalId, true);}, self);//@ts-expect-error: Property '_timeoutMap' does not exist on type 'Window & typeof globalThis'.self._timeoutMap.forEach(function (timeoutId, key /*, idx, arr*/) {this.cancelTimer(timeoutId, false);}, self);};}let impl: string | Blob = timerImpl.toString();impl = new Blob([impl.substring(impl.indexOf("{") + 1, impl.lastIndexOf("}"))],{ type: "text/javascript" });//@ts-expect-error: Property 'URL' does not exist on type 'Window'.worker = new Worker(global.URL.createObjectURL(impl));//@ts-expect-error: Property 'URL' does not exist on type 'Window'.global.URL.revokeObjectURL(impl);})();worker.addEventListener("message",function (evt) {var data = evt.data;var id = data.id;var func = funcs.get(id);if (data.cleared === true) {funcs.delete(id);return;}if (typeof func === "function") {if (data.interval !== true) {funcs.delete(id);}func();}},false);function _getNextId() {return (id += 1);}function _clearScheduled(id, isInterval) {funcs.delete(id);worker.postMessage({ id: id, clear: true, interval: isInterval });}function _setScheduled(func, delay, isInterval) {var id = _getNextId();funcs.set(id, func);worker.postMessage({ id: id, delay: delay, interval: isInterval });return id;}return {setTimeout: function (func, delay) {return _setScheduled(func, delay, false);},clearTimeout: function (id) {_clearScheduled(id, false);},setInterval: function (func, delay) {return _setScheduled(func, delay, true);},clearInterval: function (id) {_clearScheduled(id, true);},_clearAll: function () {worker.postMessage({ reset: true });funcs.clear();id = 0;},_getScheduledIds: function () {var keys = [];funcs.forEach(function (func, key) {keys.push(key);});return keys;},};}return _initialiseWorker();})()