1 |
- {"ast":null,"code":"\"use strict\";\n\n// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\nvar _asyncToGenerator = require(\"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/asyncToGenerator.js\").default;\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WebsocketMessageAdapter = void 0;\nconst net = __importStar(require(\"net\"));\nconst tls = __importStar(require(\"tls\"));\nconst agent_base_1 = __importDefault(require(\"agent-base\"));\nconst https_proxy_agent_1 = __importDefault(require(\"https-proxy-agent\"));\nconst ws_1 = __importDefault(require(\"ws\"));\nconst HeaderNames_js_1 = require(\"../common.speech/HeaderNames.js\");\nconst Exports_js_1 = require(\"../common/Exports.js\");\nclass WebsocketMessageAdapter {\n constructor(uri, connectionId, messageFormatter, proxyInfo, headers, enableCompression) {\n if (!uri) {\n throw new Exports_js_1.ArgumentNullError(\"uri\");\n }\n if (!messageFormatter) {\n throw new Exports_js_1.ArgumentNullError(\"messageFormatter\");\n }\n this.proxyInfo = proxyInfo;\n this.privConnectionEvents = new Exports_js_1.EventSource();\n this.privConnectionId = connectionId;\n this.privMessageFormatter = messageFormatter;\n this.privConnectionState = Exports_js_1.ConnectionState.None;\n this.privUri = uri;\n this.privHeaders = headers;\n this.privEnableCompression = enableCompression;\n // Add the connection ID to the headers\n this.privHeaders[HeaderNames_js_1.HeaderNames.ConnectionId] = this.privConnectionId;\n this.privLastErrorReceived = \"\";\n }\n get state() {\n return this.privConnectionState;\n }\n open() {\n if (this.privConnectionState === Exports_js_1.ConnectionState.Disconnected) {\n return Promise.reject(`Cannot open a connection that is in ${this.privConnectionState} state`);\n }\n if (this.privConnectionEstablishDeferral) {\n return this.privConnectionEstablishDeferral.promise;\n }\n this.privConnectionEstablishDeferral = new Exports_js_1.Deferred();\n this.privCertificateValidatedDeferral = new Exports_js_1.Deferred();\n this.privConnectionState = Exports_js_1.ConnectionState.Connecting;\n try {\n if (typeof WebSocket !== \"undefined\" && !WebsocketMessageAdapter.forceNpmWebSocket) {\n // Browser handles cert checks.\n this.privCertificateValidatedDeferral.resolve();\n this.privWebsocketClient = new WebSocket(this.privUri);\n } else {\n var _protocol, _protocol2;\n const options = {\n headers: this.privHeaders,\n perMessageDeflate: this.privEnableCompression\n };\n // The ocsp library will handle validation for us and fail the connection if needed.\n this.privCertificateValidatedDeferral.resolve();\n options.agent = this.getAgent();\n // Workaround for https://github.com/microsoft/cognitive-services-speech-sdk-js/issues/465\n // Which is root caused by https://github.com/TooTallNate/node-agent-base/issues/61\n const uri = new URL(this.privUri);\n let protocol = uri.protocol;\n if (((_protocol = protocol) === null || _protocol === void 0 ? void 0 : _protocol.toLocaleLowerCase()) === \"wss:\") {\n protocol = \"https:\";\n } else if (((_protocol2 = protocol) === null || _protocol2 === void 0 ? void 0 : _protocol2.toLocaleLowerCase()) === \"ws:\") {\n protocol = \"http:\";\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n options.agent.protocol = protocol;\n this.privWebsocketClient = new ws_1.default(this.privUri, options);\n }\n this.privWebsocketClient.binaryType = \"arraybuffer\";\n this.privReceivingMessageQueue = new Exports_js_1.Queue();\n this.privDisconnectDeferral = new Exports_js_1.Deferred();\n this.privSendMessageQueue = new Exports_js_1.Queue();\n this.processSendQueue().catch(reason => {\n Exports_js_1.Events.instance.onEvent(new Exports_js_1.BackgroundEvent(reason));\n });\n } catch (error) {\n this.privConnectionEstablishDeferral.resolve(new Exports_js_1.ConnectionOpenResponse(500, error));\n return this.privConnectionEstablishDeferral.promise;\n }\n this.onEvent(new Exports_js_1.ConnectionStartEvent(this.privConnectionId, this.privUri));\n this.privWebsocketClient.onopen = () => {\n this.privCertificateValidatedDeferral.promise.then(() => {\n this.privConnectionState = Exports_js_1.ConnectionState.Connected;\n this.onEvent(new Exports_js_1.ConnectionEstablishedEvent(this.privConnectionId));\n this.privConnectionEstablishDeferral.resolve(new Exports_js_1.ConnectionOpenResponse(200, \"\"));\n }, error => {\n this.privConnectionEstablishDeferral.reject(error);\n });\n };\n this.privWebsocketClient.onerror = e => {\n this.onEvent(new Exports_js_1.ConnectionErrorEvent(this.privConnectionId, e.message, e.type));\n this.privLastErrorReceived = e.message;\n };\n this.privWebsocketClient.onclose = e => {\n if (this.privConnectionState === Exports_js_1.ConnectionState.Connecting) {\n this.privConnectionState = Exports_js_1.ConnectionState.Disconnected;\n // this.onEvent(new ConnectionEstablishErrorEvent(this.connectionId, e.code, e.reason));\n this.privConnectionEstablishDeferral.resolve(new Exports_js_1.ConnectionOpenResponse(e.code, e.reason + \" \" + this.privLastErrorReceived));\n } else {\n this.privConnectionState = Exports_js_1.ConnectionState.Disconnected;\n this.privWebsocketClient = null;\n this.onEvent(new Exports_js_1.ConnectionClosedEvent(this.privConnectionId, e.code, e.reason));\n }\n this.onClose(e.code, e.reason).catch(reason => {\n Exports_js_1.Events.instance.onEvent(new Exports_js_1.BackgroundEvent(reason));\n });\n };\n this.privWebsocketClient.onmessage = e => {\n const networkReceivedTime = new Date().toISOString();\n if (this.privConnectionState === Exports_js_1.ConnectionState.Connected) {\n const deferred = new Exports_js_1.Deferred();\n // let id = ++this.idCounter;\n this.privReceivingMessageQueue.enqueueFromPromise(deferred.promise);\n if (e.data instanceof ArrayBuffer) {\n const rawMessage = new Exports_js_1.RawWebsocketMessage(Exports_js_1.MessageType.Binary, e.data);\n this.privMessageFormatter.toConnectionMessage(rawMessage).then(connectionMessage => {\n this.onEvent(new Exports_js_1.ConnectionMessageReceivedEvent(this.privConnectionId, networkReceivedTime, connectionMessage));\n deferred.resolve(connectionMessage);\n }, error => {\n // TODO: Events for these ?\n deferred.reject(`Invalid binary message format. Error: ${error}`);\n });\n } else {\n const rawMessage = new Exports_js_1.RawWebsocketMessage(Exports_js_1.MessageType.Text, e.data);\n this.privMessageFormatter.toConnectionMessage(rawMessage).then(connectionMessage => {\n this.onEvent(new Exports_js_1.ConnectionMessageReceivedEvent(this.privConnectionId, networkReceivedTime, connectionMessage));\n deferred.resolve(connectionMessage);\n }, error => {\n // TODO: Events for these ?\n deferred.reject(`Invalid text message format. Error: ${error}`);\n });\n }\n }\n };\n return this.privConnectionEstablishDeferral.promise;\n }\n send(message) {\n if (this.privConnectionState !== Exports_js_1.ConnectionState.Connected) {\n return Promise.reject(`Cannot send on connection that is in ${Exports_js_1.ConnectionState[this.privConnectionState]} state`);\n }\n const messageSendStatusDeferral = new Exports_js_1.Deferred();\n const messageSendDeferral = new Exports_js_1.Deferred();\n this.privSendMessageQueue.enqueueFromPromise(messageSendDeferral.promise);\n this.privMessageFormatter.fromConnectionMessage(message).then(rawMessage => {\n messageSendDeferral.resolve({\n Message: message,\n RawWebsocketMessage: rawMessage,\n sendStatusDeferral: messageSendStatusDeferral\n });\n }, error => {\n messageSendDeferral.reject(`Error formatting the message. ${error}`);\n });\n return messageSendStatusDeferral.promise;\n }\n read() {\n if (this.privConnectionState !== Exports_js_1.ConnectionState.Connected) {\n return Promise.reject(`Cannot read on connection that is in ${this.privConnectionState} state`);\n }\n return this.privReceivingMessageQueue.dequeue();\n }\n close(reason) {\n if (this.privWebsocketClient) {\n if (this.privConnectionState !== Exports_js_1.ConnectionState.Disconnected) {\n this.privWebsocketClient.close(1000, reason ? reason : \"Normal closure by client\");\n }\n } else {\n return Promise.resolve();\n }\n return this.privDisconnectDeferral.promise;\n }\n get events() {\n return this.privConnectionEvents;\n }\n sendRawMessage(sendItem) {\n try {\n // indicates we are draining the queue and it came with no message;\n if (!sendItem) {\n return Promise.resolve();\n }\n this.onEvent(new Exports_js_1.ConnectionMessageSentEvent(this.privConnectionId, new Date().toISOString(), sendItem.Message));\n // add a check for the ws readystate in order to stop the red console error 'WebSocket is already in CLOSING or CLOSED state' appearing\n if (this.isWebsocketOpen) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.privWebsocketClient.send(sendItem.RawWebsocketMessage.payload);\n } else {\n return Promise.reject(\"websocket send error: Websocket not ready \" + this.privConnectionId + \" \" + sendItem.Message.id + \" \" + new Error().stack);\n }\n return Promise.resolve();\n } catch (e) {\n return Promise.reject(`websocket send error: ${e}`);\n }\n }\n onClose(code, reason) {\n var _this = this;\n return _asyncToGenerator(function* () {\n const closeReason = `Connection closed. ${code}: ${reason}`;\n _this.privConnectionState = Exports_js_1.ConnectionState.Disconnected;\n _this.privDisconnectDeferral.resolve();\n yield _this.privReceivingMessageQueue.drainAndDispose(() => {\n // TODO: Events for these ?\n // Logger.instance.onEvent(new LoggingEvent(LogType.Warning, null, `Failed to process received message. Reason: ${closeReason}, Message: ${JSON.stringify(pendingReceiveItem)}`));\n }, closeReason);\n yield _this.privSendMessageQueue.drainAndDispose(pendingSendItem => {\n pendingSendItem.sendStatusDeferral.reject(closeReason);\n }, closeReason);\n })();\n }\n processSendQueue() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n while (true) {\n const itemToSend = _this2.privSendMessageQueue.dequeue();\n const sendItem = yield itemToSend;\n // indicates we are draining the queue and it came with no message;\n if (!sendItem) {\n return;\n }\n try {\n yield _this2.sendRawMessage(sendItem);\n sendItem.sendStatusDeferral.resolve();\n } catch (sendError) {\n sendItem.sendStatusDeferral.reject(sendError);\n }\n }\n })();\n }\n onEvent(event) {\n this.privConnectionEvents.onEvent(event);\n Exports_js_1.Events.instance.onEvent(event);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getAgent() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const agent = new agent_base_1.default.Agent(this.createConnection);\n if (this.proxyInfo !== undefined && this.proxyInfo.HostName !== undefined && this.proxyInfo.Port > 0) {\n agent.proxyInfo = this.proxyInfo;\n }\n return agent;\n }\n static GetProxyAgent(proxyInfo) {\n const httpProxyOptions = {\n host: proxyInfo.HostName,\n port: proxyInfo.Port\n };\n if (!!proxyInfo.UserName) {\n httpProxyOptions.headers = {\n \"Proxy-Authentication\": \"Basic \" + new Buffer(`${proxyInfo.UserName}:${proxyInfo.Password === undefined ? \"\" : proxyInfo.Password}`).toString(\"base64\")\n };\n } else {\n httpProxyOptions.headers = {};\n }\n httpProxyOptions.headers.requestOCSP = \"true\";\n const httpProxyAgent = new https_proxy_agent_1.default(httpProxyOptions);\n return httpProxyAgent;\n }\n createConnection(request, options) {\n let socketPromise;\n options = {\n ...options,\n ...{\n requestOCSP: true,\n servername: options.host\n }\n };\n if (!!this.proxyInfo) {\n const httpProxyAgent = WebsocketMessageAdapter.GetProxyAgent(this.proxyInfo);\n const baseAgent = httpProxyAgent;\n socketPromise = new Promise((resolve, reject) => {\n baseAgent.callback(request, options, (error, socket) => {\n if (!!error) {\n reject(error);\n } else {\n resolve(socket);\n }\n });\n });\n } else {\n if (!!options.secureEndpoint) {\n socketPromise = Promise.resolve(tls.connect(options));\n } else {\n socketPromise = Promise.resolve(net.connect(options));\n }\n }\n return socketPromise;\n }\n get isWebsocketOpen() {\n return this.privWebsocketClient && this.privWebsocketClient.readyState === this.privWebsocketClient.OPEN;\n }\n}\nexports.WebsocketMessageAdapter = WebsocketMessageAdapter;\nWebsocketMessageAdapter.forceNpmWebSocket = false;","map":{"version":3,"names":["_asyncToGenerator","require","default","__createBinding","Object","create","o","m","k","k2","undefined","defineProperty","enumerable","get","__setModuleDefault","v","value","__importStar","mod","__esModule","result","hasOwnProperty","call","__importDefault","exports","WebsocketMessageAdapter","net","tls","agent_base_1","https_proxy_agent_1","ws_1","HeaderNames_js_1","Exports_js_1","constructor","uri","connectionId","messageFormatter","proxyInfo","headers","enableCompression","ArgumentNullError","privConnectionEvents","EventSource","privConnectionId","privMessageFormatter","privConnectionState","ConnectionState","None","privUri","privHeaders","privEnableCompression","HeaderNames","ConnectionId","privLastErrorReceived","state","open","Disconnected","Promise","reject","privConnectionEstablishDeferral","promise","Deferred","privCertificateValidatedDeferral","Connecting","WebSocket","forceNpmWebSocket","resolve","privWebsocketClient","_protocol","_protocol2","options","perMessageDeflate","agent","getAgent","URL","protocol","toLocaleLowerCase","binaryType","privReceivingMessageQueue","Queue","privDisconnectDeferral","privSendMessageQueue","processSendQueue","catch","reason","Events","instance","onEvent","BackgroundEvent","error","ConnectionOpenResponse","ConnectionStartEvent","onopen","then","Connected","ConnectionEstablishedEvent","onerror","e","ConnectionErrorEvent","message","type","onclose","code","ConnectionClosedEvent","onClose","onmessage","networkReceivedTime","Date","toISOString","deferred","enqueueFromPromise","data","ArrayBuffer","rawMessage","RawWebsocketMessage","MessageType","Binary","toConnectionMessage","connectionMessage","ConnectionMessageReceivedEvent","Text","send","messageSendStatusDeferral","messageSendDeferral","fromConnectionMessage","Message","sendStatusDeferral","read","dequeue","close","events","sendRawMessage","sendItem","ConnectionMessageSentEvent","isWebsocketOpen","payload","id","Error","stack","_this","closeReason","drainAndDispose","pendingSendItem","_this2","itemToSend","sendError","event","Agent","createConnection","HostName","Port","GetProxyAgent","httpProxyOptions","host","port","UserName","Buffer","Password","toString","requestOCSP","httpProxyAgent","request","socketPromise","servername","baseAgent","callback","socket","secureEndpoint","connect","readyState","OPEN"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/WebsocketMessageAdapter.js"],"sourcesContent":["\"use strict\";\n// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebsocketMessageAdapter = void 0;\nconst net = __importStar(require(\"net\"));\nconst tls = __importStar(require(\"tls\"));\nconst agent_base_1 = __importDefault(require(\"agent-base\"));\nconst https_proxy_agent_1 = __importDefault(require(\"https-proxy-agent\"));\nconst ws_1 = __importDefault(require(\"ws\"));\nconst HeaderNames_js_1 = require(\"../common.speech/HeaderNames.js\");\nconst Exports_js_1 = require(\"../common/Exports.js\");\nclass WebsocketMessageAdapter {\n constructor(uri, connectionId, messageFormatter, proxyInfo, headers, enableCompression) {\n if (!uri) {\n throw new Exports_js_1.ArgumentNullError(\"uri\");\n }\n if (!messageFormatter) {\n throw new Exports_js_1.ArgumentNullError(\"messageFormatter\");\n }\n this.proxyInfo = proxyInfo;\n this.privConnectionEvents = new Exports_js_1.EventSource();\n this.privConnectionId = connectionId;\n this.privMessageFormatter = messageFormatter;\n this.privConnectionState = Exports_js_1.ConnectionState.None;\n this.privUri = uri;\n this.privHeaders = headers;\n this.privEnableCompression = enableCompression;\n // Add the connection ID to the headers\n this.privHeaders[HeaderNames_js_1.HeaderNames.ConnectionId] = this.privConnectionId;\n this.privLastErrorReceived = \"\";\n }\n get state() {\n return this.privConnectionState;\n }\n open() {\n if (this.privConnectionState === Exports_js_1.ConnectionState.Disconnected) {\n return Promise.reject(`Cannot open a connection that is in ${this.privConnectionState} state`);\n }\n if (this.privConnectionEstablishDeferral) {\n return this.privConnectionEstablishDeferral.promise;\n }\n this.privConnectionEstablishDeferral = new Exports_js_1.Deferred();\n this.privCertificateValidatedDeferral = new Exports_js_1.Deferred();\n this.privConnectionState = Exports_js_1.ConnectionState.Connecting;\n try {\n if (typeof WebSocket !== \"undefined\" && !WebsocketMessageAdapter.forceNpmWebSocket) {\n // Browser handles cert checks.\n this.privCertificateValidatedDeferral.resolve();\n this.privWebsocketClient = new WebSocket(this.privUri);\n }\n else {\n const options = { headers: this.privHeaders, perMessageDeflate: this.privEnableCompression };\n // The ocsp library will handle validation for us and fail the connection if needed.\n this.privCertificateValidatedDeferral.resolve();\n options.agent = this.getAgent();\n // Workaround for https://github.com/microsoft/cognitive-services-speech-sdk-js/issues/465\n // Which is root caused by https://github.com/TooTallNate/node-agent-base/issues/61\n const uri = new URL(this.privUri);\n let protocol = uri.protocol;\n if (protocol?.toLocaleLowerCase() === \"wss:\") {\n protocol = \"https:\";\n }\n else if (protocol?.toLocaleLowerCase() === \"ws:\") {\n protocol = \"http:\";\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n options.agent.protocol = protocol;\n this.privWebsocketClient = new ws_1.default(this.privUri, options);\n }\n this.privWebsocketClient.binaryType = \"arraybuffer\";\n this.privReceivingMessageQueue = new Exports_js_1.Queue();\n this.privDisconnectDeferral = new Exports_js_1.Deferred();\n this.privSendMessageQueue = new Exports_js_1.Queue();\n this.processSendQueue().catch((reason) => {\n Exports_js_1.Events.instance.onEvent(new Exports_js_1.BackgroundEvent(reason));\n });\n }\n catch (error) {\n this.privConnectionEstablishDeferral.resolve(new Exports_js_1.ConnectionOpenResponse(500, error));\n return this.privConnectionEstablishDeferral.promise;\n }\n this.onEvent(new Exports_js_1.ConnectionStartEvent(this.privConnectionId, this.privUri));\n this.privWebsocketClient.onopen = () => {\n this.privCertificateValidatedDeferral.promise.then(() => {\n this.privConnectionState = Exports_js_1.ConnectionState.Connected;\n this.onEvent(new Exports_js_1.ConnectionEstablishedEvent(this.privConnectionId));\n this.privConnectionEstablishDeferral.resolve(new Exports_js_1.ConnectionOpenResponse(200, \"\"));\n }, (error) => {\n this.privConnectionEstablishDeferral.reject(error);\n });\n };\n this.privWebsocketClient.onerror = (e) => {\n this.onEvent(new Exports_js_1.ConnectionErrorEvent(this.privConnectionId, e.message, e.type));\n this.privLastErrorReceived = e.message;\n };\n this.privWebsocketClient.onclose = (e) => {\n if (this.privConnectionState === Exports_js_1.ConnectionState.Connecting) {\n this.privConnectionState = Exports_js_1.ConnectionState.Disconnected;\n // this.onEvent(new ConnectionEstablishErrorEvent(this.connectionId, e.code, e.reason));\n this.privConnectionEstablishDeferral.resolve(new Exports_js_1.ConnectionOpenResponse(e.code, e.reason + \" \" + this.privLastErrorReceived));\n }\n else {\n this.privConnectionState = Exports_js_1.ConnectionState.Disconnected;\n this.privWebsocketClient = null;\n this.onEvent(new Exports_js_1.ConnectionClosedEvent(this.privConnectionId, e.code, e.reason));\n }\n this.onClose(e.code, e.reason).catch((reason) => {\n Exports_js_1.Events.instance.onEvent(new Exports_js_1.BackgroundEvent(reason));\n });\n };\n this.privWebsocketClient.onmessage = (e) => {\n const networkReceivedTime = new Date().toISOString();\n if (this.privConnectionState === Exports_js_1.ConnectionState.Connected) {\n const deferred = new Exports_js_1.Deferred();\n // let id = ++this.idCounter;\n this.privReceivingMessageQueue.enqueueFromPromise(deferred.promise);\n if (e.data instanceof ArrayBuffer) {\n const rawMessage = new Exports_js_1.RawWebsocketMessage(Exports_js_1.MessageType.Binary, e.data);\n this.privMessageFormatter\n .toConnectionMessage(rawMessage)\n .then((connectionMessage) => {\n this.onEvent(new Exports_js_1.ConnectionMessageReceivedEvent(this.privConnectionId, networkReceivedTime, connectionMessage));\n deferred.resolve(connectionMessage);\n }, (error) => {\n // TODO: Events for these ?\n deferred.reject(`Invalid binary message format. Error: ${error}`);\n });\n }\n else {\n const rawMessage = new Exports_js_1.RawWebsocketMessage(Exports_js_1.MessageType.Text, e.data);\n this.privMessageFormatter\n .toConnectionMessage(rawMessage)\n .then((connectionMessage) => {\n this.onEvent(new Exports_js_1.ConnectionMessageReceivedEvent(this.privConnectionId, networkReceivedTime, connectionMessage));\n deferred.resolve(connectionMessage);\n }, (error) => {\n // TODO: Events for these ?\n deferred.reject(`Invalid text message format. Error: ${error}`);\n });\n }\n }\n };\n return this.privConnectionEstablishDeferral.promise;\n }\n send(message) {\n if (this.privConnectionState !== Exports_js_1.ConnectionState.Connected) {\n return Promise.reject(`Cannot send on connection that is in ${Exports_js_1.ConnectionState[this.privConnectionState]} state`);\n }\n const messageSendStatusDeferral = new Exports_js_1.Deferred();\n const messageSendDeferral = new Exports_js_1.Deferred();\n this.privSendMessageQueue.enqueueFromPromise(messageSendDeferral.promise);\n this.privMessageFormatter\n .fromConnectionMessage(message)\n .then((rawMessage) => {\n messageSendDeferral.resolve({\n Message: message,\n RawWebsocketMessage: rawMessage,\n sendStatusDeferral: messageSendStatusDeferral,\n });\n }, (error) => {\n messageSendDeferral.reject(`Error formatting the message. ${error}`);\n });\n return messageSendStatusDeferral.promise;\n }\n read() {\n if (this.privConnectionState !== Exports_js_1.ConnectionState.Connected) {\n return Promise.reject(`Cannot read on connection that is in ${this.privConnectionState} state`);\n }\n return this.privReceivingMessageQueue.dequeue();\n }\n close(reason) {\n if (this.privWebsocketClient) {\n if (this.privConnectionState !== Exports_js_1.ConnectionState.Disconnected) {\n this.privWebsocketClient.close(1000, reason ? reason : \"Normal closure by client\");\n }\n }\n else {\n return Promise.resolve();\n }\n return this.privDisconnectDeferral.promise;\n }\n get events() {\n return this.privConnectionEvents;\n }\n sendRawMessage(sendItem) {\n try {\n // indicates we are draining the queue and it came with no message;\n if (!sendItem) {\n return Promise.resolve();\n }\n this.onEvent(new Exports_js_1.ConnectionMessageSentEvent(this.privConnectionId, new Date().toISOString(), sendItem.Message));\n // add a check for the ws readystate in order to stop the red console error 'WebSocket is already in CLOSING or CLOSED state' appearing\n if (this.isWebsocketOpen) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.privWebsocketClient.send(sendItem.RawWebsocketMessage.payload);\n }\n else {\n return Promise.reject(\"websocket send error: Websocket not ready \" + this.privConnectionId + \" \" + sendItem.Message.id + \" \" + new Error().stack);\n }\n return Promise.resolve();\n }\n catch (e) {\n return Promise.reject(`websocket send error: ${e}`);\n }\n }\n async onClose(code, reason) {\n const closeReason = `Connection closed. ${code}: ${reason}`;\n this.privConnectionState = Exports_js_1.ConnectionState.Disconnected;\n this.privDisconnectDeferral.resolve();\n await this.privReceivingMessageQueue.drainAndDispose(() => {\n // TODO: Events for these ?\n // Logger.instance.onEvent(new LoggingEvent(LogType.Warning, null, `Failed to process received message. Reason: ${closeReason}, Message: ${JSON.stringify(pendingReceiveItem)}`));\n }, closeReason);\n await this.privSendMessageQueue.drainAndDispose((pendingSendItem) => {\n pendingSendItem.sendStatusDeferral.reject(closeReason);\n }, closeReason);\n }\n async processSendQueue() {\n while (true) {\n const itemToSend = this.privSendMessageQueue.dequeue();\n const sendItem = await itemToSend;\n // indicates we are draining the queue and it came with no message;\n if (!sendItem) {\n return;\n }\n try {\n await this.sendRawMessage(sendItem);\n sendItem.sendStatusDeferral.resolve();\n }\n catch (sendError) {\n sendItem.sendStatusDeferral.reject(sendError);\n }\n }\n }\n onEvent(event) {\n this.privConnectionEvents.onEvent(event);\n Exports_js_1.Events.instance.onEvent(event);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getAgent() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const agent = new agent_base_1.default.Agent(this.createConnection);\n if (this.proxyInfo !== undefined &&\n this.proxyInfo.HostName !== undefined &&\n this.proxyInfo.Port > 0) {\n agent.proxyInfo = this.proxyInfo;\n }\n return agent;\n }\n static GetProxyAgent(proxyInfo) {\n const httpProxyOptions = {\n host: proxyInfo.HostName,\n port: proxyInfo.Port,\n };\n if (!!proxyInfo.UserName) {\n httpProxyOptions.headers = {\n \"Proxy-Authentication\": \"Basic \" + new Buffer(`${proxyInfo.UserName}:${(proxyInfo.Password === undefined) ? \"\" : proxyInfo.Password}`).toString(\"base64\"),\n };\n }\n else {\n httpProxyOptions.headers = {};\n }\n httpProxyOptions.headers.requestOCSP = \"true\";\n const httpProxyAgent = new https_proxy_agent_1.default(httpProxyOptions);\n return httpProxyAgent;\n }\n createConnection(request, options) {\n let socketPromise;\n options = {\n ...options,\n ...{\n requestOCSP: true,\n servername: options.host\n }\n };\n if (!!this.proxyInfo) {\n const httpProxyAgent = WebsocketMessageAdapter.GetProxyAgent(this.proxyInfo);\n const baseAgent = httpProxyAgent;\n socketPromise = new Promise((resolve, reject) => {\n baseAgent.callback(request, options, (error, socket) => {\n if (!!error) {\n reject(error);\n }\n else {\n resolve(socket);\n }\n });\n });\n }\n else {\n if (!!options.secureEndpoint) {\n socketPromise = Promise.resolve(tls.connect(options));\n }\n else {\n socketPromise = Promise.resolve(net.connect(options));\n }\n }\n return socketPromise;\n }\n get isWebsocketOpen() {\n return this.privWebsocketClient && this.privWebsocketClient.readyState === this.privWebsocketClient.OPEN;\n }\n}\nexports.WebsocketMessageAdapter = WebsocketMessageAdapter;\nWebsocketMessageAdapter.forceNpmWebSocket = false;\n\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}
|