@hahnpro/ms-speech-sdk
Version:
Microsoft Cognitive Services Speech SDK for JavaScript
1 lines • 9.72 kB
Source Map (JSON)
{"version":3,"sources":["src/common/Promise.ts"],"names":[],"mappings":"AAKA,oBAAY,YAAY;IACpB,IAAI,IAAA;IACJ,QAAQ,IAAA;IACR,QAAQ,IAAA;CACX;AAED,MAAM,WAAW,SAAS,CAAC,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAE7B,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAEjC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;CACvC;AAED,qBAAa,aAAa,CAAC,CAAC;IACxB,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC;IACnC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;gBAEL,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAgBxE,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,MAAM,IAAI,CAAC,CAErB;IAEM,YAAY,QAAO,IAAI,CAI5B;CACL;AAED,qBAAa,wBAAwB,CAAC,CAAC;IAEnC,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,cAAc,CAA0B;IAEzC,SAAS,WAAY,CAAC,KAAG,IAAI,CAElC;IAEK,QAAQ,UAAW,MAAM,KAAG,IAAI,CAErC;IAEK,EAAE,yBAA0B,CAAC,KAAK,IAAI,sBAAsB,MAAM,KAAK,IAAI,KAAG,IAAI,CAGvF;CACL;AAED,qBAAa,QAAQ,CAAC,CAAC,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,UAAU,CAAyB;;IAU3C,IAAW,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAE/B;IAEM,OAAO,WAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,KAAG,SAAS,CAAC,CAAC,CAGpD;IAEK,MAAM,UAAW,MAAM,KAAG,SAAS,CAAC,CAAC,CAG1C;CACL;AAED,qBAAa,IAAI,CAAC,CAAC;IACf,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,uBAAuB,CAAqC;IAEpE,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,iBAAiB,CAA+B;;IAOxD,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,IAAW,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,CAEpC;IAEM,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI;IAexB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAe3B,EAAE,CACL,eAAe,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,EACpC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAqBjD,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,cAAc;CAIzB;AAGD,wBAAgB,yBAAyB,CAAC,CAAC,EACvC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EACvB,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAgCvC","file":"Promise.d.ts","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\n\n/* eslint-disable max-classes-per-file, @typescript-eslint/typedef */\n\nexport enum PromiseState {\n None,\n Resolved,\n Rejected,\n}\n\nexport interface IDeferred<T> {\n readonly promise: Promise<T>;\n\n resolve(result: T): IDeferred<T>;\n\n reject(error: string): IDeferred<T>;\n}\n\nexport class PromiseResult<T> {\n protected privIsCompleted: boolean;\n protected privIsError: boolean;\n protected privError: string;\n protected privResult: T;\n\n public constructor(promiseResultEventSource: PromiseResultEventSource<T>) {\n promiseResultEventSource.on((result: T): void => {\n if (!this.privIsCompleted) {\n this.privIsCompleted = true;\n this.privIsError = false;\n this.privResult = result;\n }\n }, (error: string): void => {\n if (!this.privIsCompleted) {\n this.privIsCompleted = true;\n this.privIsError = true;\n this.privError = error;\n }\n });\n }\n\n public get isCompleted(): boolean {\n return this.privIsCompleted;\n }\n\n public get isError(): boolean {\n return this.privIsError;\n }\n\n public get error(): string {\n return this.privError;\n }\n\n public get result(): T {\n return this.privResult;\n }\n\n public throwIfError = (): void => {\n if (this.isError) {\n throw this.error;\n }\n };\n}\n\nexport class PromiseResultEventSource<T> {\n\n private privOnSetResult: (result: T) => void;\n private privOnSetError: (error: string) => void;\n\n public setResult = (result: T): void => {\n this.privOnSetResult(result);\n };\n\n public setError = (error: string): void => {\n this.privOnSetError(error);\n };\n\n public on = (onSetResult: (result: T) => void, onSetError: (error: string) => void): void => {\n this.privOnSetResult = onSetResult;\n this.privOnSetError = onSetError;\n };\n}\n\nexport class Deferred<T> implements IDeferred<T> {\n private privPromise: Promise<T>;\n private privResolve: (value?: T | PromiseLike<T>) => void;\n private privReject: (reason?: any) => void;\n\n public constructor() {\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n this.privPromise = new Promise<T>((resolve: (value: T) => void, reject: (reason: any) => void) => {\n this.privResolve = resolve;\n this.privReject = reject;\n });\n }\n\n public get promise(): Promise<T> {\n return this.privPromise;\n }\n\n public resolve = (result: T | Promise<T>): Deferred<T> => {\n this.privResolve(result);\n return this;\n };\n\n public reject = (error: string): Deferred<T> => {\n this.privReject(error);\n return this;\n };\n}\n\nexport class Sink<T> {\n private privState: PromiseState = PromiseState.None;\n private privPromiseResult: PromiseResult<T> = null;\n private privPromiseResultEvents: PromiseResultEventSource<T> = null;\n\n private privSuccessHandlers: ((result: T) => void)[] = [];\n private privErrorHandlers: ((e: string) => void)[] = [];\n\n public constructor() {\n this.privPromiseResultEvents = new PromiseResultEventSource();\n this.privPromiseResult = new PromiseResult(this.privPromiseResultEvents);\n }\n\n public get state(): PromiseState {\n return this.privState;\n }\n\n public get result(): PromiseResult<T> {\n return this.privPromiseResult;\n }\n\n public resolve(result: T): void {\n if (this.privState !== PromiseState.None) {\n throw new Error(\"'Cannot resolve a completed promise'\");\n }\n\n this.privState = PromiseState.Resolved;\n this.privPromiseResultEvents.setResult(result);\n\n for (let i = 0; i < this.privSuccessHandlers.length; i++) {\n this.executeSuccessCallback(result, this.privSuccessHandlers[i], this.privErrorHandlers[i]);\n }\n\n this.detachHandlers();\n }\n\n public reject(error: string): void {\n if (this.privState !== PromiseState.None) {\n throw new Error(\"'Cannot reject a completed promise'\");\n }\n\n this.privState = PromiseState.Rejected;\n this.privPromiseResultEvents.setError(error);\n\n for (const errorHandler of this.privErrorHandlers) {\n this.executeErrorCallback(error, errorHandler);\n }\n\n this.detachHandlers();\n }\n\n public on(\n successCallback: (result: T) => void,\n errorCallback: (error: string) => void): void {\n\n if (successCallback == null) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n successCallback = (): void => { };\n }\n\n if (this.privState === PromiseState.None) {\n this.privSuccessHandlers.push(successCallback);\n this.privErrorHandlers.push(errorCallback);\n } else {\n if (this.privState === PromiseState.Resolved) {\n this.executeSuccessCallback(this.privPromiseResult.result, successCallback, errorCallback);\n } else if (this.privState === PromiseState.Rejected) {\n this.executeErrorCallback(this.privPromiseResult.error, errorCallback);\n }\n\n this.detachHandlers();\n }\n }\n\n private executeSuccessCallback(result: T, successCallback: (result: T) => void, errorCallback: (error: string) => void): void {\n try {\n successCallback(result);\n } catch (e) {\n this.executeErrorCallback(`'Unhandled callback error: ${e as string}'`, errorCallback);\n }\n }\n\n private executeErrorCallback(error: string, errorCallback: (error: string) => void): void {\n if (errorCallback) {\n try {\n errorCallback(error);\n } catch (e) {\n throw new Error(`'Unhandled callback error: ${e as string}. InnerError: ${error}'`);\n }\n } else {\n throw new Error(`'Unhandled error: ${error}'`);\n }\n }\n\n private detachHandlers(): void {\n this.privErrorHandlers = [];\n this.privSuccessHandlers = [];\n }\n}\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nexport function marshalPromiseToCallbacks<T>(\n promise: Promise<T>,\n cb?: (value: T) => void,\n err?: (error: string) => void): void {\n promise.then((val: T): void => {\n try {\n if (!!cb) {\n cb(val);\n }\n } catch (error) {\n if (!!err) {\n try {\n if (error instanceof Error) {\n const typedError: Error = error ;\n err(typedError.name + \": \" + typedError.message);\n } else {\n err(error as string);\n }\n // eslint-disable-next-line no-empty\n } catch (error) { }\n }\n }\n }, (error: any): void => {\n if (!!err) {\n try {\n if (error instanceof Error) {\n const typedError: Error = error;\n err(typedError.name + \": \" + typedError.message);\n } else {\n err(error as string);\n }\n // eslint-disable-next-line no-empty\n } catch (error) { }\n }\n });\n}\n"]}