{"version":3,"file":"dcjspage_LandingPage.js","mappings":"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","sources":["webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/HeaderNames.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/HttpClient.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/ITransport.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/AbortController.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","webpack://driverscloud/./node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js","webpack://driverscloud/./Views/Shared/configuration.ts","webpack://driverscloud/./Views/Shared/landingpage.ts","webpack://driverscloud/./Views/startdetection/index.ts","webpack://driverscloud/./Scripts/js/pages/dcjspage_LandingPage-exposed.ts","webpack://driverscloud/./Views/Shared/configuration-exposed.ts","webpack://driverscloud/./Views/Shared/landingpage-exposed.ts","webpack://driverscloud/./Views/startdetection/index-exposed.ts"],"sourcesContent":["// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n/** @private */\r\nexport class DefaultReconnectPolicy {\r\n constructor(retryDelays) {\r\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n nextRetryDelayInMilliseconds(retryContext) {\r\n return this._retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n//# sourceMappingURL=DefaultReconnectPolicy.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nexport class HeaderNames {\r\n}\r\nHeaderNames.Authorization = \"Authorization\";\r\nHeaderNames.Cookie = \"Cookie\";\r\n//# sourceMappingURL=HeaderNames.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Represents an HTTP response. */\r\nexport class HttpResponse {\r\n constructor(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n}\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nexport class HttpClient {\r\n get(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n post(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n delete(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n getCookieString(url) {\r\n return \"\";\r\n }\r\n}\r\n//# sourceMappingURL=HttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient } from \"./HttpClient\";\r\n/** @private */\r\nexport class AccessTokenHttpClient extends HttpClient {\r\n constructor(innerClient, accessTokenFactory) {\r\n super();\r\n this._innerClient = innerClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n }\r\n async send(request) {\r\n let allowRetry = true;\r\n if (this._accessTokenFactory && (!this._accessToken || (request.url && request.url.indexOf(\"/negotiate?\") > 0))) {\r\n // don't retry if the request is a negotiate or if we just got a potentially new token from the access token factory\r\n allowRetry = false;\r\n this._accessToken = await this._accessTokenFactory();\r\n }\r\n this._setAuthorizationHeader(request);\r\n const response = await this._innerClient.send(request);\r\n if (allowRetry && response.statusCode === 401 && this._accessTokenFactory) {\r\n this._accessToken = await this._accessTokenFactory();\r\n this._setAuthorizationHeader(request);\r\n return await this._innerClient.send(request);\r\n }\r\n return response;\r\n }\r\n _setAuthorizationHeader(request) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (this._accessToken) {\r\n request.headers[HeaderNames.Authorization] = `Bearer ${this._accessToken}`;\r\n }\r\n // don't remove the header if there isn't an access token factory, the user manually added the header in this case\r\n else if (this._accessTokenFactory) {\r\n if (request.headers[HeaderNames.Authorization]) {\r\n delete request.headers[HeaderNames.Authorization];\r\n }\r\n }\r\n }\r\n getCookieString(url) {\r\n return this._innerClient.getCookieString(url);\r\n }\r\n}\r\n//# sourceMappingURL=AccessTokenHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Platform, getGlobalThis, isArrayBuffer } from \"./Utils\";\r\nexport class FetchHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n // Node added a fetch implementation to the global scope starting in v18.\r\n // We need to add a cookie jar in node to be able to share cookies with WebSocket\r\n if (typeof fetch === \"undefined\" || Platform.isNode) {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n this._jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n if (typeof fetch === \"undefined\") {\r\n this._fetchType = requireFunc(\"node-fetch\");\r\n }\r\n else {\r\n // Use fetch from Node if available\r\n this._fetchType = fetch;\r\n }\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n this._fetchType = requireFunc(\"fetch-cookie\")(this._fetchType, this._jar);\r\n }\r\n else {\r\n this._fetchType = fetch.bind(getGlobalThis());\r\n }\r\n if (typeof AbortController === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n this._abortControllerType = requireFunc(\"abort-controller\");\r\n }\r\n else {\r\n this._abortControllerType = AbortController;\r\n }\r\n }\r\n /** @inheritDoc */\r\n async send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n const abortController = new this._abortControllerType();\r\n let error;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n request.headers = request.headers || {};\r\n if (isArrayBuffer(request.content)) {\r\n request.headers[\"Content-Type\"] = \"application/octet-stream\";\r\n }\r\n else {\r\n request.headers[\"Content-Type\"] = \"text/plain;charset=UTF-8\";\r\n }\r\n }\r\n let response;\r\n try {\r\n response = await this._fetchType(request.url, {\r\n body: request.content,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method,\r\n mode: \"cors\",\r\n redirect: \"follow\",\r\n signal: abortController.signal,\r\n });\r\n }\r\n catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${e}.`);\r\n throw e;\r\n }\r\n finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n if (!response.ok) {\r\n const errorMessage = await deserializeContent(response, \"text\");\r\n throw new HttpError(errorMessage || response.statusText, response.status);\r\n }\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n return new HttpResponse(response.status, response.statusText, payload);\r\n }\r\n getCookieString(url) {\r\n let cookies = \"\";\r\n if (Platform.isNode && this._jar) {\r\n // @ts-ignore: unused variable\r\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\nfunction deserializeContent(response, responseType) {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n return content;\r\n}\r\n//# sourceMappingURL=FetchHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\nexport class XhrHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n if (isArrayBuffer(request.content)) {\r\n xhr.setRequestHeader(\"Content-Type\", \"application/octet-stream\");\r\n }\r\n else {\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n }\r\n }\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = () => {\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = () => {\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content);\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=XhrHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nexport class DefaultHttpClient extends HttpClient {\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n constructor(logger) {\r\n super();\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this._httpClient = new FetchHttpClient(logger);\r\n }\r\n else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this._httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this._httpClient.send(request);\r\n }\r\n getCookieString(url) {\r\n return this._httpClient.getCookieString(url);\r\n }\r\n}\r\n//# sourceMappingURL=DefaultHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n//# sourceMappingURL=ITransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nexport class AbortController {\r\n constructor() {\r\n this._isAborted = false;\r\n this.onabort = null;\r\n }\r\n abort() {\r\n if (!this._isAborted) {\r\n this._isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n get signal() {\r\n return this;\r\n }\r\n get aborted() {\r\n return this._isAborted;\r\n }\r\n}\r\n//# sourceMappingURL=AbortController.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nexport class LongPollingTransport {\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get pollAborted() {\r\n return this._pollAbort.aborted;\r\n }\r\n constructor(httpClient, logger, options) {\r\n this._httpClient = httpClient;\r\n this._logger = logger;\r\n this._pollAbort = new AbortController();\r\n this._options = options;\r\n this._running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._url = url;\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this._options.headers };\r\n const pollOptions = {\r\n abortSignal: this._pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n this._running = true;\r\n }\r\n this._receiving = this._poll(this._url, pollOptions);\r\n }\r\n async _poll(url, pollOptions) {\r\n try {\r\n while (this._running) {\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode === 204) {\r\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this._running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Unexpected status code\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n if (!this._running) {\r\n // Log but disregard errors that occur after stopping\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\r\n }\r\n else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this._closeError = e;\r\n this._running = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this._raiseOnClose();\r\n }\r\n }\r\n }\r\n async send(data) {\r\n if (!this._running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url, data, this._options);\r\n }\r\n async stop() {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this._running = false;\r\n this._pollAbort.abort();\r\n try {\r\n await this._receiving;\r\n // Send DELETE to clean up long polling on the server\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const deleteOptions = {\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n let error;\r\n try {\r\n await this._httpClient.delete(this._url, deleteOptions);\r\n }\r\n catch (err) {\r\n error = err;\r\n }\r\n if (error) {\r\n if (error instanceof HttpError) {\r\n if (error.statusCode === 404) {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) A 404 response was returned from sending a DELETE request.\");\r\n }\r\n else {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Error sending a DELETE request: ${error}`);\r\n }\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request accepted.\");\r\n }\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this._raiseOnClose();\r\n }\r\n }\r\n _raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this._closeError) {\r\n logMessage += \" Error: \" + this._closeError;\r\n }\r\n this._logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this._closeError);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=LongPollingTransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\n/** @private */\r\nexport class ServerSentEventsTransport {\r\n constructor(httpClient, accessToken, logger, options) {\r\n this._httpClient = httpClient;\r\n this._accessToken = accessToken;\r\n this._logger = logger;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this._url is only for send and we set the auth header instead of the query string for send\r\n this._url = url;\r\n if (this._accessToken) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(this._accessToken)}`;\r\n }\r\n return new Promise((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n let eventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this._httpClient.getCookieString(url);\r\n const headers = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials, headers: { ...headers, ...this._options.headers } });\r\n }\r\n try {\r\n eventSource.onmessage = (e) => {\r\n if (this.onreceive) {\r\n try {\r\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent)}.`);\r\n this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n // @ts-ignore: not using event on purpose\r\n eventSource.onerror = (e) => {\r\n // EventSource doesn't give any useful information about server side closes.\r\n if (opened) {\r\n this._close();\r\n }\r\n else {\r\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\"\r\n + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\"));\r\n }\r\n };\r\n eventSource.onopen = () => {\r\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\r\n this._eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n async send(data) {\r\n if (!this._eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url, data, this._options);\r\n }\r\n stop() {\r\n this._close();\r\n return Promise.resolve();\r\n }\r\n _close(e) {\r\n if (this._eventSource) {\r\n this._eventSource.close();\r\n this._eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=ServerSentEventsTransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n/** @private */\r\nexport class WebSocketTransport {\r\n constructor(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {\r\n this._logger = logger;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logMessageContent = logMessageContent;\r\n this._webSocketConstructor = webSocketConstructor;\r\n this._httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this._headers = headers;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n let token;\r\n if (this._accessTokenFactory) {\r\n token = await this._accessTokenFactory();\r\n }\r\n return new Promise((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket;\r\n const cookies = this._httpClient.getCookieString(url);\r\n let opened = false;\r\n if (Platform.isNode || Platform.isReactNative) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n if (token) {\r\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n }\r\n if (cookies) {\r\n headers[HeaderNames.Cookie] = cookies;\r\n }\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this._webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this._headers },\r\n });\r\n }\r\n else {\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this._webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n webSocket.onopen = (_event) => {\r\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this._webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n webSocket.onerror = (event) => {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"There was an error with the transport\";\r\n }\r\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\r\n };\r\n webSocket.onmessage = (message) => {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n webSocket.onclose = (event) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this._close(event);\r\n }\r\n else {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"WebSocket failed to connect. The connection could not be found on the server,\"\r\n + \" either the endpoint may not be a SignalR endpoint,\"\r\n + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\";\r\n }\r\n reject(new Error(error));\r\n }\r\n };\r\n });\r\n }\r\n send(data) {\r\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\r\n this._webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n stop() {\r\n if (this._webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this._close(undefined);\r\n }\r\n return Promise.resolve();\r\n }\r\n _close(event) {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this._webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this._webSocket.onclose = () => { };\r\n this._webSocket.onmessage = () => { };\r\n this._webSocket.onerror = () => { };\r\n this._webSocket.close();\r\n this._webSocket = undefined;\r\n }\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\r\n }\r\n else if (event instanceof Error) {\r\n this.onclose(event);\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n _isCloseEvent(event) {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n//# sourceMappingURL=WebSocketTransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AccessTokenHttpClient } from \"./AccessTokenHttpClient\";\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError, AbortError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nconst MAX_REDIRECTS = 100;\r\n/** @private */\r\nexport class HttpConnection {\r\n constructor(url, options = {}) {\r\n this._stopPromiseResolver = () => { };\r\n this.features = {};\r\n this._negotiateVersion = 1;\r\n Arg.isRequired(url, \"url\");\r\n this._logger = createLogger(options.logger);\r\n this.baseUrl = this._resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n }\r\n else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\r\n let webSocketModule = null;\r\n let eventSourceModule = null;\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n this._httpClient = new AccessTokenHttpClient(options.httpClient || new DefaultHttpClient(this._logger), options.accessTokenFactory);\r\n this._connectionState = \"Disconnected\" /* ConnectionState.Disconnected */;\r\n this._connectionStarted = false;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async start(transferFormat) {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n if (this._connectionState !== \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = \"Connecting\" /* ConnectionState.Connecting */;\r\n this._startInternalPromise = this._startInternal(transferFormat);\r\n await this._startInternalPromise;\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this._logger.log(LogLevel.Error, message);\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this._stopPromise;\r\n return Promise.reject(new AbortError(message));\r\n }\r\n else if (this._connectionState !== \"Connected\" /* ConnectionState.Connected */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this._logger.log(LogLevel.Error, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n this._connectionStarted = true;\r\n }\r\n send(data) {\r\n if (this._connectionState !== \"Connected\" /* ConnectionState.Connected */) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n if (!this._sendQueue) {\r\n this._sendQueue = new TransportSendQueue(this.transport);\r\n }\r\n // Transport will not be null if state is connected\r\n return this._sendQueue.send(data);\r\n }\r\n async stop(error) {\r\n if (this._connectionState === \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = \"Disconnecting\" /* ConnectionState.Disconnecting */;\r\n this._stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this._stopPromiseResolver = resolve;\r\n });\r\n // stopInternal should never throw so just observe it.\r\n await this._stopInternal(error);\r\n await this._stopPromise;\r\n }\r\n async _stopInternal(error) {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this._stopError = error;\r\n try {\r\n await this._startInternalPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this._stopConnection();\r\n }\r\n this.transport = undefined;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n async _startInternal(transferFormat) {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this._accessTokenFactory = this._options.accessTokenFactory;\r\n this._httpClient._accessTokenFactory = this._accessTokenFactory;\r\n try {\r\n if (this._options.skipNegotiation) {\r\n if (this._options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this._startTransport(url, transferFormat);\r\n }\r\n else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n }\r\n else {\r\n let negotiateResponse = null;\r\n let redirects = 0;\r\n do {\r\n negotiateResponse = await this._getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */ || this._connectionState === \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n throw new AbortError(\"The connection was stopped during negotiation.\");\r\n }\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this._accessTokenFactory = () => accessToken;\r\n // set the factory to undefined so the AccessTokenHttpClient won't retry with the same token, since we know it won't change until a connection restart\r\n this._httpClient._accessToken = accessToken;\r\n this._httpClient._accessTokenFactory = undefined;\r\n }\r\n redirects++;\r\n } while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\r\n }\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n if (this._connectionState === \"Connecting\" /* ConnectionState.Connecting */) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this._connectionState = \"Connected\" /* ConnectionState.Connected */;\r\n }\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this._connectionState = \"Disconnected\" /* ConnectionState.Disconnected */;\r\n this.transport = undefined;\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this._stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _getNegotiationResponse(url) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const negotiateUrl = this._resolveNegotiateUrl(url);\r\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this._httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n });\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n const negotiateResponse = JSON.parse(response.content);\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n if (negotiateResponse.useStatefulReconnect && this._options._useStatefulReconnect !== true) {\r\n return Promise.reject(new FailedToNegotiateWithServerError(\"Client didn't negotiate Stateful Reconnect but the server did.\"));\r\n }\r\n return negotiateResponse;\r\n }\r\n catch (e) {\r\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\r\n if (e instanceof HttpError) {\r\n if (e.statusCode === 404) {\r\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\r\n }\r\n }\r\n this._logger.log(LogLevel.Error, errorMessage);\r\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\r\n }\r\n }\r\n _createConnectUrl(url, connectionToken) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n async _createTransport(url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this._isITransport(requestedTransport)) {\r\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n const transportExceptions = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat, (negotiate === null || negotiate === void 0 ? void 0 : negotiate.useStatefulReconnect) === true);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed:`);\r\n transportExceptions.push(transportOrError);\r\n }\r\n else if (this._isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this._getNegotiationResponse(url);\r\n }\r\n catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n }\r\n catch (ex) {\r\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\r\n if (this._connectionState !== \"Connecting\" /* ConnectionState.Connecting */) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this._logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n }\r\n }\r\n }\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n _constructTransport(transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this._options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent, this._options.WebSocket, this._options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this._options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this._httpClient, this._httpClient._accessToken, this._logger, this._options);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this._httpClient, this._logger, this._options);\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n _startTransport(url, transferFormat) {\r\n this.transport.onreceive = this.onreceive;\r\n if (this.features.reconnect) {\r\n this.transport.onclose = async (e) => {\r\n let callStop = false;\r\n if (this.features.reconnect) {\r\n try {\r\n this.features.disconnected();\r\n await this.transport.connect(url, transferFormat);\r\n await this.features.resend();\r\n }\r\n catch {\r\n callStop = true;\r\n }\r\n }\r\n else {\r\n this._stopConnection(e);\r\n return;\r\n }\r\n if (callStop) {\r\n this._stopConnection(e);\r\n }\r\n };\r\n }\r\n else {\r\n this.transport.onclose = (e) => this._stopConnection(e);\r\n }\r\n return this.transport.connect(url, transferFormat);\r\n }\r\n _resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat, useStatefulReconnect) {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n }\r\n else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this._options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this._options.EventSource)) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n this.features.reconnect = transport === HttpTransportType.WebSockets ? useStatefulReconnect : undefined;\r\n return this._constructTransport(transport);\r\n }\r\n catch (ex) {\r\n return ex;\r\n }\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\r\n }\r\n }\r\n }\r\n _isITransport(transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n _stopConnection(error) {\r\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this._stopError || error;\r\n this._stopError = undefined;\r\n if (this._connectionState === \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n if (this._connectionState === \"Connecting\" /* ConnectionState.Connecting */) {\r\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this._stopPromiseResolver();\r\n }\r\n if (error) {\r\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n if (this._sendQueue) {\r\n this._sendQueue.stop().catch((e) => {\r\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this._sendQueue = undefined;\r\n }\r\n this.connectionId = undefined;\r\n this._connectionState = \"Disconnected\" /* ConnectionState.Disconnected */;\r\n if (this._connectionStarted) {\r\n this._connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n _resolveUrl(url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (!Platform.isBrowser) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n _resolveNegotiateUrl(url) {\r\n const negotiateUrl = new URL(url);\r\n if (negotiateUrl.pathname.endsWith('/')) {\r\n negotiateUrl.pathname += \"negotiate\";\r\n }\r\n else {\r\n negotiateUrl.pathname += \"/negotiate\";\r\n }\r\n const searchParams = new URLSearchParams(negotiateUrl.searchParams);\r\n if (!searchParams.has(\"negotiateVersion\")) {\r\n searchParams.append(\"negotiateVersion\", this._negotiateVersion.toString());\r\n }\r\n if (searchParams.has(\"useStatefulReconnect\")) {\r\n if (searchParams.get(\"useStatefulReconnect\") === \"true\") {\r\n this._options._useStatefulReconnect = true;\r\n }\r\n }\r\n else if (this._options._useStatefulReconnect === true) {\r\n searchParams.append(\"useStatefulReconnect\", \"true\");\r\n }\r\n negotiateUrl.search = searchParams.toString();\r\n return negotiateUrl.toString();\r\n }\r\n}\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n/** @private */\r\nexport class TransportSendQueue {\r\n constructor(_transport) {\r\n this._transport = _transport;\r\n this._buffer = [];\r\n this._executing = true;\r\n this._sendBufferedData = new PromiseSource();\r\n this._transportResult = new PromiseSource();\r\n this._sendLoopPromise = this._sendLoop();\r\n }\r\n send(data) {\r\n this._bufferData(data);\r\n if (!this._transportResult) {\r\n this._transportResult = new PromiseSource();\r\n }\r\n return this._transportResult.promise;\r\n }\r\n stop() {\r\n this._executing = false;\r\n this._sendBufferedData.resolve();\r\n return this._sendLoopPromise;\r\n }\r\n _bufferData(data) {\r\n if (this._buffer.length && typeof (this._buffer[0]) !== typeof (data)) {\r\n throw new Error(`Expected data to be of type ${typeof (this._buffer)} but was of type ${typeof (data)}`);\r\n }\r\n this._buffer.push(data);\r\n this._sendBufferedData.resolve();\r\n }\r\n async _sendLoop() {\r\n while (true) {\r\n await this._sendBufferedData.promise;\r\n if (!this._executing) {\r\n if (this._transportResult) {\r\n this._transportResult.reject(\"Connection stopped.\");\r\n }\r\n break;\r\n }\r\n this._sendBufferedData = new PromiseSource();\r\n const transportResult = this._transportResult;\r\n this._transportResult = undefined;\r\n const data = typeof (this._buffer[0]) === \"string\" ?\r\n this._buffer.join(\"\") :\r\n TransportSendQueue._concatBuffers(this._buffer);\r\n this._buffer.length = 0;\r\n try {\r\n await this._transport.send(data);\r\n transportResult.resolve();\r\n }\r\n catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n static _concatBuffers(arrayBuffers) {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n return result.buffer;\r\n }\r\n}\r\nclass PromiseSource {\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\r\n }\r\n resolve() {\r\n this._resolver();\r\n }\r\n reject(reason) {\r\n this._rejecter(reason);\r\n }\r\n}\r\n//# sourceMappingURL=HttpConnection.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nconst JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nexport class JsonHubProtocol {\r\n constructor() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 2;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this._isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this._isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this._isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n case MessageType.Ack:\r\n this._isAckMessage(parsedMessage);\r\n break;\r\n case MessageType.Sequence:\r\n this._isSequenceMessage(parsedMessage);\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n }\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n writeMessage(message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n _isInvocationMessage(message) {\r\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n _isStreamItemMessage(message) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n _isCompletionMessage(message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n _isAckMessage(message) {\r\n if (typeof message.sequenceId !== 'number') {\r\n throw new Error(\"Invalid SequenceId for Ack message.\");\r\n }\r\n }\r\n _isSequenceMessage(message) {\r\n if (typeof message.sequenceId !== 'number') {\r\n throw new Error(\"Invalid SequenceId for Sequence message.\");\r\n }\r\n }\r\n _assertNotEmptyString(value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=JsonHubProtocol.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\nconst LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\nfunction parseLogLevel(name) {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n }\r\n else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nexport class HubConnectionBuilder {\r\n configureLogging(logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n }\r\n withUrl(url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n }\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n withHubProtocol(protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n withAutomaticReconnect(retryDelaysOrReconnectPolicy) {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n }\r\n else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n }\r\n else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n return this;\r\n }\r\n /** Configures {@link @microsoft/signalr.HubConnection.serverTimeoutInMilliseconds} for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n withServerTimeout(milliseconds) {\r\n Arg.isRequired(milliseconds, \"milliseconds\");\r\n this._serverTimeoutInMilliseconds = milliseconds;\r\n return this;\r\n }\r\n /** Configures {@link @microsoft/signalr.HubConnection.keepAliveIntervalInMilliseconds} for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n withKeepAliveInterval(milliseconds) {\r\n Arg.isRequired(milliseconds, \"milliseconds\");\r\n this._keepAliveIntervalInMilliseconds = milliseconds;\r\n return this;\r\n }\r\n /** Enables and configures options for the Stateful Reconnect feature.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n withStatefulReconnect(options) {\r\n if (this.httpConnectionOptions === undefined) {\r\n this.httpConnectionOptions = {};\r\n }\r\n this.httpConnectionOptions._useStatefulReconnect = true;\r\n this._statefulReconnectBufferSize = options === null || options === void 0 ? void 0 : options.bufferSize;\r\n return this;\r\n }\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n build() {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy, this._serverTimeoutInMilliseconds, this._keepAliveIntervalInMilliseconds, this._statefulReconnectBufferSize);\r\n }\r\n}\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n//# sourceMappingURL=HubConnectionBuilder.js.map","import { defineComponent } from 'vue';\nimport axios, { AxiosResponse } from 'axios';\nimport * as bootstrap from \"bootstrap\";\n\nexport class dccore_configblobview {\n public idnum: number = 0;\n public idmember: number = 0;\n public hashid: string = \"\";\n public emp: number = 0;\n public idsession: string = \"\";\n public external: boolean = false;\n public hostname: string = \"\";\n public md5hostname: string = \"\";\n public ispublish: boolean = false;\n public datesnapshot!: Date;\n public first: boolean = false;\n}\n\nexport class dccoreview_monitorconf {\n public idnum: number = 0;\n public idmember: number = 0;\n public idsession: string | null = \"\";\n public hostname: string = \"\";\n public md5hostname: string = \"\";\n public expiration: Date | null = null;\n public datecreate: Date | null = null;\n public hashid: string = \"\";\n}\n\n\nexport class dccore_configseoview {\n public idconfiguser: number = 0;\n public page: number = 0;\n public keywords: string = \"\";\n }\n\nexport class GroupeConfigBlobView {\n public emp: number = 0;\n public blobs: dccore_configblobview[] = [];\n}\n\n\n\nexport class ConfigurationViewModel {\n public blobsmon: dccoreview_monitorconf[] = [];\n public blobs: GroupeConfigBlobView[] = [];\n public blobsseo: dccore_configseoview[] = [];\n public lastconfigicon: string = \"\";\n public lastconfigname: string = \"\";\n public lastconfigurl: string = \"\";\n}\ndeclare var g_initdesc: string;\ndeclare var g_landingpageid: number;\ndeclare var g_lancurrent: string;\n\nexport const MixinConfigurationModule = defineComponent({\n data() {\n return {\n blobsmon: [] as dccoreview_monitorconf[],\n blobs: [] as GroupeConfigBlobView[],\n blobsseo: [] as dccore_configseoview[],\n defaultconfigdesc: \"\",\n landingpageid: 0,\n lancurrent: \"\",\n lastconfigname: \"\",\n lastconfigurl:\" \",\n lastconfigicon:\"\"\n };\n },\n \n\n mounted() {\n this.defaultconfigdesc = g_initdesc;\n this.landingpageid = g_landingpageid;\n this.lancurrent = g_lancurrent;\n \n this.LoadConfig();\n if (this.landingpageid == 4)\n this.LoadConfigMon();\n \n },\n methods: {\n LoadConfig() {\n var url = \"/api/v1.0/configuration/GetListConfigurations?lancurrent=\"+this.lancurrent+\"&landingpageid=\" + this.landingpageid;\n var self = this;\n axios.get(url).then(function (response: AxiosResponse) {\n if (response !== null && response.data !== null) {\n self.blobs = response.data.blobs;\n self.blobsseo = response.data.blobsseo;\n self.lastconfigname = response.data.lastconfigname;\n self.lastconfigurl = response.data.lastconfigurl;\n self.lastconfigicon = response.data.lastconfigicon;\n self.ReloadTooltips();\n }\n });\n },\n LoadConfigMon() {\n var url = \"/api/v1.0/configuration/GetListConfigMon\";\n var self = this;\n axios.get(url).then(function (response: AxiosResponse) {\n if (response !== null && response.data !== null) {\n self.blobsmon = response.data.blobsmon;\n self.ReloadTooltips();\n }\n });\n },\n isTouchDevice() {\n return 'ontouchstart' in window || (window as any)['DocumentTouch'] && document instanceof (window as any)['DocumentTouch'];\n },\n ReloadTooltips() {\n $(\"[data-bs-toggle='tooltip']\").tooltip('hide');\n this.$nextTick(function () {\n if (!this.isTouchDevice()) {\n var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"tooltip\"]'))\n var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {\n return new bootstrap.Tooltip(tooltipTriggerEl)\n });\n }\n else\n $('[data-bs-toggle=\"tooltip\"]').removeAttr(\"title\");\n });\n },\n DCDeleteConfig(idconfiguser: number, machine: number, descconfirm: string) {\n let choice: boolean = confirm(descconfirm);\n if (!choice)\n return;\n let url: string = \"/api/v1.0/DetecterConfig/DeleteConfSnap?machine=\" + machine + \"&idconfiguser=\" + idconfiguser;\n let self = this;\n axios.delete(url).then(function (response: AxiosResponse) {\n if (response.data) {\n self.LoadConfig();\n }\n });\n },\n DeleteConfig(blob: dccore_configblobview,descconfirm:string) {\n this.DCDeleteConfig(blob.idnum, blob.emp, descconfirm);\n\n },\n GetDescSeo(id: number): string {\n for (let blob of this.blobsseo) {\n if (blob.idconfiguser == id)\n return blob.keywords;\n }\n return this.defaultconfigdesc;\n }\n }\n\n});","import axios, { AxiosResponse } from 'axios';\nimport DCApp from \"./../Shared/App.vue\";\nimport { MixinConfigurationModule} from \"./../Shared/configuration\";\nimport { MixinDetect } from \"./../startdetection/index\";\nimport * as Vue from 'vue';\nimport { VueSignalR } from './../../Scripts/js/signalrmonitoring.service';\nimport { HubConnectionBuilder } from '@microsoft/signalr';\nimport { createPinia } from 'pinia';\n\nexport class LandingPageComponent {\n public Init(initdesc: string,lancurrent:string,landingpageid:number) {\n ((window)).g_initdesc = initdesc;\n ((window)).g_landingpageid = landingpageid;\n ((window)).g_lancurrent = lancurrent;\n DCApp.mixins = [MixinDetect, MixinConfigurationModule];\n const app = Vue.createApp(DCApp);\n const pinia = createPinia();\n app.use(pinia);\n const connection = new HubConnectionBuilder().withUrl('/SignalRDriversCloud').build();\n app.use(VueSignalR, connection);\n app.mount('#rootpage');\n }\n}\n((window)).LandingPageComponent = function () { return new LandingPageComponent(); };","\nimport customProtocolCheck from \"custom-protocol-check\";\n\nimport { defineComponent } from 'vue';\nimport axios, { AxiosResponse } from 'axios';\nimport * as bootstrap from \"bootstrap\";\nimport DCApp from \"./../Shared/App.vue\";\nimport * as Vue from 'vue';\nimport vueinstallapp from './../Shared/vueinstallapp.vue';\nimport { createPinia } from 'pinia';\n\nexport class InstallButLinks {\n public name: string = \"\";\n public url: string = \"\";\n public description: string = \"\";\n}\n\nexport class ManualInstallButLinks {\n public NameAgent: string = \"\";\n public UrlAgent: string = \"\";\n public DescriptionAgent: string = \"\";\n public NameEdgeView: string = \"\";\n public UrlEdgeView: string = \"\";\n public DescriptionEdgeView: string = \"\";\n}\n\nexport class InstallAppApiViewModel {\n public installautobut: InstallButLinks | null = null;\n public m_configversionstr: string = \"\";\n public ManualInstall32: ManualInstallButLinks | null = null;\n public ManualInstall64: ManualInstallButLinks | null = null;\n}\n\nexport const MixinDetect = defineComponent({\n components: {\n vueinstallapp\n },\n data() {\n return {\n loadingstartdetect: false,\n installmode:false,\n dc_descpilotesreferer:null,\n viewappli: null as InstallAppApiViewModel | null\n };\n },\n mounted() {\n },\n methods: {\n DetectionModalLoad(url: string) {\n let self = this;\n axios.get(url).then(function (response: AxiosResponse) {\n if (response.data !== null) {\n self.installmode = true;\n self.viewappli = response.data;\n }\n });\n\n\n },\n\n DCInstallModelApplication(url: string) {\n\n this.DetectionModalLoad(url);\n let elt = document.getElementById('dc_installappdialog');\n if (elt !== null) {\n let modal = new bootstrap.Modal(elt, {});\n modal.show();\n }\n },\n\n StartDetect(lancurrent: string) {\n this.loadingstartdetect = true;\n customProtocolCheck(\n jQuery(\"#dc_start_detectbut\").attr(\"href\"),\n () => {\n this.DCInstallModelApplication(\"/api/v1/startdetection/InstallApp?lancurrent=\" + lancurrent);\n this.loadingstartdetect = false;\n },\n () => {\n this.loadingstartdetect = false;\n }\n );\n return false;\n },\n\n InstallApp(lancurrent:string) {\n this.DCInstallModelApplication(\"/api/v1/startdetection/InstallApp?lancurrent=\"+lancurrent);\n }\n }\n});\n\n\nexport class StartDetectionComponent {\n public Init() {\n DCApp.mixins = [MixinDetect];\n const app = Vue.createApp(DCApp);\n const pinia = createPinia();\n app.use(pinia);\n app.mount('#rootpage');\n }\n}\n((window)).StartDetectionComponent = function () { return new StartDetectionComponent(); };","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!../../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-3.use[1]!./dcjspage_LandingPage.ts\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../../node_modules/expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\n___EXPOSE_LOADER_GLOBAL_THIS___[\"global\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-3.use[1]!./configuration.ts\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../node_modules/expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\n___EXPOSE_LOADER_GLOBAL_THIS___[\"global\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-3.use[1]!./landingpage.ts\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../node_modules/expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\n___EXPOSE_LOADER_GLOBAL_THIS___[\"global\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!../../node_modules/esbuild-loader/dist/index.cjs??clonedRuleSet-3.use[1]!./index.ts\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../node_modules/expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\n___EXPOSE_LOADER_GLOBAL_THIS___[\"global\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n"],"names":["DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","DefaultReconnectPolicy","retryDelays","retryContext","HeaderNames","HttpResponse","statusCode","statusText","content","HttpClient","url","options","AccessTokenHttpClient","innerClient","accessTokenFactory","request","allowRetry","response","FetchHttpClient","logger","requireFunc","abortController","error","timeoutId","msTimeout","e","errorMessage","deserializeContent","payload","cookies","c","responseType","XhrHttpClient","resolve","reject","xhr","headers","header","DefaultHttpClient","HttpTransportType","TransferFormat","LongPollingTransport","httpClient","transferFormat","name","value","pollOptions","pollUrl","data","deleteOptions","err","logMessage","ServerSentEventsTransport","accessToken","opened","eventSource","WebSocketTransport","logMessageContent","webSocketConstructor","token","webSocket","_event","event","message","MAX_REDIRECTS","HttpConnection","webSocketModule","eventSourceModule","TransportSendQueue","negotiateResponse","redirects","negotiateUrl","connectionToken","requestedTransport","requestedTransferFormat","connectUrl","transportExceptions","transports","negotiate","endpoint","transportOrError","ex","transport","callStop","useStatefulReconnect","transportMatches","s","aTag","searchParams","actualTransport","_transport","PromiseSource","transportResult","arrayBuffers","totalLength","b","a","result","offset","item","reason","JSON_HUB_PROTOCOL_NAME","JsonHubProtocol","input","messages","TextMessageFormat","hubMessages","parsedMessage","LogLevelNameMapping","parseLogLevel","mapping","HubConnectionBuilder","logging","isLogger","logLevel","transportTypeOrOptions","protocol","retryDelaysOrReconnectPolicy","milliseconds","httpConnectionOptions","connection","HubConnection","dccore_configblobview","dccoreview_monitorconf","dccore_configseoview","GroupeConfigBlobView","ConfigurationViewModel","MixinConfigurationModule","self","tooltipTriggerList","tooltipList","tooltipTriggerEl","idconfiguser","machine","descconfirm","blob","id","LandingPageComponent","initdesc","lancurrent","landingpageid","app","pinia","InstallButLinks","ManualInstallButLinks","InstallAppApiViewModel","MixinDetect","elt","StartDetectionComponent","___EXPOSE_LOADER_IMPORT___","___EXPOSE_LOADER_GET_GLOBAL_THIS___","___EXPOSE_LOADER_GLOBAL_THIS___","module"],"sourceRoot":""}