@voice-ping/cognitive-services-speech
Version:
VoicePing Cognitive Services Speech SDK for JavaScript forked from Microsoft
106 lines (104 loc) • 8.24 kB
JavaScript
"use strict";
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
Object.defineProperty(exports, "__esModule", { value: true });
var Timeout = /** @class */ (function () {
function Timeout() {
}
Timeout.workerTimers = null;
Timeout.clearTimeout = function (timerId) { return Timeout.timers().clearTimeout(timerId); };
Timeout.setTimeout = function (func, delay) { return Timeout.timers().setTimeout(func, delay); };
Timeout.load = function (url) {
// Prefilling the Maps with a function indexed by zero is necessary to be compliant with the specification.
var scheduledTimeoutFunctions = new Map([[0, function () { }]]); // tslint:disable-line no-empty
var unhandledRequests = new Map();
var worker = new Worker(url);
worker.addEventListener("message", function (_a) {
var data = _a.data;
if (Timeout.isCallNotification(data)) {
var timerId = data.params.timerId;
var idOrFunc = scheduledTimeoutFunctions.get(timerId);
if (typeof idOrFunc === "number") {
var unhandledTimerId = unhandledRequests.get(idOrFunc);
if (unhandledTimerId === undefined ||
unhandledTimerId !== timerId) {
throw new Error("The timer is in an undefined state.");
}
}
else if (typeof idOrFunc !== "undefined") {
idOrFunc();
// A timeout can be safely deleted because it is only called once.
scheduledTimeoutFunctions.delete(timerId);
}
else {
throw new Error("The timer is in an undefined state.");
}
}
else if (Timeout.isClearResponse(data)) {
var id = data.id;
var unhandledTimerId = unhandledRequests.get(id);
if (unhandledTimerId === undefined) {
throw new Error("The timer is in an undefined state.");
}
unhandledRequests.delete(id);
scheduledTimeoutFunctions.delete(unhandledTimerId);
}
else {
var message = data.error.message;
throw new Error(message);
}
});
var clearTimeout = function (timerId) {
var id = Math.random();
unhandledRequests.set(id, timerId);
scheduledTimeoutFunctions.set(timerId, id);
worker.postMessage({
id: id,
method: "clear",
params: { timerId: timerId }
});
};
var setTimeout = function (func, delay) {
var timerId = Math.random();
scheduledTimeoutFunctions.set(timerId, func);
worker.postMessage({
id: null,
method: "set",
params: {
delay: delay,
now: performance.now(),
timerId: timerId
}
});
return timerId;
};
return {
clearTimeout: clearTimeout,
setTimeout: setTimeout
};
};
Timeout.loadWorkerTimers = function () {
var worker = "!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=14)}([function(e,t,n){\"use strict\";n.d(t,\"a\",(function(){return i})),n.d(t,\"b\",(function(){return u})),n.d(t,\"c\",(function(){return a})),n.d(t,\"d\",(function(){return d}));const r=new Map,o=new Map,i=e=>{const t=r.get(e);if(void 0===t)throw new Error('There is no interval scheduled with the given id \"'.concat(e,'\".'));clearTimeout(t),r.delete(e)},u=e=>{const t=o.get(e);if(void 0===t)throw new Error('There is no timeout scheduled with the given id \"'.concat(e,'\".'));clearTimeout(t),o.delete(e)},f=(e,t)=>{let n,r;if(\"performance\"in self){const o=performance.now();n=o,r=e-Math.max(0,o-t)}else n=Date.now(),r=e;return{expected:n+r,remainingDelay:r}},c=(e,t,n,r)=>{const o=\"performance\"in self?performance.now():Date.now();o>n?postMessage({id:null,method:\"call\",params:{timerId:t}}):e.set(t,setTimeout(c,n-o,e,t,n))},a=(e,t,n)=>{const{expected:o,remainingDelay:i}=f(e,n);r.set(t,setTimeout(c,i,r,t,o))},d=(e,t,n)=>{const{expected:r,remainingDelay:i}=f(e,n);o.set(t,setTimeout(c,i,o,t,r))}},function(e,t,n){\"use strict\";n.r(t);var r=n(2);for(var o in r)\"default\"!==o&&function(e){n.d(t,e,(function(){return r[e]}))}(o);var i=n(3);for(var o in i)\"default\"!==o&&function(e){n.d(t,e,(function(){return i[e]}))}(o);var u=n(4);for(var o in u)\"default\"!==o&&function(e){n.d(t,e,(function(){return u[e]}))}(o);var f=n(5);for(var o in f)\"default\"!==o&&function(e){n.d(t,e,(function(){return f[e]}))}(o);var c=n(6);for(var o in c)\"default\"!==o&&function(e){n.d(t,e,(function(){return c[e]}))}(o);var a=n(7);for(var o in a)\"default\"!==o&&function(e){n.d(t,e,(function(){return a[e]}))}(o);var d=n(8);for(var o in d)\"default\"!==o&&function(e){n.d(t,e,(function(){return d[e]}))}(o);var s=n(9);for(var o in s)\"default\"!==o&&function(e){n.d(t,e,(function(){return s[e]}))}(o)},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t,n){\"use strict\";n.r(t);var r=n(11);for(var o in r)\"default\"!==o&&function(e){n.d(t,e,(function(){return r[e]}))}(o);var i=n(12);for(var o in i)\"default\"!==o&&function(e){n.d(t,e,(function(){return i[e]}))}(o);var u=n(13);for(var o in u)\"default\"!==o&&function(e){n.d(t,e,(function(){return u[e]}))}(o)},function(e,t){},function(e,t){},function(e,t){},function(e,t,n){\"use strict\";n.r(t);var r=n(0),o=n(1);for(var i in o)\"default\"!==i&&function(e){n.d(t,e,(function(){return o[e]}))}(i);var u=n(10);for(var i in u)\"default\"!==i&&function(e){n.d(t,e,(function(){return u[e]}))}(i);addEventListener(\"message\",({data:e})=>{try{if(\"clear\"===e.method){const{id:t,params:{timerId:n}}=e;Object(r.b)(n),postMessage({error:null,id:t})}else{if(\"set\"!==e.method)throw new Error('The given method \"'.concat(e.method,'\" is not supported'));{const{params:{delay:t,now:n,timerId:o}}=e;Object(r.d)(t,o,n)}}}catch(t){postMessage({error:{message:t.message},id:e.id,result:null})}})}]);"; // tslint:disable-line:max-line-length
return function () {
if (Timeout.workerTimers !== null) {
return Timeout.workerTimers;
}
var blob = new Blob([worker], { type: "application/javascript; charset=utf-8" });
var url = URL.createObjectURL(blob);
Timeout.workerTimers = Timeout.load(url);
// Edge doesn't like the URL to be revoked directly.
Timeout.workerTimers.setTimeout(function () { return URL.revokeObjectURL(url); }, 0);
return Timeout.workerTimers;
};
};
Timeout.timers = Timeout.loadWorkerTimers();
Timeout.isCallNotification = function (message) {
return message.method !== undefined && message.method === "call";
};
Timeout.isClearResponse = function (message) {
return message.error === null && typeof message.id === "number";
};
return Timeout;
}());
exports.Timeout = Timeout;
//# sourceMappingURL=Timeout.js.map