UNPKG

@hahnpro/ms-speech-sdk

Version:
1 lines 3.79 kB
{"version":3,"sources":["src/common/EventSource.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,qBAAa,WAAW,CAAC,MAAM,SAAS,aAAa,CAAE,YAAW,YAAY,CAAC,MAAM,CAAC;IAClF,OAAO,CAAC,kBAAkB,CAAkD;IAC5E,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,mBAAmB,CAA0B;gBAElC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC;IAIhD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAwB5B,MAAM,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW;IAW7D,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,WAAW;IAI7D,qBAAqB,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,WAAW;IAQpE,UAAU,IAAI,OAAO;IAIrB,OAAO,IAAI,IAAI;IAKtB,IAAW,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAE/C;CACJ","file":"EventSource.d.ts","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\n\nimport { ObjectDisposedError } from \"./Error.js\";\nimport { createNoDashGuid } from \"./Guid.js\";\nimport { IDetachable } from \"./IDetachable.js\";\nimport { IStringDictionary } from \"./IDictionary.js\";\nimport { IEventListener } from \"./IEventListener.js\";\nimport { IEventSource } from \"./IEventSource.js\";\nimport { PlatformEvent } from \"./PlatformEvent.js\";\n\nexport class EventSource<TEvent extends PlatformEvent> implements IEventSource<TEvent> {\n private privEventListeners: IStringDictionary<(event: TEvent) => void> = {};\n private privMetadata: IStringDictionary<string>;\n private privIsDisposed: boolean = false;\n private privConsoleListener: IDetachable = undefined;\n\n public constructor(metadata?: IStringDictionary<string>) {\n this.privMetadata = metadata;\n }\n\n public onEvent(event: TEvent): void {\n if (this.isDisposed()) {\n throw (new ObjectDisposedError(\"EventSource\"));\n }\n\n if (this.metadata) {\n for (const paramName in this.metadata) {\n if (paramName) {\n if (event.metadata) {\n if (!event.metadata[paramName]) {\n event.metadata[paramName] = this.metadata[paramName];\n }\n }\n }\n }\n }\n\n for (const eventId in this.privEventListeners) {\n if (eventId && this.privEventListeners[eventId]) {\n this.privEventListeners[eventId](event);\n }\n }\n }\n\n public attach(onEventCallback: (event: TEvent) => void): IDetachable {\n const id = createNoDashGuid();\n this.privEventListeners[id] = onEventCallback;\n return {\n detach: (): Promise<void> => {\n delete this.privEventListeners[id];\n return Promise.resolve();\n },\n };\n }\n\n public attachListener(listener: IEventListener<TEvent>): IDetachable {\n return this.attach((e: TEvent): void => listener.onEvent(e));\n }\n\n public attachConsoleListener(listener: IEventListener<TEvent>): IDetachable {\n if (!!this.privConsoleListener) {\n void this.privConsoleListener.detach(); // Detach implementation for eventListeners is synchronous\n }\n this.privConsoleListener = this.attach((e: TEvent): void => listener.onEvent(e));\n return this.privConsoleListener;\n }\n\n public isDisposed(): boolean {\n return this.privIsDisposed;\n }\n\n public dispose(): void {\n this.privEventListeners = null;\n this.privIsDisposed = true;\n }\n\n public get metadata(): IStringDictionary<string> {\n return this.privMetadata;\n }\n}\n"]}